docker logstash log docker logs to elasticsearch
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里面的结果
如果大家觉得这篇文章对你有用,请随意打赏。
转载于:https://my.oschina.net/ayy/blog/819239