当前位置: 首页 > news >正文

Graylog 部署指南:集中式日志管理平台搭建和使用

Graylog 部署指南:集中式日志管理平台搭建和使用

生产环境有多台服务器时,日志分散在各个机器上,出了问题要逐台 ssh 查 log 文件,既慢又容易遗漏。Graylog 是开源的集中式日志管理平台,可以统一收集、存储、搜索所有服务器的日志,支持结构化日志解析、告警规则、可视化仪表板,是排查线上问题的利器。

架构说明

Graylog 依赖以下组件:

应用/服务器 → GELF/Syslog/Beats → Graylog → Elasticsearch/OpenSearch → 存储 ↓ MongoDB(存配置) ↓ Web UI(搜索、告警、仪表板)

服务器配置建议

日志量CPU内存硬盘
小型(< 1GB/天)2 核4G100GB
中型(< 10GB/天)4 核8G500GB

日志量大时 Elasticsearch 是性能瓶颈,优先给内存。我在 雨云服务器 rainyun+com 开了台 4 核 8G 的服务器专门跑 Graylog,每天处理几百 MB 日志完全没有压力。雨云新用户注册填优惠码2026off能领 5 折优惠券。

Docker Compose 部署

mkdir-p/opt/graylogcd/opt/graylog

生成密码哈希(用于 admin 账户密码):

echo-n"你的管理员密码"|sha256sum# 记录输出的哈希值

生成 Secret:

openssl rand-hex32# 记录输出的随机字符串
cat>/opt/graylog/docker-compose.yml<<'COMPOSE' version: "3.8" services: mongodb: image: mongo:6.0 container_name: graylog_mongo volumes: - mongo_data:/data/db restart: unless-stopped opensearch: image: opensearchproject/opensearch:2.12.0 container_name: graylog_opensearch environment: - OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g - bootstrap.memory_lock=true - discovery.type=single-node - plugins.security.disabled=true - action.auto_create_index=false ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 volumes: - opensearch_data:/usr/share/opensearch/data restart: unless-stopped graylog: image: graylog/graylog:6.0 container_name: graylog environment: - GRAYLOG_PASSWORD_SECRET=上面生成的随机字符串 - GRAYLOG_ROOT_PASSWORD_SHA2=上面生成的SHA256哈希 - GRAYLOG_HTTP_EXTERNAL_URI=https://log.你的域名.com/ - GRAYLOG_ELASTICSEARCH_HOSTS=http://opensearch:9200 - GRAYLOG_MONGODB_URI=mongodb://mongodb:27017/graylog - GRAYLOG_TIMEZONE=Asia/Shanghai - TZ=Asia/Shanghai ports: - "9000:9000" # Web UI - "12201:12201/udp" # GELF UDP - "12201:12201/tcp" # GELF TCP - "5044:5044" # Beats - "514:514/udp" # Syslog UDP depends_on: - mongodb - opensearch volumes: - graylog_data:/usr/share/graylog/data restart: unless-stopped volumes: mongo_data: opensearch_data: graylog_data: COMPOSEdockercompose up-d

启动需要等待约 1-2 分钟,OpenSearch 初始化较慢:

dockercompose logs-fgraylog# 看到 Graylog server up and running 就好了

配置 HTTPS(Caddy)

sudotee-a/etc/caddy/Caddyfile<<'EOF' log.你的域名.com { reverse_proxy localhost:9000 } EOFsudosystemctl reload caddy

初始配置

访问https://log.你的域名.com,用admin+ 你设置的密码登录。

创建 Input(接收日志的入口)

System → Inputs → 选择类型 → Launch

常用 Input 类型:

  • GELF UDP:推荐,支持结构化日志,低开销
  • Syslog UDP:接收系统日志
  • Beats:配合 Filebeat 收集文件日志

配置 GELF UDP Input:

  • Bind address:0.0.0.0
  • Port:12201
  • 点击 Save

发送日志到 Graylog

方法一:GELF(推荐)

Docker 容器日志

# docker-compose.yml 里的服务services:myapp:image:myapplogging:driver:"gelf"options:gelf-address:"udp://Graylog服务器IP:12201"tag:"myapp"

Python 应用

pip install graypyimportloggingimportgraypy logger=logging.getLogger('myapp')handler=graypy.GELFUDPHandler('Graylog服务器IP',12201)logger.addHandler(handler)logger.info("应用启动",extra={'user_id':123,'request_id':'abc-123'})

Node.js 应用

npm install winston-gelf-transporterconstwinston=require('winston');constWinstonGelf=require('winston-gelf-transporter');constlogger=winston.createLogger({transports:[newWinstonGelf({gelfPro:{adapterName:'udp',adapterOptions:{host:'Graylog服务器IP',port:12201}}})]});

