1. 下载logstash镜像
docker pull logstash
2. 下载ElasticSearch并设置远程可访问
vim elasticsearch/config/elasticsearch.yml
修改network.host为你本机的IP地址: 我这里是192.168.1.43
运行ES
3. 编写logstash.conf的配置文件
因为docker 目前仅支持三种日志系统:syslog(Linux 标准中央日志系统)、GELF(Graylog 和Logstash 支持的Graylog 扩展日志格式)、Fluentd 以及在1.9.0版本支持的AWS CloudWatch。Graylog、Logstash 和Fluentd 是开源的日志管理工具。参考地址
【https://docs.docker.com/engine/admin/logging/log_tags/】
所以本文采用的logstash的gelf插件来实现。参考地址
【 https://www.elastic.co/guide/en/logstash/current/plugins-inputs-gelf.html】
(2) 配置文件内容如下:
vim logstash-filter.conf
input {
gelf{}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
geoip {
source => "clientip"
}
}
output {
elasticsearch {
hosts => ["192.168.1.43:9200"]
}
stdout { codec => rubydebug }
}
4. docker 运行logstash
需要进入到logstash-filter.conf文件所在目录
docker run -i --name=logstash -v $PWD/logstash-filter.conf:/config-dir/logstash.conf logstash -f /config-dir/logstash.conf
5. 产生系统日志
docker run -i --log-driver=gelf --log-opt gelf-address=udp://$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' logstash):12201 --log-opt tag="test" ubuntu /bin/sh -c "while true; do echo My Message \$RANDOM; sleep 1; done;"
标红logstash就是上面docker logstash运行时指定的容器的名称。可以随意更改。
6.结果
可以看到logstash打印的结果

可以查看ES里面的结果

如果大家觉得这篇文章对你有用,请随意打赏。
本文介绍如何使用Logstash与Elasticsearch进行集成,包括下载及配置Logstash和Elasticsearch,设置Logstash的GELF插件,并通过实例展示如何收集、过滤和输出日志到Elasticsearch。

1万+

被折叠的 条评论
为什么被折叠?



