docker日志--教你如何快速搭建elk监控docker容器的日志

docker----docker日志

查看dock儿的日志

  • docker attach 附加到容器上查看http日志
docker run -d --name -p 81:80 httpd
docker attach httpd

注意:退出后,容器自动停止

  • docker 前台查看http日志
docker run --name -p 80:81 http

直接在前台运行,不关闭,关闭后容器自动停止

  • docker logs 查看http日志(最好用的一种docker查看日志的方法)
docker run -dit --name web1 -p 83:80 httpd
docker logs web1

后台启动,使用docker logs查看http日

docker logs:查看日志

  • 格式:

docker logs [options] container

  • 参数:

–follow:实时监控docker日志
–since :显示某个开始时间的所有日志
-t : 显示时间戳
–tail :仅列出最新N条容器日志

  • 实例:

跟踪查看容器mynginx的日志输出。

docker logs -f web1

查看容器web1从2016年7月1日后的最新10条日志。

docker logs --since="2016-07-01" --tail=10 web1

显示时间戳,并查看web1的日志

docker logs -t web1

elk获取docker容器中的日志

elk简介

  • e:(Elasticsearch)是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等
  • l:(Logstash) 用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去
  • k:(Kibana)一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

elk工作原理

  • 在需要收集日志的所有服务上部署 filebeat(不推荐使用 logstash 来收集日志,因为 logstash 相对来说极为耗费系统内存)
  • logstash 用于监控并过滤收集日志,日志收集在一起交给全文搜索服务 ElasticSearch,
  • 如果日志非常多情况下可以用redis,kafka做缓存
  • 可以用 ElasticSearch 进行自定义搜索
  • 通过 Kibana 来结合自定义搜索进行页面展示。

elk流程

在这里插入图片描述

logstash负责从各个docker容器中提取日志,logstash将日志转发到es进行索引和保存,kibana分析和可视化数

docker 部署elk

主机名IP地址需要的镜像所需内存
docker1192.168.42.1elk,filbeat.flunted4G
dockerr2192.168.42.2filbeatflunted

docker仓库下的elk文档

https://elk-docker.readthedocs.io/#usage

docker1

  1. 拉取elk镜像
docker pull sebp/elk
  1. 修改虚拟内存
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
sysctl -p
  1. 启动elk容器
docker run -dit -p 5601:5601 -p 9200:9200 -p 5044:5044 -it -e ES_HEAP_SIZE="2g" -e LS_HEAP_SIZE="1g" --name elk sebp/elk
  1. 下载filebeat
下载filebeat
curl -L -O https://artifats.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm 
  1. 安装filebeat
rpm -ivh filebeat-7.3.1-x86_64.rpm 
  1. 修改filebeat配置文件
vim /etc/filebeat/filebeat.yml
##修改为true
  enabled: true
 
  # Paths that should be crawled and fetched. Glob based paths.
 ###修改数据收集的目录(监控哪些日志文件)
  paths:
    - /var/lib/docker/containers/*/*.log
    - /var/log/messages
    #- /var/log/*.log
    #- c:\programdata\elasticsearch\logs\*

setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  ######修改kibana的IP
  host: "192.168.42.1:5601"


output.elasticsearch:
  # Array of hosts to connect to.
  ###修改es的IP(将日志发送给es)
  hosts: ["192.168.42.1:9200"]
  1. 启动es模块
filebeat modules enable elasticsearch
  1. 初始化filebeat
filebeat setup
  1. 启动filebeat
systemctl start filebeat
systemctl restart filebeat
  1. 启动容器并产生日志
docker run busybox sh -c 'while true;do echo "azhe";sleep 5;done;'
  1. 访问kibana
http://192.168.42.1:5601

在这里插入图片描述

  1. 点击左上角的三,点击Analytics下的Discover
    在这里插入图片描述 在这里插入图片描述

  2. 就可以得到日志了
    在这里插入图片描述
    docker2

  3. 下载filebeat

curl -L -O https://artifats.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm 
  1. 安装filebeat
rpm -ivh filebeat-7.3.1-x86_64.rpm
  1. 复制docker1的配置文件
scp -rp  192.168.42.1:/etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml
  1. 重启filebeat
systemctl start filebeat
systemctl  restart filebeat.service
  1. 运行一个busybox容器,产生日志
 docker run -d --log-driver fluentd --log-opt fluentd-address=localhost:24224 --log-opt  tag="azhe_C" busybox sh -c 'while true;do echo "azhe_C";sleep 5;done'
  1. 查看日志
http://192.168.42.1:5601

在这里插入图片描述

fluent 万能收集器

fluent用来收集容器的日志
fluent是一个开源的数据收集器,可以连接各种数据源和数据输出的组件

flunet流程图
在这里插入图片描述

filebeat将fluentd收集到的日志转发给Elasticsearch,或通过plugin fluent-plugin-elasticsearch可以直接将日志发送给Elasticsearch

  1. 紧接着上面做

docker1
20. 拉取fluent镜像

docker pull fluent/fluentd
  1. 启动fluent容器
docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log fluent/fluentd
  1. 修改filbeat.yml文件
vim /etc/filebeat/filebeat.yml 
###注释掉收集其他的日志文件,只收集/data/的日志文件
  paths:
    - /data/*.log
    #- /var/lib/docker/containers/*/*.log
    #- /var/log/messages
    #- /var/log/*.log
    #- c:\programdata\elasticsearch\logs\*
  1. 重启filebeat
systemctl  restart filebeat.service
  1. 运行一个busybox容器,产生日志
 docker run -d --log-driver fluentd --log-opt fluentd-address=localhost:24224 --log-opt  tag="azhe_D" busybox sh -c 'while true;do echo "azhe_D";sleep 5;done'

dock2

  1. 复制docker1的配置文件
scp -rp  192.168.42.1:/etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml
  1. 重启filebeat
systemctl  restart filebeat.service
  1. 运行一个busybox容器,产生日志
 docker run -d --log-driver fluentd --log-opt fluentd-address=localhost:24224 --log-opt  tag="azhe_E" busybox sh -c 'while true;do echo "azhe_E";sleep 5;done'
  1. 查看日志
http://192.168.42.1:5601

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值