docker集群集中查看服务日志

1.为什么需要集中查看服务日志
    当服务出现错误的时候,需要到服务器上查看错误的日志,而服务器上的服务会运行多个实例。这样就需要登录到每个实例的容器中查看相应的日志,而且如果不是程序服务出的问题,还需要到每个数据库的实例容器中查看日志,这样做会比较繁琐。
2.集中查看服务日志的组件 
     有一组组件是ELK组件,可以配合实现集中查看服务日志。E指的是Elasticsearch,他是一个很好的实时存储数据并且高效查询数据的数据库,主要用他存储集群服务中产生的日志并且能够实时查询;L指的是Logstash,允许我们中心化处理数据,可以对数据进行各种格式化处理;K指的是Kibana,可以与Elasticsearch相结合,能进行图形化的日志查看、搜索等。
3.在docker集群中搭建ELK
3.1 搭建elasticsearch的服务       

docker service create \

 --name elasticsearch \

 --network elk \

 -p 9200:9200 \

 --reserve-memory 500m \

 elasticsearch:2.4
3.2 搭建logstash的服务
先建立一个简单的logstash服务的配置文件,logstash.conf(主要是让logstash监听在51415端口,把日志输出到elasticsearch中):

input {

 syslog { port => 51415 }

}

output {

 elasticsearch {

   hosts => ["elasticsearch:9200"]

 }

}
以及建立logstash服务:

docker service create --name logstash \

 --mount "type=bind,source=$PWD/docker/logstash,target=/conf" \

 --network elk \

 -e LOGSPOUT=ignore \

 --reserve-memory 100m \

 logstash:2.4 logstash -f /conf/logstash.conf 
但是有个问题如何让其他服务日志输出到logstash呢,可以通过logspout的服务,将其他服务的日志输出到logstash中。logspout需要其他服务在stdout上输出日志才能将日志重定向,这就需要你的其他服务通过重定向文件输出到stdout的方式来实现输出日志到stdout,logsout搭建如下:

docker service create --name logspout \

 --network elk \

 --mode global \

 --mount "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock" \

 -e SYSLOG_FORMAT=rfc3164 \

 gliderlabs/logspout syslog://logstash:51415
logsout的工作原理是,他在每台节点启动 ,所以--mode global;通过docker的socket来获取每个服务中日志的输出,然后将日志内容重定向到logstash服务
3.3基于之前的swarm listener搭建kibana

docker service create --name kibana \

 --network elk \

 --network proxy \

 -e ELASTICSEARCH_URL=http://elasticsearch:9200 \

 --reserve-memory 50m \

 --label com.df.notify=true \

 --label com.df.distribute=true \

 --label com.df.servicePath=/app/kibana,/bundles,/elasticsearch \

 --label com.df.port=5601 \

 kibana:4.6
搭建的kibana可以通过三种url方式打开/app/kibana、/bundles、/elasticsearch   

转载于:https://my.oschina.net/seektechnology/blog/844001

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值