方法二:Filebeat 收集文件日志

# 在需要收集日志的服务器上安装 Filebeatcurl-fsSLhttps://artifacts.elastic.co/GPG-KEY-elasticsearch|sudoapt-keyadd-echo"deb https://artifacts.elastic.co/packages/8.x/apt stable main"|sudotee/etc/apt/sources.list.d/elastic-8.x.listsudoaptupdate&&sudoaptinstallfilebeatsudonano/etc/filebeat/filebeat.yml
filebeat.inputs:-type:logenabled:truepaths:-/var/log/nginx/*.log-/opt/myapp/logs/*.logfields:service:myappenvironment:productionoutput.logstash:hosts:["Graylog服务器IP:5044"]
sudosystemctlenable--nowfilebeat

方法三:Syslog

# 把系统日志发送到 Graylogecho"*.* @Graylog服务器IP:514"|sudotee-a/etc/rsyslog.confsudosystemctl restart rsyslog

搜索日志

Graylog 使用类 Lucene 语法搜索:

# 全文搜索 error # 按字段搜索 level:ERROR AND source:myapp # 时间范围 timestamp:[2026-04-01 TO 2026-04-29] # 组合条件 source:nginx AND (status:500 OR status:502) # 排除 NOT message:health_check

创建告警

Alerts → Event Definitions → Create Event Definition

配置示例:5 分钟内错误日志超过 10 条触发告警:

条件:Count 搜索:level:ERROR 时间窗口:5 分钟 阈值:> 10 通知方式:Email / Webhook(可以接 Slack、钉钉)

Webhook 告警接微信/钉钉

Notifications → Create Notification → HTTP Notification URL: 钉钉机器人 Webhook URL
{"msgtype":"text","text":{"content":"告警:${event.message}\n时间:${event.timestamp}"}}

Graylog 的价值在于把原来分散的日志统一到一个地方,配合告警规则,很多线上问题在用户报告之前就能发现。日志保留 30 天,出了问题可以回溯历史,比临时 ssh 上去翻 log 文件效率高很多。

http://www.jsqmd.com/news/743362/

相关文章:

  • 土豆录屏 电脑录屏软件 支持4K 120帧率画质
  • 3步突破限制:用MiGPT将小爱音箱改造成你的专属AI语音助手
  • Python电商风控决策引擎构建全链路(从Kafka流接入到规则引擎热更新)
  • DownGit终极指南:三步搞定GitHub精准下载的完整解决方案
  • AMD Ryzen系统管理单元调试工具SMUDebugTool终极指南:免费开源硬件调节利器
  • 如何高效使用OBS Multi RTMP插件:完整的多平台直播指南
  • 5步快速上手《英雄联盟》专业视频创作工具:League Director终极指南
  • 南阳起重机械厂的起重链多少钱? - 工业品牌热点
  • WarcraftHelper:5分钟免费解锁魔兽争霸3完整游戏体验的终极插件
  • 百度网盘直链解析工具深度架构解析:突破限速的技术实践
  • EhViewer架构深度解析:Material Design与高效缓存的技术实现
  • 艾依家居用品员工素质怎样? - 工业品牌热点
  • 终极VLC播放器美化指南:5款免费VeLoCity皮肤一键焕新界面体验
  • Nintendo Switch NAND管理终极指南:NxNandManager完整使用教程
  • SillyTavern脚本自动化终极指南:从宏替换到高级STscript命令深度解析
  • Blender 3MF插件:打通3D打印工作流的终极桥梁
  • 移动端3D高斯渲染优化:实现60FPS高保真实时渲染
  • 3分钟掌握深蓝词库转换工具:30+输入法格式互转完整指南
  • 从2048游戏实现学习前端状态管理与算法设计
  • AI代理MCP工具描述优化与性能提升实践
  • 崩坏星穹铁道自动化神器:三月七小助手终极指南
  • DS4Windows完全指南:让PS手柄在Windows电脑上重获新生
  • 量子数字签名与阴影重叠协议技术解析
  • DS4Windows终极指南:3步让PS手柄在Windows上获得完美游戏体验
  • 2026年高考美术教学费用,九度美术艺考培训学校推荐 - 工业品牌热点
  • AO3镜像站终极指南:简单三步免费访问全球同人创作宝库
  • 机器学习中的Grokking现象解析与优化策略
  • 如何用League Director制作专业级《英雄联盟》高光集锦:5步完整指南
  • Zotero Style插件完整指南:打造个性化文献管理体验
  • 保姆级教程:在Vitis里用MicroBlaze软核读取FPGA芯片温度和电压(附完整C代码)