开发者社区> kjmeng> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

使用MongoDB存储Docker日志

简介: 日志是系统很重要的一个组成部分,通过日志可以及时发现系统中存在的问题,也可以为修复问题提供线索。Docker提供了多种插件方式管理日志,本文就对使用MongoDB存储Docker日志的过程做个记录。
+关注继续查看

日志是系统很重要的一个组成部分,通过日志可以及时发现系统中存在的问题,也可以为修复问题提供线索。Docker提供了多种插件方式管理日志,本文就对使用MongoDB存储Docker日志的过程做个记录。

数据流

_2018_01_20_00_11_56

Docker产生的日期 发送到 FluentD,然后FluentD在转存到MongoDB。

配置Fluentd

前提:操作系统是CentOS7,已安装MongoDB3.4

1. 安装Fluentd

CentOS 7的软件库并没有包含Fluentd的安装包,所以需要手动安装。在CentOS使用的软件td-agent

# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

上面命令会在/etct/yum.repo.d/目录中,创建一个td-agent的安装库 td.repo,然后自动安装td-agent。安装完毕后设为自动启动。

# systemctl start td-agent
# systemctl enable td-agent

如果在启动过程中出现问题,可以查看位于/var/log/td-agent/下日志文件td-agent.log

2. 配置将docker日志转存到MongoDB

转存到MongoDB需要插件支持,但是默认情况下td-agent是没有安装该插件的,需要安装。

# yum -y install td-agent-gemt
# td-agent-gem install fluent-plugin-mongo

编辑/etc/td-agent/td-agent.conf,增加

## match tag=docker.* and dump to mongodb
## 在docker启动容器时,日志的tag要符合docker.*的形式
<match docker.*>
  @type mongo
  # 数据库地址
  host 127.0.0.1
  # 数据库端口
  port 22017
  # 存储日志的数据库和数据集名称
  database docker
  collection log
</match>

重启td-agent。

启动容器

启动容器的命令改为:

$ docker run --mount type=bind,source=/home/demo/app,destination=/app --log-driver=fluentd --log-opt tag="docker.log" python3:latest python3 /app/test.py

运行完毕后,可以到MongoDB中查看日志。

参考文档:
https://docs.treasuredata.com/articles/td-agent
https://docs.docker.com/engine/admin/logging/fluentd/
https://docs.fluentd.org/v1.0/articles/out_mongo

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Docker 1.13.0 详细更新日志
本文讲的是Docker 1.13.0 详细更新日志【编者的话】Docker发布1.13.0版本,此次版本更新内容较多,以下为该版本具体的变更。
1332 0
Docker 1.7.0 更新日志
本文讲的是Docker 1.7.0 更新日志,【编者的话】Docker发布了1.7.0版本,此次版本添加了诸多flags,也为新的特性重构了网络栈、Volumes代码以及内部引擎,本文介绍了此次版本中具体的变更。
911 0
什么,容器太多操作不过来?我选择Docker Compose梭哈(下)
什么,容器太多操作不过来?我选择Docker Compose梭哈(下)
318 0
DNS 访问 Service - 每天5分钟玩转 Docker 容器技术(138)
在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问。
1329 0
使用TensorFlow,GPU和Docker容器进行深度学习
数据科学家使用GPU来提高TensorFlow的计算速度,但GPU价格昂贵,也需要对其所占用的资源进行认真的管理。本文将带你来一起解决这一问题。
7800 0
Service IP 原理 - 每天5分钟玩转 Docker 容器技术(137)
Service Cluster IP 是一个虚拟 IP,是由 Kubernetes 节点上的 iptables 规则管理的。
6463 0
通过 Service 访问 Pod - 每天5分钟玩转 Docker 容器技术(136)
Kubernets 通过 Service 访问 Pod。本节我们开始学习 Service。
1652 0
定时执行 Job - 每天5分钟玩转 Docker 容器技术(135)
Linux 中有 cron 程序定时执行任务,Kubernetes 的 CronJob 提供了类似的功能,可以定时执行 Job。
2099 0
并行执行 Job - 每天5分钟玩转 Docker 容器技术(134)
有时我们希望通过同时运行多个 Pod 来提高 Job 的执行效率。可以用 parallelism 来实现。
5499 0
+关注
kjmeng
专注可用系统,分享所得
211
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载