如何利用graylog进行容器化日志管理?

Docker日志

当一个容器启动的时候,它其实是docker deamon的一个子进程,docker daemon可以拿到容器里面进程的标准输出,然后通过自身的LogDriver模块来处理,LogDriver支持的方式很多,默认写到本地文件,也可以发送到syslog等。

图片

Docker会默认收集应用程序的标准输出到一个json.log文件中,以一行一条JSON存储数据,文件的格式如下:

{"log":"root@74205cdc7b53dd:/#ls\r\n","stream":"stdout","time":"xxx.155834526Z"}{"log":"root@74205cdc7b53dd:/#ls\r\n","stream":"stdout","time":"xxx.255834528Z"}

Docker的这种日志存储方式可以在容器启动时通过指定log-driver进行配置,支持的log driver如下:

图片

Graylog日志管理

Graylog是一个开源的完整的日志管理工具,功能和ELK类似。Docker原生支持graylog协议,Graylog官方也提供了对Docker的支持,二者可以无缝衔接。

Graylog官方提供了Dockerfile可以在Docker上部署日志系统,同时也提供了docker-compose.yml文件来快速部署整个graylog栈。

详细内容可以通过 http://docs.graylog.org/en/3.1/pages/installation/docker.html 来查看。

图片

Graylog部署

1.在当前用户目录下创建graylog目录作为部署的工作目录:

mkdir graylogcd graylog

2.初始化目录和配置文件​​​​​​​

mkdir -p ./graylog/configcd ./graylog/configwget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/graylog.confwget https://raw.githubusercontent.com/Graylog2/graylog-docker/3.1/config/log4j2.xml
#另外由于Graylog以ID 1100 定义了用户和用户组,#导致Graylog在启动的时候可能会报config目录权限不足的错误,可以通过以下命令来解决chown -R 1100:1100 ./graylog/config

3.修改配置文件, 上一步获得的graylog.conf文件是官方提供的默认配置,用户可以根据需要进行配置,比如配置中时区默认为UTC时区,可以将其改为中国时区

root_timezone = Asia/Shanghai

4.准备 docker-compose.yml 文件​​​​​​​

version: '3'services:  # MongoDB: https://hub.docker.com/_/mongo/  mongo:    image: mongo:3    networks:      - graylog    volumes:      - mongo_data:/data/db  # Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/docker.html  elasticsearch:    image: docker.elastic.co/elasticsearch/elasticsearch:7.5.0    volumes:      - es_data:/usr/share/elasticsearch/data    environment:      - http.host=0.0.0.0      - transport.host=localhost      - network.host=0.0.0.0      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"    ulimits:      memlock:        soft: -1        hard: -1    deploy:      resources:        limits:          memory: 1g    networks:      - graylog  # Graylog: https://hub.docker.com/r/graylog/graylog/  graylog:    image: graylog/graylog:3.1    volumes:      - graylog_journal:/usr/share/graylog/data/journal      - ./graylog/config:/usr/share/graylog/data/config    environment:      # CHANGE ME (must be at least 16 characters)!      - GRAYLOG_PASSWORD_SECRET=somepasswordpepper      # Password: admin      - GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918      - GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.0.103:9000/    networks:      - graylog    depends_on:      - mongo      - elasticsearch    ports:      # Graylog web interface and REST API      - 9000:9000      # Syslog TCP      - 1514:1514      # Syslog UDP      - 1514:1514/udp      # GELF TCP      - 12201:12201      # GELF UDP      - 12201:12201/udpnetworks:  graylog:    driver: bridge# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/volumes:  mongo_data:    driver: local  es_data:    driver: local  graylog_journal:    driver: local

5.运行 “docker-compose up”启动服务, 服务正常启动后就可以通过http://ip:9000 进行访问graylog的Web界面,默认用户admin/admin。

图片

Graylog配置日志收集

Graylog的日志收集通过定义input来完成,在Graylog的Web管理页面的System tab下可以选择定义input来对日志进行收集

图片

进入input页面后选择input的类型,比如定义GELF UDP的input:

图片

选择完成后点击 “Lanch new input”,就会进入详细的input配置,配置完成后保存就可以了

图片

保存后一切正常的话,input就会进入RUNNING状态,这时就可以往这个input里面发送数据了,点击“Stop input”,input就会停止,数据的接收也会停止,“Stop input”会变成“Start input”,需要接受数据的时点击启动就可以了。

