graylog部署核心是严格匹配版本与逐层验证依赖:graylog 4.x需openjdk 11,5.x/6.x强制java 17;elasticsearch/opensearch须禁用xpack.security并设single-node;mongodb连接串必须含数据库名(如/graylog);配置错误将导致静默失败。

Linux 环境部署 Graylog 实现集中日志分析,核心不是“装完就用”,而是理清依赖链、匹配版本、逐层验证。关键在三点:Java 与 Graylog 大版本严格对应、Elasticsearch/OpenSearch 必须关闭安全模块并设为单节点、MongoDB 连接串必须带数据库名(如 mongodb://localhost:27017/graylog)。跳过任一环节,服务大概率静默失败,只留一句模糊报错。
组件版本与系统准备
先确认你的 Graylog 目标版本,再反向锁定依赖:
- Graylog 4.x(如 4.5)→ 必须用 OpenJDK 11;卸载所有旧 JDK 后,从 Adoptium 安装 temurin-11-jdk,
java -version输出需明确含11. - Graylog 5.x 或 6.x(如当前 6.0)→ 强制要求 Java 17;同样建议用 temurin-17-jdk,避免
UnsupportedClassVersionError - 后端存储:推荐 OpenSearch 2.12+(替代 Elasticsearch OSS),或 Elasticsearch 7.17/8.11;MongoDB 4.4+ 即可
- 系统资源:日志量<1GB/天 → 2核4G 足够;中型环境(<10GB/天)建议 4核8G,内存优先分给 OpenSearch(如
-Xms2g -Xmx2g)
Docker Compose 一键部署(推荐新手)
比手动装包更可控,避免系统级配置冲突。以 Graylog 6.0 + OpenSearch 2.12 为例:
- 生成密钥:
echo -n "your_admin_password" | sha256sum得到 root 密码哈希;openssl rand -hex 32得到 secret - 创建
/opt/graylog/docker-compose.yml,确保 OpenSearch 的discovery.type=single-node和plugins.security.disabled=true显式设置 - 启动:
cd /opt/graylog && docker-compose up -d - 验证:等 2–3 分钟后,
docker-compose logs graylog | grep "Started Graylog"出现即成功;浏览器访问http://服务器IP:9000
输入配置与日志接入
Web 界面登录后,重点配好“输入(Inputs)”,这是日志进来的入口:
- GELF UDP(端口 12201):适合 Filebeat、Log4j GELF Appender、Shairport Sync 等结构化日志源
- Syslog UDP/TCP(端口 514):适配 Linux
rsyslog、网络设备原生 syslog;在/etc/rsyslog.d/50-graylog.conf加一行:*.* @your-graylog-ip:514;RSYSLOG_ForwardFormat - Beats Input(端口 5044):对接 Filebeat、Winlogbeat;需在 Filebeat 配置中设
output.graylog: hosts: ["your-graylog-ip:5044"] - 务必勾选 “Bind address: 0.0.0.0”,否则外部机器无法连接
常见启动失败排查路径
Graylog 启动失败,别猜,按顺序查:
- 查 OpenSearch:
curl http://localhost:9200/_cat/health?v—— 状态不是green?检查elasticsearch.yml是否关了xpack.security、是否设了single-node - 查 MongoDB:
mongo --eval "db.getSiblingDB('graylog').users.find().count()"—— 返回 0?说明mongodb_uri没带库名,或权限不对 - 查 Graylog 日志:
docker-compose logs graylog | tail -20或journalctl -u graylog-server -n 50—— 关键线索常在最后 5 行,比如No root user configured就是漏了root_password_sha2 - 时间同步:所有日志源和 Graylog 服务器必须启用
chronyd或ntpd指向同一 NTP 服务器,否则搜索时序混乱











