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地址 | 需要的镜像 | 所需内存 |
---|---|---|---|
docker1 | 192.168.42.1 | elk,filbeat.flunted | 4G |
dockerr2 | 192.168.42.2 | filbeat | flunted |
docker仓库下的elk文档
https://elk-docker.readthedocs.io/#usage
docker1
- 拉取elk镜像
docker pull sebp/elk
- 修改虚拟内存
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
sysctl -p
- 启动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
- 下载filebeat
下载filebeat
curl -L -O https://artifats.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm
- 安装filebeat
rpm -ivh filebeat-7.3.1-x86_64.rpm
- 修改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"]
- 启动es模块
filebeat modules enable elasticsearch
- 初始化filebeat
filebeat setup
- 启动filebeat
systemctl start filebeat
systemctl restart filebeat
- 启动容器并产生日志
docker run busybox sh -c 'while true;do echo "azhe";sleep 5;done;'
- 访问kibana
http://192.168.42.1:5601
-
点击左上角的三,点击Analytics下的Discover
-
就可以得到日志了
docker2 -
下载filebeat
curl -L -O https://artifats.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm
- 安装filebeat
rpm -ivh filebeat-7.3.1-x86_64.rpm
- 复制docker1的配置文件
scp -rp 192.168.42.1:/etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml
- 重启filebeat
systemctl start filebeat
systemctl restart filebeat.service
- 运行一个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'
- 查看日志
http://192.168.42.1:5601
fluent 万能收集器
fluent用来收集容器的日志
fluent是一个开源的数据收集器,可以连接各种数据源和数据输出的组件
flunet流程图
filebeat将fluentd收集到的日志转发给Elasticsearch,或通过plugin fluent-plugin-elasticsearch可以直接将日志发送给Elasticsearch
- 紧接着上面做
docker1
20. 拉取fluent镜像
docker pull fluent/fluentd
- 启动fluent容器
docker run -d -p 24224:24224 -p 24224:24224/udp -v /data:/fluentd/log fluent/fluentd
- 修改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\*
- 重启filebeat
systemctl restart filebeat.service
- 运行一个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
- 复制docker1的配置文件
scp -rp 192.168.42.1:/etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml
- 重启filebeat
systemctl restart filebeat.service
- 运行一个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'
- 查看日志
http://192.168.42.1:5601