news 2026/5/3 8:27:25

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 文件效率高很多。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 8:27:22

3分钟掌握深蓝词库转换工具:30+输入法格式互转完整指南

3分钟掌握深蓝词库转换工具&#xff1a;30输入法格式互转完整指南 【免费下载链接】imewlconverter ”深蓝词库转换“ 一款开源免费的输入法词库转换程序 项目地址: https://gitcode.com/gh_mirrors/im/imewlconverter 你是否曾因更换操作系统或输入法而烦恼多年积累的词…

作者头像 李华
网站建设 2026/5/3 8:25:36

OralGPT-Omni:多模态AI在口腔医疗诊断中的应用与优化

1. 项目背景与行业痛点口腔医疗领域长期面临专业人才短缺与知识更新滞后的问题。根据世界牙科联盟统计&#xff0c;全球约有35亿人患有口腔疾病&#xff0c;但每10万人口仅对应约60名牙科专业人员。传统诊疗模式中&#xff0c;患者咨询、初步诊断、治疗方案沟通等环节高度依赖医…

作者头像 李华
网站建设 2026/5/3 8:21:11

DownGit终极指南:三步搞定GitHub精准下载的完整解决方案

DownGit终极指南&#xff1a;三步搞定GitHub精准下载的完整解决方案 【免费下载链接】DownGit Create GitHub Resource Download Link 项目地址: https://gitcode.com/gh_mirrors/do/DownGit 你是否曾为下载GitHub上的单个配置文件而不得不克隆整个仓库&#xff1f;是否…

作者头像 李华
网站建设 2026/5/3 8:20:06

Unity游戏实时翻译神器:XUnity.AutoTranslator完全指南

Unity游戏实时翻译神器&#xff1a;XUnity.AutoTranslator完全指南 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 你是否曾因为语言障碍而无法享受心仪的Unity游戏&#xff1f;是否厌倦了等待官方汉化却…

作者头像 李华