图片

配置Docker容器发送数据到Graylog

配置Docker容器发送数据到Graylog时可以在运行docker run命令启动容器的时候加上如下参数:​​​​​​​

docker run --log-driver=gelf \--log-opt gelf-address=udp://graylog服务器地址:12201 \--log-opt tag=<当前容器服务标签,用来供graylog查询的时候进行分类> \<IMAGE> <COMMAND>

具体示例:​​​​​​​

docker run -d \--log-driver=gelf \--log-opt gelf-address=udp://localhost:12201 \--log-opt tag="{{.ImageName}}/{{.Name}}/{{.ID}}" \busybox sh -c 'while true; do echo "Graylog test message"; sleep 10; done;'

如果容器通过docker-compose命令启动可以在docker-compose.yml文件中加入以下配置:​​​​​​​

logging:  driver:"gelf"  options:    gelf-address:"udp://graylog服务器地址:12201"    tag:"容器服务标签"

具体示例:​​​​​​​

version: '2'services:  nginx:    image: nginx:latest    ports:      - "80:80"    logging:      driver: "gelf"      options:        gelf-address: "udp://localhost:12201"        tag: nginx-service

日志发送配置好之后就可以在的Search tab下搜索产看日志信息

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/422262.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】mvcc以及三个重要日志

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;【】数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 MVCC关键概念&#xff1a; MVCC机制的优点&#xff1a; 三个重要的日志&#xff1a; 重做日志&#xff1a; 回滚日志&am…

centos7单节点部署ceph(mon/mgr/osd/mgr/rgw)

使用ceph建议采用多节点多磁盘方式部署&#xff0c;本文章仅作为单节点部署参考&#xff0c;请勿用于生产环境 使用ceph建议采用多节点多磁盘方式部署&#xff0c;本文章仅作为单节点部署参考&#xff0c;请勿用于生产环境 使用ceph建议采用多节点多磁盘方式部署&#xff0c;…

最佳实践:Websocket 长连接状态如何保持

WebSocket 是一种支持通过单个 TCP 连接进行全双工通信的协议&#xff0c;相较于传统的 HTTP 协议&#xff0c;它更适合需要实时交互的应用场景。此协议在现代 Web 应用中扮演着至关重要的角色&#xff0c;尤其是在需要实时更新和通信的场合下维持持久连接。本文将探讨 WebSock…

前端Vue.js中自定义登录界面切换Tabs组件的开发与应用

前端Vue.js中自定义登录界面切换Tabs组件的开发与应用 摘要&#xff1a; 随着Web应用的不断发展&#xff0c;登录界面的设计变得越来越重要。在登录界面中&#xff0c;切换不同的登录方式&#xff08;如账号登录、验证码登录等&#xff09;是一种常见的需求。本文将介绍一款基…

前端【技术类】资源学习网站整理(那些年的小网站)

学习网站整理 值得分享的视频博主&#xff1a;学习网站链接 百度首页的资源收藏里的截图&#xff08;排列顺序没有任何意义&#xff0c;随性而已~&#xff09;&#xff0c;可根据我标注的关键词百度搜索到这些网站呀&#xff0c;本篇末尾会一一列出来&#xff0c;供大家学习呀 …

Laravel框架: Call to a member function connect() on null 异常报错处理

Laravel框架&#xff1a; Call to a member function connect() on null 异常报错处理 Date: 2024.03.01 21:03:11 author: lijianzhan 原文链接: https://learnku.com/laravel/t/63721 问题&#xff1a; local.ERROR: Call to a member function connect() on null {"…

【洛谷 P9240】[蓝桥杯 2023 省 B] 冶炼金属 题解(二分答案)

[蓝桥杯 2023 省 B] 冶炼金属 题目描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V V V&#xff0c; V V V 是一个正整数&#xff0c;这意味着消耗 V V V 个普通金属 O 恰好可以冶炼出一个特殊金属 X&#xff0c;当普…

redis03 八种数据类型

思维草图 String类型 字符串类型&#xff0c;是redis中最简单的存储类型&#xff0c;可以包含任何数据&#xff0c;例如jpg图片或者序列化的对象等&#xff0c;底层都是以字节数组形式存储&#xff0c;最大能存储512MB的数据。 常用命令 KEY命名规范 加前缀&#xff0c;分…

适配器模式 详解 设计模式

