目录
[一 elfk 日志分析系统简要概述](#一 elfk 日志分析系统简要概述)
[3,为什么要在logstash 前面加filebeat](#3,为什么要在logstash 前面加filebeat)
[3.1 为什么Logstash 要被换掉](#3.1 为什么Logstash 要被换掉)
[3.2 filebeat 结合 logstash 带来好处](#3.2 filebeat 结合 logstash 带来好处)
[二 实验模拟elfk](#二 实验模拟elfk)
[1, 实验环境](#1, 实验环境)
[2, 搭建elk 框架](#2, 搭建elk 框架)
[3, 在Filebeat节点 安装filebeat](#3, 在Filebeat节点 安装filebeat)
[3.1 安装filebeat](#3.1 安装filebeat)
[3.2 编辑filebeat 配置文件](#3.2 编辑filebeat 配置文件)
[3.3 启动 filebeat](#3.3 启动 filebeat)
[4, 在 Logstash 组件所在(99机器)节点上新建一个 Logstash 配置文件](#4, 在 Logstash 组件所在(99机器)节点上新建一个 Logstash 配置文件)
[4.1 手写子配置文件](#4.1 手写子配置文件)
[4.2 重新启动 logstash 并指定配置文件](#4.2 重新启动 logstash 并指定配置文件)
[5, 测试elfk 实验结果](#5, 测试elfk 实验结果)
[5.1 访问 es-head 页面](#5.1 访问 es-head 页面)
[5.2 访问 kibana 页面 添加索引](#5.2 访问 kibana 页面 添加索引)
[三 扩展排错思路](#三 扩展排错思路)
[我是客户机 怎么检测 服务器的某个端口开没开](#我是客户机 怎么检测 服务器的某个端口开没开)
[方法 1:使用命令行工具 Telnet](#方法 1:使用命令行工具 Telnet)
[方法 2:使用 nc (Netcat) 或 ncat](#方法 2:使用 nc (Netcat) 或 ncat)
一 elfk 日志分析系统简要概述
1,是什么
feilbeat + Logstash + Elasticsearch + Kibana模式
这是一种更加完善和灵活的架构,适合处理复杂的日志数据。 在这种模式下,filebeat (beats)负责收日志文件,并将其发送到Logstash进行处理。logstash可以对日志数据进行更多的过滤、转换和增强的操作,并将其发 送到Elasticsearch进行索引。kibana则可以用来查看和分析日志数据
2,架构图
3,为什么要在logstash 前面加filebeat
3.1 为什么Logstash 要被换掉
logstash 搜集数据再输出 但是logstash是java写的程序,会占用内存
Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进或是直接发给Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中行解析
3.2 filebeat 结合 logstash 带来好处
1)通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力
2)从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取
3)将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
4)使用条件数据流逻辑组成更复杂的处理管道
二 实验模拟elfk
1, 实验环境
Node1节点(2C/4G):node1/192.168.217.77 Elasticsearch Kibana
Node2节点(2C/4G):node2/192.168.217.88 Elasticsearch
Apache节点:apache/192.168.217.99 Logstash Apache
Filebeat节点:filebeat/192.168.217.66 Filebeat
2, 搭建elk 框架
具体步骤见 笔者上一篇博客,已经详尽备述。
3, 在Filebeat节点 安装filebeat
3.1 安装filebeat

3.2 编辑filebeat 配置文件


代码如下:
bash
------------filebeat.prospectors-------------------
- type: log #指定 log 类型,从日志文件中读取消息
enabled: true
paths:
- /var/log/messages #指定监控的日志文件
- /var/log/*.log
fields: #可以使用 fields 配置选项设置一些参数字段添加到 output 中
service_name: filebeat
log_type: log
service_id: 192.168.10.16
--------------Elasticsearch output-------------------
(全部注释掉)
----------------Logstash output---------------------
output.logstash:
hosts: ["192.168.217.99:5044"] #指定 logstash 的 IP 和端口
3.3 启动 filebeat
4, 在 Logstash 组件所在(99机器)节点上新建一个 Logstash 配置文件
4.1 手写子配置文件

代码如下:
加这个 stdout {
codec => rubydebug
}
意义 可以在logstash机器显示传输过程,更好判断,如果出现故障是哪个节点的原因
bash
cd /etc/logstash/conf.d
vim logstash.conf
input {
beats {
port => "5044"
}
}
output {
elasticsearch {
hosts => ["192.168.217.77:9200"]
index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
}
stdout {
codec => rubydebug
}
}
4.2 重新启动 logstash 并指定配置文件

5, 测试elfk 实验结果
5.1 访问 es-head 页面
可以看到多了 以filebeat- 时间 这个索引的日志,这写日志,就是先从filebeat, 再到logstash,再到es 机器,再通过es-head 友好显示

5.2 访问 kibana 页面 添加索引
浏览器访问 http://192.168.217.77:5601 登录 Kibana,单击"Create Index Pattern"按钮添加索引"filebeat-*",单击 "create" 按钮创建,单击 "Discover" 按钮可查看图表信息及日志信息。

三 扩展排错思路
我是客户机 怎么检测 服务器的某个端口开没开
方法 1:使用命令行工具 Telnet
如果您使用的客户机是运行 Windows 或类 Unix/Linux 系统,并且支持 Telnet 客户端(在某些现代操作系统中可能需要手动启用),可以使用 Telnet 命令进行端口检查。操作步骤如下:
Windows:
打开命令提示符(Windows 用户可以通过搜索栏输入 "cmd" 找到)或 PowerShell。
输入以下命令,替换
<server_ip>
为服务器的 IP 地址,<port_number>
为要检查的端口号:Cmd
1telnet <server_ip> <port_number>
例如:
Cmd
1telnet 192.168.1.100 80
Unix/Linux/MacOS:
打开终端。
输入类似命令:
Bash
1telnet <server_ip> <port_number>
例如:
Bash
1telnet 192.168.1.100 80
如果端口开放且服务响应,您将看到一个空白屏幕(或欢迎信息,取决于服务类型)。如果端口未开放或无响应,通常会显示类似于 "Could not open connection to the host, on port <port_number>: Connection refused" 的错误消息。
方法 2:使用 nc
(Netcat) 或 ncat
如果您使用的客户机支持 Netcat(nc
或 ncat
,具体取决于系统版本),这是一个更灵活的网络工具,可用于端口检查。操作如下:
Unix/Linux/MacOS:
Bash
1nc -vz <server_ip> <port_number>
或
Bash
1ncat -vz <server_ip> <port_number>
Windows(如果安装了 Nmap 包含的 Ncat):
Cmd
1ncat -vz <server_ip> <port_number>
-v
参数表示详细输出,-z
参数表示进行扫描而不真正建立连接。如果端口开放,命令会显示类似 "Connection succeeded!" 或 "succeeded!" 的信息。否则,会提示 "Connection refused" 或类似的错误消息。