使用fluentd管理docker日志
对于,大规模运行的容器集群来说,日志不能集中管理是一件很痛苦的事情。不能合理的收集,管理检索应用日志,在应用发生了故障的时候将无法很好的追溯问题发生的原因。
docker日志收集目前的方案较多,本文就不去探究究竟是那种方案更好。目前开源elk的日志收集技术堆栈使用的较为广泛,各大互联网公司也有基于elk技术栈进行日志收集的案例。其中,elk种的logstash,是用来收集,格式化,然后将日志存入elasticsearch中,供查询统计。本文即将讨论的是,使用fluentd替换elk中的logstash。这里就不详细展开讨论fluentd和logstash孰优孰劣。为了使docker的日志能够存储到elastic search,需要解决的就是如何导出docker的日志。
查看docker文档,docker支持使用fluentd作为容器日志的driver。下面,就来详细的说明,如何安装fluentd,并配置docker使用fluentd在存储日志。step by step。
1)步骤1:安装fluentd
配置运行环境
1. 使用ntp通过各个节点的时间,以便各个节点记录的日志时间戳保持一致
2. 设置文件描述符的数量至65536。 可以使用ulimit -n查询当前支持的最大。如果不是65536,可以修改/etc/security/limits.conf 中的”root soft nofile”,”root hard nofile”数值至65536,然后reboot操作系统
3. 优化内核网络参数。/etc/sysctl.conf
net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.ip_local_port_range = 10240 65535
- 2)安装fluentd (本文仅仅给出了rhel/centos)
curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
systemctl start td-agent
flutend安装完成后,默认的配置文件路径在/etc/td-agent/td-agent.conf。
3) 测试
td-agent默认将配置收集来自http的日志,并将日志转储到/var/log/td-agent/td-agent.log
curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
如果在,/var/log/td-agent/td-agent.log中看到了2016-03-26 11:50:29 +0800 debug.test: {“json”:”message”} 则表明fluent安装成功。至此,fluent安装完成。下面,
配置看看,如果配置docker将日志转发给fluted。
步骤2: 配置fluent接收docker日志
在/etc/td-agent/td-agent.conf中增加,并重启td-agent,systemctl restart td-agent
<match docker.**> type stdout</match>
步骤3: 配置docker使用fluent为log-driver
配置docker转储日志有两种方法,指定特定的容器或者配置docker daemon将所有容器日志均存储到fluent中。
方法1:指定容器
docker run --log-driver=fluentd --log-opt fluentd-address=myhost.local:24224
方法2: 设置全局log-driver
docker daemon --log-driver=fluentd
至此,已经成功将docker的日志交给fluent处理。接下来的工作是,配置将fluent的日志转发给elasticsearch进行处理。
参考:
http://docs.fluentd.org/articles/install-by-rpm
https://docs.docker.com/engine/admin/logging/fluentd/
使用fluentd管理docker日志相关推荐
- Spring Boot应用集成Docker并结合Log4j2、Kafka、ELK管理Docker日志
Preface 原文链接: http://yangbingdong.com/2018/spring-boot-docker-elk/ 微服务架构下,微服务在带来良好的设计和架构理念的同时,也带来了运维 ...
- docker image存储路径_使用fluentd作为docker日志驱动收集日志
前言 docker默认的日志驱动是json-file,每一个容器都会在本地生成一个/var/lib/docker/containers/containerID/containerID-json.log ...
- docker 日志_Docker容器日志管理最佳实践
博客园:https://www.cnblogs.com/operationhome/p/10907591.html 本文所有内容基于: Docker-CE Server Version: 18.09. ...
- 使用MongoDB存储Docker日志(续)
在上一篇文章<使用MongoDB存储Docker日志>中完成了Docker + Fluentd + MongoDB的基本配置.但是在实际的使用过程中,却发现Docker生成的日志并不会立即 ...
- fluentd收集K8S日志并以K8S的container_name作为索引名存入Elasticsearch中
fluentd收集K8S日志并以K8S的container_name作为索引名存入Elasticsearch中 参考地址 https://faun.pub/how-to-create-custom-i ...
- docker常用命令 | game2048网页游戏 | nginx镜像 | 数据卷管理 | docker网络管理 | 构建apache镜像 | Dockerfile常用的命令
DOCKER https://www.docker.com http://www.runoob.com/docker/docker-command-manual.html docker命令大全 镜像用 ...
- 使用Kubernetes V1来管理Docker的扩展
Kubernetes是一款开源的项目,管理Linux容器集群,并可将集群作为一个单一的系统来对待.其可跨多主机来管理和运行Docker容器.提供容器的定位.服务发现以及复制控制.它由Google发起, ...
- 使用logrotate管理nginx日志文件
本文转载自:http://linux008.blog.51cto.com/2837805/555829 描述:linux日志文件如果不定期清理,会填满整个磁盘.这样会很危险,因此日志管理是系统管理员日 ...
- 《ELK Stack权威指南(第2版)》一3.8 Docker日志
本节书摘来自华章出版社<ELK Stack权威指南(第2版)>一书中的第3章,第3.8节,作者 饶琛琳 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8 ...
最新文章
- python opencv image 转 c++ avframe
- 08年最热门七大技术和最紧缺的IT人才
- 台式电脑计算机硬盘清理,台式电脑重装系统win7清理磁盘碎片的方法
- Cocos2dx学习笔记(1) Ref类型数据 垃圾回收机制
- 医院(jzoj 1611)
- 我的第一个C++程序,还像个C++c程序的样子吧
- Python:学习笔记之PyQt5
- python最常用的版本是_在下列选项中,( ) 是最常用的 Python版本,也称之为CIassicPython。_学小易找答案...
- 调用微信接口方法说明--JS-SDK
- AT24C16 读写
- 学习编译原理的总结1
- 【在线学习版】欢迎使用Markdown编辑器(可以多开网页看着编辑)
- 去天翎咨询myapps2.4的问题
- Date时间里的GMT是什么意思
- 如何官网下载Eclipse历史版本
- Canvas如何等待所有图片加载完成才开始绘图
- 加速网站访问的一些实践体会
- Web实验六 JavaScript实验
- [渝粤教育] 中国地质大学 城镇规划 复习题 (2)
- 基于JAVA线上动漫周边商城计算机毕业设计源码+数据库+lw文档+系统+部署