适配器模式 适配器模式是一种结构型设计模式&#xff0c;其主要作用是解决两个不兼容接口之间的兼容性问题。适配器模式通过引入一个适配器来将一个类的接口转换成客户端所期望的另一个接口&#xff0c;从而让原本由于接口不匹配而无法协同工作的类能够协同工作。 结构 适配…

Revit-二开之创建FilledRegion-(2)

Revit-二开之创建FilledRegion FilledRegion在Revit注释模块中&#xff0c;具体位置如图所示 图中是Revit2018版本 Revit绘制FilledRegion 在此文中我们通过创建矩形填充区域为例 继上图操作后在修改面板中选择【绘制】中的矩形&#xff0c;如下图所示 在空白的平面视图中拖…

2024年领取腾讯云优惠券的方法有哪些?程序员爆肝整理

腾讯云代金券领取渠道有哪些&#xff1f;腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券&#xff0c;大家也可以在腾讯云百科蹲守代金券&#xff0c;因为腾讯云代金券领取渠道比较分散&#xff0c;腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

springboot基于web的网上摄影工作室的开发与实现论文

网上摄影工作室 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了网上摄影工作室的开发全过程。通过分析网上摄影工作室管理的不足&#xff0c;创建了一个计算机管理网上摄影工作室的方案。文章介绍了网上摄影工…

2024最新算法:河马优化算法(Hippopotamus optimization algorithm,HO)求解23个基准函数,提供MATLAB代码

一、河马优化算法 河马优化算法&#xff08;Hippopotamus optimization algorithm&#xff0c;HO&#xff09;由Amiri等人于2024年提出&#xff0c;该算法模拟了河马在河流或池塘中的位置更新、针对捕食者的防御策略以及规避方法。河马优化算法的灵感来自河马生活中观察到的三…

chatgpt-3的文章生成器有哪些?可以批量生成文章的生成器

GPT-3&#xff08;Generative Pre-trained Transformer 3&#xff09;作为人工智能领域的一项重大突破&#xff0c;开启了新一代的文本生成技术。同时市面上也涌现出了一些GPT-3文章生成器&#xff0c;为用户提供了快速、高效地生成各种类型文章的工具。本文将介绍一些中国的GP…

nest.js使用nest-winston日志一

nest-winston文档 nest-winston - npm 参考&#xff1a;nestjs中winston日志模块使用 - 浮的blog - SegmentFault 思否 安装 cnpm install --save nest-winston winstoncnpm install winston-daily-rotate-file 在main.ts中 import { NestFactory } from nestjs/core; im…

HarmonyOS—编译构建概述

编译构建是将应用/服务的源代码、资源、第三方库等&#xff0c;通过编译工具转换为可直接在硬件设备上运行的二进制机器码&#xff0c;然后再将二进制机器码封装为HAP/APP软件包&#xff0c;并为HAP/APP包进行签名的过程。其中&#xff0c;HAP是可以直接运行在模拟器或真机设备…

【数据结构】实现队列

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解队列&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 队列的概念及结构二. 队列的实现队列的结构体初始化销毁队尾插入队头删除显示第一个节点的值…

C++菱形继承_多态

&#x1f493;博主CSDN主页:麻辣韭菜-CSDN博客&#x1f493;   ⏩专栏分类&#xff1a;http://t.csdnimg.cn/362T6⏪   &#x1f69a;代码仓库:要相信光/C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言…

【Excel PDF 系列】EasyExcel + iText 库实现 Excel 转换 PDF

你知道的越多&#xff0c;你不知道的越多 点赞再看&#xff0c;养成习惯 如果您有疑问或者见解&#xff0c;欢迎指教&#xff1a; 企鹅&#xff1a;869192208 文章目录 前言转换前后效果引入 pom 配置代码实现定义 ExcelDataVo 对象主方法EasyExcel 监听器 前言 最近遇到生成 …

2024第二次培训:win11系统下使用nginx、JDK、mysql搭建基于vue2、java前后端分离的web应用运行环境

一.背景 公司安排了带徒弟的任务&#xff0c;给培训写点材料。前面分开介绍了mysql、jdk、nginx的安装&#xff0c;都只是零星的介绍&#xff0c;只能算零散的学习。学习了有什么用呢&#xff1f;能解决什么问题&#xff1f;能完成什么工作&#xff1f; 今天我们要用之前的几篇…