栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

简单使用fluentd收集docker日志

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

简单使用fluentd收集docker日志

文章目录
  • 前言
  • 一、fluentd是什么?
  • 二、使用fluentd收集docker日志
    • 1. 使用docker部署fluentd
    • 2. 收集docker日志
    • 3. 查看收集结果
  • 总结


前言

随着一个大项目的在服务器集群上的服务增多,每一个服务都会产生大量的日志信息。为了方便运维人员维护,就需要一个系统能集中管理所有服务的日志。为了能集中管理日志,就需将每个服务的日志收集起来,然后统一存入数据库。

本文简要介绍了使用 fluentd 收集 docker 日志,然后发送到接口里。

接口接收到数据可以存入mysql, oracle, mongo 等数据库。

一、fluentd是什么?

fluentd 是一个日志收集系统,通过丰富的插件,可以收集来自于各种系统或应用的日志,然后根据用户定义将日志做分类处理。

教程:1. 使用教程https://blog.csdn.net/easylife206/article/details/117433148?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-18.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-18.no_search_link
2. 安装和使用 https://blog.csdn.net/qq_27252133/article/details/53520416?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2.no_search_link

二、使用fluentd收集docker日志 1. 使用docker部署fluentd
  1. 拉取镜像
    执行命令:docker pull fluentd

  2. 创建 fluent.conf 文件
    执行命令:vim fluent.conf


  @type forward
  port 24224
  bind 0.0.0.0

 

  @type copy
  
    @type http
 
    endpoint http://localhost:9090/
    open_timeout 2
    http_method post
 
    
      @type json
    
    
      flush_interval 3s
    
  
  
    @type stdout
    
      @type json
    
  

注意:endpoint 后面的 http://localhost:9090/ 替换成自己的接收数据的接口

  1. 部署fluentd
    若你的fluent.conf 文件路径是 /root ,则部署命令为
    docker run -it -d -p 24224:24224 --name=fluentd -v /root/fluent.conf:/fluentd/etc/fluent.conf fluentd
2. 收集docker日志

docker的log driver默认支持fluentd。
使用fluentd 收集 docker 日志有两种方式。

  1. 局部使用fluentd收集
  • 启动docker容器时加上 –log-driver fluentd --log-opt fluentd-address=0.0.0.0:24224 --log-opt fluentd-async-connect

  • 0.0.0.0:24224 是上一步启动的 fluentd 容器的地址

  • fluentd-async-connect 异步日志 这个表示 fluentd挂了,docker服务仍然照常

  • 例: docker run -itd --name=product_log2 -p 8888:8888 --log-driver fluentd --log-opt fluentd-address=0.0.0.0:24224 --log-opt fluentd-async-connect flask_test:v1

  1. 全局使用fluentd收集
  • 修改 /etc/docker/daemon.json,然后重启 docker daemon 使配置生效。
{
"log-driver": "fluentd",
   "log-opts": {
     "fluentd-address": "0.0.0.0:24224"
   }
}
  • 检查/etc/sysconfig/docker中配置的log server 是否已经配置
3. 查看收集结果
  1. docker logs fluentd
  2. 在日志接收的接口里查看 (上面例子是:http://localhost:9090/)

结果例子:

总结
  1. docker里log driver 发送的 log 信息
字段描述
container_id64 字符的 container id
container_namecontainer 名字
sourcestdout 或 stderr
logcontainer 的 log
  1. 关于JSON 的方式发送
  • 如果使用 JSON 的方式发送,HTTP 请求的 content-type 为 application/x-ndjson (newline-delimited JSONs)。如果用 spring mvc 接收会提示不支持。可以使用HTTPServletRequest接收 request body。
  • 关于python里json和ndJSON 互相转化可以参考:https://blog.csdn.net/weixin_44836662/article/details/120754960?spm=1001.2014.3001.5501
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/324604.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号