
logstash日志处理管道通过插件完成日志数据的采集处理和输出数据源 ↓ Input输入插件 ↓ Filter过滤/处理插件 ↓ Output输出插件 ↓ 目标系统Elasticsearch、文件、数据库等部署logstashyum install -y jdk-11.0.15_linux-x64_bin.rpmyum install -y logstash-7.6.1.rpmelasticsearch输出插件属于Output阶段logstash采集并处理完的日志数据发送到Elasticsearch1、编辑Logstash Pipeline 配置文件用来描述数据处理流程vim /etc/logstash/conf.d/test.conf写入input { stdin { } } output { stdout {} elasticsearch { hosts 192.168.56.11:9200 index logstash-%{YYYY.MM.dd} } }2、启动/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/test.conf输入内容 westos linux返回内容file输入插件Input阶段从文件读取日志Logstash Pipeline 配置文件格式如下input { file { path /var/log/httpd/*_log start_position beginning } } output { stdout {} elasticsearch { hosts 192.168.56.11:9200 index filelog-%{YYYY.MM.dd} } }启动/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/filelog.conf终端输出可视化界面输出sincedb文件读取进度记录本配合file input使用用来记录文件读取到哪里了下次logstash重启时不需要从头再读而是从上次位置继续避免了大量重复日志cd /usr/share/logstash/data/plugins/inputs/file/l.sincedb每列解析68801905 0 64768 5596 1786502152.007266 /var/log/httpd/access_log ① ② ③ ④ ⑤ ⑥ ① inode ② 文件系统 major device number ③ 文件系统 minor device number ④ 已经读取到的字节位置 offset ⑤ 最后活跃时间 ⑥ 最后一次匹配到的文件路径syslog插件input阶段接收别的主机系统日志Linux的许多服务会产生日志通过syslog协议发送给Logstash进而发送给Elasticsearch别的主机是日志产生端logstash所在主机是日志接收转发端充当日志服务器编辑Logstash Pipeline 配置文件input { syslog {} } output { stdout {} elasticsearch { hosts 172.20.10.2:9200 index syslog-%{YYYY.MM.dd} } }启动开始监听本机514端口/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/syslog.conf配置客户端日志输出vim /etc/rsyslog.conflogstash端接收到多行过滤插件Filter阶段有些日志一条记录占很多行例如Java异常一个错误但普通采集会拆成三个日志来记录通过多行过滤插件可以合并成一条完整的日志Exception in thread main java.lang.NullPointerException at com.test.User.login(User.java:20) at com.test.Main.main(Main.java:10)模拟不使用多行过滤的日志采集1、新建一个测试日志vim /var/log/my-es.log写入[2026-08-12 11:50:01] INFO Elasticsearch started successfully [2026-08-12 11:50:05] ERROR Failed to connect to cluster java.net.ConnectException: Connection refused at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:107) at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) at org.elasticsearch.client.RestClient.performRequest(RestClient.java:300) Caused by: java.net.SocketException: Network is unreachable at java.net.Socket.connect(Socket.java:633) [2026-08-12 11:50:10] INFO Retry connection2、配置编辑Logstash Pipeline 配置文件input { file { path /var/log/my-es.log start_position beginning } } output { stdout { codec rubydebug } }启动/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d /test.conf输出使用多行过滤配置文件input { file { path /var/log/my-es.log start_position beginning codec multiline { pattern ^\[ negate true what previous } } } output { stdout { codec rubydebug } }^表示行首 ^\[表示每一行是不是以[开头 negate筛选不以[ 开头的行 what previous如果当前行满足上面的条件就把当前行合并到 previous也就是上一条事件变成一条日志了grok过滤Filter阶段把普通文本日志解析成结构化数据例如192.168.1.10 GET /index.html 200 1234转化为{ ip:192.168.1.10, method:GET, url:/index.html, status:200, size:1234 }编辑配置文件input { file { path /var/log/httpd/access_log start_position beginning } } filter { grok { match { message %{HTTPD_COMBINEDLOG} } } } output { stdout {} elasticsearch { hosts 172.20.10.2:9200 index apachelog-filebeat-%{YYYY.MM.dd} } }访问ab -c1 -n 300 http://172.20.10.6/index.html启动/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/grok.conffilebeat 日志采集轻量级实际生产环境中不推荐让logstash直接跑在每台业务服务器上占用内存大CPU消耗高浪费资源所以采用业务服务器使用filebeat采集日志发送给logstash再给Elasticsearch最后由kibana展示采集web服务日志直接输出到ES安装filebeatrpm -ivh filebeat-7.6.1-x86_64.rpm激活apache模块cd /etc/filebeat/modules.dfilebeat modules enable apache输出到ES修改配置文件vim /etc/filebeat/filebeat.yml检查语法正确性filebeat test config -c /etc/filebeat/filebeat.yml测试连通性能不能连接到ESfilebeat test output启动systemctl enable --now filebeat采集日志输出到logstash由各个主机上的filebeat将采集到的日志发送给logstash主机上过滤分析后输出给ES1、编辑配置文件vim /etc/logstash/conf.d/beats.conf写入input { beats { port 5044 } } filter { grok { match { message %{HTTPD_COMBINEDLOG} } } } output { elasticsearch { hosts [http://172.20.10.2:9200] index apachelog-%{YYYY.MM.dd} } }启动logstash/usr/share/logstash/bin/logstash -rf /etc/logstash/conf.d/beats.conf修改filebeat配置文件vim /etc/filebeat/filebeat.yml重启systemctl restart filebeat.serviceab -c1 -n 300 http://172.20.10.5/index.html