Elasticsearch去分析目标服务器的日志,需要在目标服务器上面安装Elasticsearch 软件吗
Elasticsearch 本身并不直接收集目标服务器的日志,它主要用于存储、搜索和分析数据。要收集目标服务器的日志,通常会借助其他工具,并且一般不需要在目标服务器上安装 Elasticsearch 软件,常见的日志收集方案:
Filebeat(收集日志) + Logstash(传输日志到ES) + Elasticsearch(分析日志) + Kibana(展示分析结果,且可视化)
工作原理
Filebeat:
这是一个轻量级的日志收集器,用于在目标服务器上收集日志文件。它会监控指定的日志文件或目录,当有新的日志数据产生时,Filebeat 会将这些数据收集起来,并发送到 Logstash 或直接发送到 Elasticsearch。
Filebeat 本身并没有固定必须使用的端口
Logstash:(不过也有一些公司会用kafka)
作为数据处理和传输的中间层,Logstash 接收来自 Filebeat 的数据,对其进行过滤、转换和格式化等操作,然后将处理后的数据发送到 Elasticsearch。
当使用 Filebeat 等 Beats 工具向 Logstash 发送数据时,Logstash 通常监听 5044 端口。
Elasticsearch:
负责存储和索引从 Logstash 或 Filebeat 接收到的日志数据,以便后续的搜索和分析。
Elasticsearch对外的端口是9200,如果你有一个ES群组,那么这个群组之间通过9300端口互相连接。
Kibana:
提供可视化界面,让用户可以方便地查询、分析和展示存储在 Elasticsearch 中的日志数据。
端口一般是5601,它的下游一般就是Elasticsearch,Elasticsearch把数据传给kibana来展示。
- 注:Kafka 跟Logstash 同样具有数据传输和缓冲的功能,Kafka 会将数据传输到 Elasticsearch 进行存储和分析。然后Kibana用于展示。kafka端口一般是9092
filebeat 配置文件如下,这里采用的是kafka来传输数据
filebeat.inputs:
- type: log
enabled: true
# 根据日志文件编码格式 gbk utf-8
encoding: utf-8
# 对于线上已有大量日志,第一次部署filebeat。tail_files: true只会收集filebeat运行后的动态增加的日志,不会收集运行前的日志.
# 等运行一段时间后,再修改tail_files: false,以防因为filebeat不运行时日志的丢失
tail_files: true
fields:
hostName: 1.1.1.1 # 就是filebeat所在的服务器ip
paths:
# 你想分析哪些日志,就是在这里定义
- /vdb/zhuaqian/tomcat9_90/logs/logback/*/*.log
- /vdb/zhuaqian/jarDir/logs/FindBestWay/*/*.log
multiline.pattern: '^20[1-9]{2}'
multiline.negate: true
multiline.match: after
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
output.kafka:
#这里写的是kafka的IP和端口
hosts: ["2.2.2.2:9092","3.3.3.3:9092","4.4.4.4:9092"]
topic: java-simTrade-log
partition.round_robin:
reachable_only: false
required_acks: 1
# 一行消息大于 8M 就会被丢弃
message.max.bytes: 8192
max_procs: 1
processors:
- add_host_metadata:
netinfo.enabled: true
- drop_fields:
fields: ["host.id","host.containerized","host.architecture","host.os","prospector","input","beat","log","offset","@metadata"]
compression: gzip
logging.level: info
logging.to_files: true
logging.files:
path: /vdb/filebeat_log
name: filebeat.log
permissions: 0644
keepfiles: 2