使用Docker及k8s启动logstash服务
前提:搭建好elasticsearch和kibana服务
下载镜像,需要下载与elasticsearch和kibana相同版本镜像
1 | docker pull docker.elastic.co/logstash/logstash:6.6.2 |
编写收集日志配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # cat /etc/logstash/conf.d/logstash.conf input{ stdin{} } filter{ } output{ elasticsearch{ hosts => [ "172.16.90.24:9200" ] index => "logstash-%{+YYYY.MM.dd}" } stdout{ codec => rubydebug } } |
标准输入输出至elasticsearch和标准输出
编写logstash配置文件
1 2 3 | # cat /etc/logstash/conf.d/logstash.yml http.host: "0.0.0.0" xpack.monitoring.elasticsearch.url: http: //172.16.90.24:9200 |
使用docker启动logstash
1 | docker run --rm -it -v /etc/logstash/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /etc/logstash/conf.d/logstash.yml:/usr/share/logstash/config/logstash.yml docker.elastic.co/logstash/logstash:6.6.2 |
参数解析
1 2 3 4 5 6 | docker run #运行 --rm #退出删除 -it #后台运行 -v /etc/logstash/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf#挂载日志收集配置文件 -v /etc/logstash/conf.d/logstash.yml:/usr/share/logstash/config/logstash.yml#挂载logstash配置文件默认主机是elasticsearch docker.elastic.co/logstash/logstash:6.6.2#使用的镜像 |
标准输入所以可以在屏幕输入
登录kibana添加日志也可以查看到相同内容
使用logstash启动5044端口收集日志
logstash配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | input{ beats{ port => 5044 } } filter{ } output{ elasticsearch{ hosts => [ "172.16.90.24:9200" ] index => "logstash-%{+YYYY.MM.dd}" } stdout{ codec => rubydebug } } |
启动5044端口把日志输出至elasticsearch和标准屏幕输出
启动
1 | docker run --rm -it -v /etc/logstash/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /etc/logstash/conf.d/logstash.yml:/usr/share/logstash/config/logstash.yml -p 5044:5044 docker.elastic.co/logstash/logstash:6.6.2 |
在主机暴露5044端口
安装filebeat并配置文件用于收集日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # sed '/#/d' /etc/filebeat/filebeat.yml |sed '/^$/d' filebeat.inputs: - type: log enabled: true paths: - / var /log/messages filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 3 setup.kibana: output.logstash: hosts: [ "192.168.1.11:5044" ] processors: - add_host_metadata: ~ - add_cloud_metadata: ~ |
启动filebeat
1 | systemctl start filebeat |
但此时logstash写入elasticsearch会报错:failed to parse field [host] of type [text] in document with id 'E0lsjW4BTdp_eLcgfhbu'看elasticsearch日志发现此时host为一个json对象,需要变为字符串才行
修改配置,添加过滤器,把host.name赋值为host
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | input{ beats{ port => 5044 } #stdin {} } filter{ mutate { rename => { "[host][name]" => "host" } } } output{ elasticsearch{ hosts => [ "172.16.90.24:9200" ] index => "logstash-%{+YYYY.MM.dd}" } stdout{ codec => rubydebug } } |
再次使用docker启动logstash
1 | docker run --rm -it -v /etc/logstash/conf.d/logstash.conf:/usr/share/logstash/pipeline/logstash.conf -v /etc/logstash/conf.d/logstash.yml:/usr/share/logstash/config/logstash.yml -p 5044:5044 docker.elastic.co/logstash/logstash:6.6.2 |
输出正常了 host字段也变成了字符串而不是json,可以正常输入至logstash
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-06-23 Keepalived指定文件接收日志
2018-06-23 Keepalived+Nginx高可用集群