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

news2024/11/16 19:37:05

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下搜索产看日志信息

图片

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML5+CSS3+JS小实例:右键菜单

实例:右键菜单 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><met…

WPF margin属性学习

一开始margin如下&#xff0c;显示如下&#xff1b; margin有四个值的时候是left、top、right、bottom&#xff1b; 如果是Margin“20,10”&#xff0c;则是指left、right设置为20&#xff0c;top、bottom设置为10&#xff1b; 看上去有些问题&#xff0c;现在top为负&#xf…

Docker数据卷-自定义镜像

一.数据卷 1.1数据卷的基本使用 数据卷是一个特殊的目录&#xff0c;用于在Docker容器中持久化和共享数据。 数据卷的主要特点包括&#xff1a; 数据持久性&#xff1a;数据卷允许您在容器的生命周期之外保持数据的持久性。即使容器被删除&#xff0c;数据卷中的数据依然存在&…

在docker中搭建selenium 爬虫环境(3分钟快速搭建)

1、安装docker 省略 2、拉取镜像 docker pull selenium/standalone-chrome-debug 3、运行容器 docker run -d -p 4444:4444 -p 5900:5900 -v C:\Users\Public\VNC_Donwnloads:/home/seluser/Downloads --memory6g --name selenium_chrome selenium/standalone-chrome-debu…

day 45 ● 70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数

#include<bits/stdc.h> using namespace std; int main(){int n,m;cin>>n>>m;vector<int> dp(33,0);dp[0]1;for(int i0;i<n;i){for(int j1;j<m;j){if(i>j)dp[i]dp[i-j];}}// return dp[n];cout<<dp[n]<<endl;} 当然注意 力扣是 …

【全志D1-H 哪吒开发板】Debian系统安装调教和点灯指南

全志D1-H开发板【哪吒】使用Deabian系统入门 特别说明&#xff1a; 因为涉及到操作较多&#xff0c;博文可能会导致格式丢失 其中内容&#xff0c;会根据后续使用做优化调整 目录&#xff1a; 参考资料固件烧录启动调教点灯问题 〇、参考资料 官方资料 开发板-D1开发板【…

基于InternLM和LangChain搭建自己的知识库

背景 LLM存在一定的局限性&#xff0c;如&#xff1a; 知识时效性受限&#xff1a;如何让LLM能够获取最新的知识专业能力有限&#xff1a;如何打造垂直领域的大模型定制化成本高&#xff1a;如何打造个人专属的LLM应用 正文 为了突破LLM的局限性&#xff0c;目前有两种范式…

flask知识--01

flask介绍 # python 界的web框架&#xff1a; Django&#xff1a;大而全&#xff0c;使用率较高 &#xff1a;https://github.com/django/django -FastAPI&#xff1a;新项目选择使用它&#xff1a;https://github.com/tiangolo/fastapi -flask&#xff1a;公司一些…

数据结构试题练习

(1). 假如队列未满&#xff0c;现有变量data需要入队,请写出表达式; if( (tail1)%SEQLEN ! head ) {seqn[tail] data;tail (tail1)%SEQLEN; } (2). 假如队列未空&#xff0c;现在需要从队列取一个元素并赋值给变量data&#xff0c;请写出表达式; if( head ! tail ) {data se…

蓝桥杯题练习:平地起高楼

题目要求 function convertToTree(regions, rootId "0") {// TODO: 在这里写入具体的实现逻辑// 将平铺的结构转化为树状结构&#xff0c;并将 rootId 下的所有子节点数组返回// 如果不存在 rootId 下的子节点&#xff0c;则返回一个空数组}module.exports convert…

【Python笔记-设计模式】备忘录模式

一、说明 备忘录模式是一种行为设计模式&#xff0c;允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。 (一) 解决问题 主要解决在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在对象之外保存这个状态&#xff0c;以便在需要时恢复对象…

基于vue-office实现docx、xlsx、pdf文件的在线预览

概述 在做项目的时候会遇到docx、xlsx、pdf等文件的在线预览需求&#xff0c;实现此需求可以有多种解决方式&#xff0c;本文基于vue-office实现纯前端的文件预览。 效果 如下图&#xff0c;分别为docx、xlsx、pdf三种类型的文件在线加载后的效果。你也可以访问官方预览网址…

Android进阶之路 - RecyclerView停止滑动后Item自动居中(SnapHelper辅助类)

之前一直没注意 SnapHelper 辅助类的功能&#xff0c;去年的时候看到项目中仅通过俩行代码设置 RecyclerView 后就提升了用户体验&#xff0c;觉得还是很有必要了解一下&#xff0c;尝试过后才发现其 PagerSnapHelper、LinearSnapHelper 子类可以作用于不同场景&#xff0c;且听…

Python matplotlib

目录 1、安装 matplotlib 2、绘制折线图 修改标签文字和线条粗细 校正图形 3、绘制散点图 绘制单点 绘制一系列点 自动计算数据 删除数据点的轮廓 自定义颜色 使用颜色映射 自动保存图表 4、随机漫步 创建 RandomWalk() 类 选择方向 绘制随机漫步图 给点着色 …

EMR StarRocks实战——猿辅导的OLAP演进之路

目录 一、数据需求产生 二、OLAP选型 2.1 需求 2.2 调研 2.3 对比 三、StarRocks的优势 四、业务场景和技术方案 4.1 整体的数据架构 4.2 BI自助/报表/多维分析 4.3 实时事件分析 4.5 直播教室引擎性能监控 4.4 B端业务后台—斑马 4.5 学校端数据产品—飞象星球 4…

【多模态LLM】(task1)Sora相关技术路径(更新中)

note sora虽然未开源&#xff0c;但这个系列是学习常见text-to-video模型背后的原理 文章目录 note一、Sora是什么?二、stable diffusion模型1. 模型架构2. Unet模型 三、视频生成技术四、Sora相关技术和video caption1. Vit模型2. Reference 一、Sora是什么? Sora是text-t…

Freesia项目介绍

项目介绍 这是一个Spring Boot Vue的前后端分离项目&#xff0c;实现的是一个通用的后台管理系统。 框架使用 前端使用了layui-vue和layui-vue-admin&#xff0c;分别提供了组件和前端整体架构的支持。 后端使用Spring Boot框架管理 项目技术使用 前端 Layui-vue、Layui…

淘宝商品数据爬取商品信息采集数据分析API接口详细步骤展示(含测试链接)

01 数据采集 数据采集是数据可视化分析的第一步&#xff0c;也是最基础的一步&#xff0c;数据采集的数量和质量越高&#xff0c;后面分析的准确的也就越高&#xff0c;我们来看一下淘宝网的数据该如何爬取。点此获取淘宝API测试key&密钥 淘宝网站是一个动态加载的网站&a…

飞天使-学以致用-devops知识点3-安装jenkins

文章目录 构建带maven环境的jenkins 镜像安装jenkinsjenkins yaml 文件安装插件jenkins 配置k8s创建用户凭证 构建带maven环境的jenkins 镜像 # 构建带 maven 环境的 jenkins 镜像 docker build -t 192.168.113.122:8858/library/jenkins-maven:jdk-11 .# 登录 harbor docker …

【嵌入式——QT】日期与定时器

日期 QTime&#xff1a;时间数据类型&#xff0c;仅表示时间&#xff0c;如 16:16:16&#xff1b;QDate&#xff1a;日期数据类型&#xff0c;仅表示日期&#xff0c;如2024-1-22&#xff1b;QDateTime&#xff1a;日期时间数据类型&#xff0c;表示日期和时间&#xff0c;如2…