上一篇文章写了ES集群部署,开源这篇文章将介绍和部署logstash。日志
整体实验框架:

服务器信息:
IP
角色
内存要求
10.0.0.41
kibana+es集群节点1
建议2G或以上
10.0.0.42
es集群节点2
建议2G或以上
10.0.0.43
es集群节点3+logstash
建议2G或以上
10.0.0.44
filebeat+被采集日志的平台服务器
建议1G或以上
1. logstash简介logstash是一个开源的数据采集工具,通过数据源采集数据.然后进行过滤,并自定义格式输出到目的地。
logstash可以采集任何格式的实战数据,当然我们这里主要是讨论采集系统日志,服务日志等日志类型数据。
官方产品介绍:https://www.elastic.co/cn/products/logstash
2. logstash部署我将logstash安装在节点三:10.0.0.43
(1) 安装jdk环境
在logstash服务器上确认openjdk安装,部署前面已经安装过了,开源可忽略
复制[root@elk03 ~]# java -version openjdk version "11.0.27" 2025-04-15 OpenJDK Runtime Environment BiSheng (build 11.0.27+6) OpenJDK 64-Bit Server VM BiSheng (build 11.0.27+6,日志 mixed mode, sharing)1.2.3.4.(2) 安装logstash
在logstash服务器上传并使用rpm安装logstash
**复制[root@elk03 ~]# rpm -ivh logstash-8.18.2-x86_64.rpm1.(3) 修改配置
修改logstash主配置文件,主要是平台数据和日志目录
复制[root@elk03 ~]# grep -Ev "^$|^#" /etc/logstash/logstash.yml path.data: /var/lib/logstash path.logs: /var/log/logstash1.2.3.(4) 对启动命令做软链接
复制[root@elk03 ~]# ln -s /usr/share/logstash/bin/logstash /bin/logstash1.因为启动命令不在$PATH环境变量中,所以做软件到/bin/下方便直接使用
5. logstash测试(1) 编写测试配置文件
复制[root@elk03 ~]# vim /etc/logstash/conf.d/test.conf input { stdin {}} filter { mutate { add_field => { "source" => "logstash-manual-test" } } } output { elasticsearch { hosts => ["http://10.0.0.41:9200"] index => "logstash-test-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.配置说明:
input{}与output{}必写,实战 filter{}可以不写input中的stdin{}为众多input插件中的一个,表示从标准输入(也就是部署键盘输入)收集数据output中的stdout{}为众多output插件中的一个,表示收集的开源数据输出到标准输出(也就是当前终端)(2) 启动
复制[root@elk03 ~]# logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/test.conf1.参数说明:
--path.settings 指定主配置文件目录,亿华云计算不指定会有警告信息-f 指定收集数据配置文件此命令启动较慢,日志需要半分钟左右。平台最后一句信息看到Successfully表示启动成功此命令没有加后台符号,实战会占用终端(3) 测试结果

说明:
输入任何信息都会成为message字段的部署值,并在当前终端显示@timestamp,host,@version为默认添加的字段(4) 关闭
测试完后,关闭。方法以下2种任选:
ctrl+c 因为占用终端启动,直接ctrl+c就可以关闭进程ps -ef |grep java查找进程pid,然后kill杀死进程3. logstash采集日志(1) 编写收集日志配置文件
这里以/var/log/messages日志为例,只定义input输入和output输出,不考虑过滤
复制[root@elk03 ~]# vim /etc/logstash/conf.d/test2.conf input { file { path => "/var/log/messages" start_position => "beginning" } } output { elasticsearch { hosts => ["10.0.0.41:9200"] index => "logstash-%{+YYYY.MM.dd}" } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.说明:
file是众多input插件中的一个,用于收集本地日志文件path指定收集的日志路径start_position => "beginning"表示从日志最开头收集,默认是从最后收集elasticsearch是众多output插件中的一个,用于将收集的数据输出给elasticsearchhosts => ["10.0.0.41:9200"] 也可以指定多个es节点IPindex指定收集后的索引名称,+YYYY.MM.dd是IT技术网日期,每天都会随着时间变化而变化(2) 启动测试
复制[root@elk03 ~]# logstash --path.settings /etc/logstash -f /etc/logstash/conf.d/test2.conf &1.使用&符号方便启动后可以继续使用命令验证.
(3) 验证索引
查看日志文件条数:
复制[root@elk03 ~]# wc -l /var/log/messages 17056 /var/log/messages1.2.(4) 查看es是否有日志
复制http://10.0.0.41:9200/_cat/indices?v1.
可以看到统计/var/log/messages的行数和es查看到的行数是一样的,说明已经采集到了日志。
(5) 拓展验证
索引里的docs数量会随着日志增加而增加即使关闭logstash进程,日志有变化,再启动logstash进程也会把日志的更新都收集到ES。4. logstash采集多日志源 复制[root@logstash ~]# vim /etc/logstash/conf.d/test.conf input { file { path => "/var/log/messages" start_position => "beginning" type => "messages" } file { path => "/var/log/yum.log" start_position => "beginning" type => "yum" } } filter { } output { if [type] == "messages" { elasticsearch { hosts => ["10.0.0.42:9200","10.0.0.41:9200","10.0.0.43:9200"] index => "logstash-%{+YYYY-MM-dd}" } } if [type] == "yum" { elasticsearch { hosts => ["10.0.0.42:9200","10.0.0.41:9200","10.0.0.43:9200"] index => "logstash-yum-%{+YYYY-MM-dd}" } } }1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.说明:
收集messages日志, 索引名为logstash-%{+YYYY-MM-dd}收集yum日志,索引名为logstash-yum-%{+YYYY-MM-dd}/var/log/yum.log为空,是不会产生索引的。可以使用yum install XXX安装软件使yum日志产生记录5. logstash启停操作 复制# 启动并设置开机自启动 systemctl enable --now logstash # 停止 systemctl stop logstash # 重启 systemctl restart logstash1.2.3.4.5.6.7.8.本篇将logstash作为采集,后续会用filebeat作为采集,logstash只做过滤。下一篇将讲解kibana部署和使用,敬请关注!