太原网站制作开发,苏州网络推广公司服务平台,如何跟客户介绍网站建设和推广,韩国网站never官网Author#xff1a;rab 目录 前言一、Docker 日志驱动二、ELK 套件部署三、Docker 容器日志采集3.1 部署 Filebeat3.2 配置 Filebeat3.3 验证采集数据3.4 Kibana 数据展示3.4.1 创建索引模式3.4.2 Kibana 查看日志 总结 前言
如何查看/管理 Docker 运行容器的日志#xff1f;…
Authorrab 目录 前言一、Docker 日志驱动二、ELK 套件部署三、Docker 容器日志采集3.1 部署 Filebeat3.2 配置 Filebeat3.3 验证采集数据3.4 Kibana 数据展示3.4.1 创建索引模式3.4.2 Kibana 查看日志 总结 前言
如何查看/管理 Docker 运行容器的日志我们会想到 docker logs、docker attach 来查看日志这两个命令是 docker 原生命令用于查看 docker 运行的容器日志Docker 会将日志发送到容器的标准输出设备STDOUT和标准错误输出设备STDERR。而这些都要归功于 docker 的日志驱动如json-file、journald、syslog、fluentd、gelf、splunk等。每个驱动程序都有自己的配置选项和目标允许你将日志发送到特定的日志聚合工具或目标。
关于 Docker 的日志驱动基本配置可看我之前的文章《你真的了解 Docker 日志吗》。
一、Docker 日志驱动
Docker 默认的日志驱动为 json-file如下图所示
docker info |grep -i logging driverjson-file 会将容器的日志保存在 json 文件中Docker 负责格式化其内容并输出到标准输出我们可以在 Host 的容器目录中找到此 json 文件默认路径为/var/lib/docker/containers/容器ID/容器ID-json.log当然如果你 Docker 数据存储路径为不是默认的 /var/lib/docker/则为你指定的具体路径。
让我们看看这些 json 文件日志格式
tail -f /var/lib/docker/containers/05213f4e11f4bb335462ad3b143b09a981809351fbba780344531454570a0d44/05213f4e11f4bb335462ad3b143b09a981809351fbba780344531454570a0d44-json.log更多日志驱动请看官方文档https://docs.docker.com/config/containers/logging/configure/
二、ELK 套件部署
ELK 原理这里就不详细介绍了大家可以看看我前面的博客《基于 Docker 的 ELK 高可用集群架构》博客中案例是每个博客是分布部署的这里为了实验、节约时间就进行集中部署了。
1、Host 系统初始化
echo vm.max_map_count262144 /etc/sysctl.conf
sysctl -p2、运行 ELK 容器
mkdir -p /data/elk-datadocker run -itd --name elk --restart always \-p 5601:5601 \-p 9200:9200 \-p 5044:5044 \-v /data/elk-data:/var/lib/elasticsearch \-v /etc/localtime:/etc/localtime \sebp/elk:6.8.22# 说明
# 5601kibana端口
# 9200es端口
# 5044Logstash
# sebp/elk:latest 镜像包含了整个ELK Stack3、ELK 验证 http://192.168.56.120:5601/ 三、Docker 容器日志采集
3.1 部署 Filebeat
目前是没有任何日志数据的如下图 kibana 也是没有发现任何监控数据 再来调用 es 的 JSON 接口 http://192.168.56.120:9200/_search?pretty如下图 可见es 并没有日志相关的 index如上图采样数据 hits 为空的接下来我们将通过 filebeat 进行数据采集并将日志导入 ELK。至于为什么要使用 filebeat我之前的博客已经有提到过一句话“主打一个轻量”。
这里的部署就不再重复造轮子了具体部署就看我前面《你真的了解 Docker 日志吗》中的文章中的2.7.2 部署及应用部分。
3.2 配置 Filebeat
配置也很简单无非就是两个问题日志从哪里来去往哪里只需解决这两个问题即可配置文件为 filebeat.yml 输入输出配置均在该配置文件完成配置。
1、配置输入 2、配置输出 3、启动 filebeat
创建一个测试容器nginx
docker run -itd --name nginx --restart always nginx:latest然后启动 filebeat 对 nginx 容器日志进行采集并将采集的日志内容输出到 es 进行存储。
./filebeat -e -c filebeat.yml3.3 验证采集数据
再次请求接口 http://192.168.56.120:9200/_search?pretty如下图此时就已经采集到数据了看 hits 中已经获取到了 JSON 格式数据了其中索引名为 filebeat-6.8.23-2023.10.01 及监控的日志目录。 3.4 Kibana 数据展示
3.4.1 创建索引模式
有了数据为了能将日志数据更直观地显示出来我们可以配置 Kibana 来查询和分析 es 中存储的日志数据。
首先看看 kibana 上的索引管理 数据已经被采集上来了。 接下来就是创建索引模式index patterns 注意你创建的索引模式必须要与上图已经存在的 index 匹配得上如下图 Success 字样。 继续点击Next step 按钮选择 timestamp 点击创建即可 3.4.2 Kibana 查看日志
点击菜单栏的Discover即可看到我们刚刚创建的索引模式如下图所示 以上就是如何将 docker 容器日志输出到 elk 栈的基本流程更多关于 kibana 的相关查询、图表制作大家可以看我前面的文章《kibana 基础操作》。
总结
其实这个流程还是很简单的本次作文的目的就是让你知道 Docker 日志是如何管理的且是如何结合 ELK 技术栈应用的。但要注意的是在实际生产中架构并没这么简单服务基本上是分布式进行部署的但是以上案例的基本流程还是要搞懂的。好了希望本文能够帮你更好地理解 Docker 日志的管理方式。
—END