官方链接:
离线安装的核心思路:在有网络的机器上提前下载所有安装包,再传输到目标离线服务器安装。
Graylog 7.0 需要以下组件版本兼容: graylog
| 组件 | 版本要求 |
|---|---|
| Ubuntu | 22.04 或 24.04 |
| MongoDB | 7.x~ 8.0.x |
| OpenSearch | 1.1.x~ 2.19.4(禁止安装 3.0+) |
⚠️ 警告:不要安装或升级到 OpenSearch 3.0+,它不被支持,会导致实例崩溃。 graylog
bash
# 导入 GPG Key 并下载 MongoDB deb 包
wget https://repo.mongodb.org/apt/ubuntu/dists/jammy/mongodb-org/8.0/multiverse/binary-amd64/mongodb-org-server_8.0.x_amd64.deb
# 建议使用 apt-get download 批量下载:
sudo apt-get install --download-only mongodb-org
# 包保存在 /var/cache/apt/archives/
bash
# 示例下载 2.15.0(推荐稳定版本)
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.15.0/opensearch-2.15.0-linux-x64.deb
bash
# 先下载 repo 配置包
wget https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb
# 配置 repo 后 download-only
sudo dpkg -i graylog-7.0-repository_latest.deb
sudo apt-get update
sudo apt-get install --download-only graylog-server
# 包保存在 /var/cache/apt/archives/
将以上所有 .deb 文件打包传输到离线服务器(例如用 scp 或 U 盘)。
可以使用以下命令设置时区: graylog
bash
sudo timedatectl set-timezone UTC
将下载好的 .deb 包复制到服务器后:
bash
# 安装所有 MongoDB 相关包(注意依赖顺序)
sudo dpkg -i mongodb-org-*.deb
# 若有依赖缺失,使用本地源修复
sudo apt-get install -f
安装完成后,启用并启动 MongoDB 服务: graylog
bash
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl restart mongod.service
sudo systemctl --type=service --state=active | grep mongod
锁定版本防止误升级:
bash
sudo apt-mark hold mongodb-org
bash
# 直接安装 deb 包(离线方式跳过 GPG 验证)
sudo OPENSEARCH_INITIAL_ADMIN_PASSWORD=<你的密码> dpkg -i opensearch-2.15.0-linux-x64.deb
密码要求:OpenSearch 2.12 及以上版本要求设置
OPENSEARCH_INITIAL_ADMIN_PASSWORD,密码最少8位,需包含大写字母、小写字母、数字和特殊字符。 graylog
编辑配置文件: graylog
bash
sudo nano /etc/opensearch/opensearch.yml
写入以下配置:
yaml
cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
编辑 JVM 配置,将 Xms 和 Xmx 设置为系统内存的一半: graylog
bash
sudo nano /etc/opensearch/jvm.options
-Xms2g
-Xmx2g
在运行时配置内核参数: graylog
bash
sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
启用并启动服务: graylog
bash
sudo systemctl daemon-reload
sudo systemctl enable opensearch.service
sudo systemctl start opensearch.service
sudo systemctl status opensearch.service
锁定版本:
bash
sudo apt-mark hold opensearch
bash
# 先安装 repo 配置 deb(即使没网,dpkg 仍可安装包结构)
sudo dpkg -i graylog-7.0-repository_latest.deb
# 直接安装离线 deb 包
sudo dpkg -i graylog-server_*.deb
sudo apt-get install -f # 修复可能的依赖
锁定版本:
bash
sudo apt-mark hold graylog-server
编辑 Graylog 配置文件: graylog
bash
sudo nano /etc/graylog/server/server.conf
必须配置以下两项,否则 Graylog 无法启动:
① 生成 password_secret:
bash
< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
将输出结果填入 password_secret = <生成的值>
② 生成 root_password_sha2(管理员密码的 SHA256):
bash
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
将输出结果填入 root_password_sha2 = <哈希值>
③ 设置 http_bind_address 为服务器实际 IP: graylog
bash
sudo sed -i 's/#http_bind_address = 127.0.0.1.*/http_bind_address = 0.0.0.0:9000/g' /etc/graylog/server/server.conf
④ 配置 OpenSearch 连接地址(elasticsearch_hosts),如未配置将无法登录: graylog
elasticsearch_hosts = http://127.0.0.1:9200
启用并启动 Graylog 服务: graylog
bash
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl --type=service --state=active | grep graylog
浏览器访问:
http://<服务器IP>:9000
使用 admin 和你设置的密码登录即可。
本指南不包含安全配置,在对外提供服务或接入生产数据前,需要对整个 Graylog 技术栈进行安全加固,包括:限制网络访问、禁止内部服务暴露到公网、启用加密、配置身份认证和授权。 graylog
本指南安装的是单节点 Core 集群,由一个 Graylog 节点、一个 MongoDB 节点和一个 Data Node 组成。 graylog
整个 Graylog 技术栈包含三个服务:MongoDB、Graylog Data Node、Graylog Server。 graylog
⚠️ 与旧方案的关键区别:新版本使用 Graylog Data Node 内置管理 OpenSearch,不需要单独安装 OpenSearch!
bash
# 添加源
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] \
https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | \
sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
sudo apt-get update
# 仅下载不安装,包保存到 /var/cache/apt/archives/
sudo apt-get install --download-only mongodb-org
bash
# 添加 Graylog 7.0 源
wget https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb
sudo dpkg -i graylog-7.0-repository_latest.deb
sudo apt-get update
# 仅下载
sudo apt-get install --download-only graylog-datanode
sudo apt-get install --download-only graylog-server
# 企业版用 graylog-enterprise 替代 graylog-server
bash
sudo apt-get install --download-only gnupg curl openssl
将 /var/cache/apt/archives/ 下所有 .deb 文件及 graylog-7.0-repository_latest.deb 打包,通过 U 盘或内网传输到目标服务器。
建议存储使用 XFS 文件系统,并确保所有必要端口已开放。 graylog
设置时区:
bash
sudo timedatectl set-timezone UTC
MongoDB 作为 Graylog 技术栈的一部分,用作系统的元数据数据库。 graylog
bash
# 将下载的 deb 包全部放入同一目录,例如 ~/packages/
cd ~/packages/
# 安装 MongoDB
sudo dpkg -i mongodb-org*.deb
# 如有依赖问题
sudo apt-get install -f
配置 MongoDB 网络监听
默认情况下 MongoDB 只监听本地,必须修改 bindIp 或 bindIpAll 配置,使其监听网络接口。 graylog
bash
sudo nano /etc/mongod.conf
选择以下一种配置方式写入:
yaml
# 方式一:监听所有接口(单节点推荐)
net:
port: 27017
bindIpAll: true
# 方式二:绑定指定 IP
net:
port: 27017
bindIp: 192.168.50.71
# 方式三:绑定主机名
net:
port: 27017
bindIp: graylog01
启动 MongoDB
启用并启动 MongoDB 服务: graylog
bash
sudo systemctl daemon-reload
sudo systemctl enable mongod.service
sudo systemctl start mongod.service
锁定版本防止误升级:
bash
sudo apt-mark hold mongodb-org
Data Node 是 Graylog 架构中负责日志采集、处理和索引的组件,它管理与 OpenSearch 的通信,用于日志的存储和查询。 graylog
⚠️ 不要单独安装 OpenSearch! Data Node 会自动管理它。
bash
# 先安装 repo 配置包(离线环境下仅用于注册包结构)
sudo dpkg -i graylog-7.0-repository_latest.deb
# 安装 Data Node
sudo dpkg -i graylog-datanode*.deb
# 如有依赖问题
sudo apt-get install -f
配置 vm.max_map_count
确保 vm.max_map_count 设置不低于 262144。 graylog
bash
# 查看当前值
cat /proc/sys/vm/max_map_count
# 永久生效设置
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.d/99-graylog-datanode.conf
sudo sysctl --system
# 确认生效
cat /proc/sys/vm/max_map_count
生成 password_secret
这是一个用于加密系统内敏感数据的随机安全字符串: graylog
bash
openssl rand -hex 32
请务必保存好这个输出值!
配置 Data Node
bash
sudo nano /etc/graylog/datanode/datanode.conf
填入以下关键配置:
properties
# 1. 填入上面生成的 password_secret
password_secret = <your_generated_secret>
# 2. 配置 MongoDB 连接(替换为实际主机名或IP)
mongodb_uri = mongodb://127.0.0.1:27017/graylog
# 3. 设置堆内存(推荐为系统内存的一半,最大 31GB)
# 注意:此项默认不存在,需手动添加!
opensearch_heap = 8g
opensearch_heap这个配置项默认不包含在datanode.conf中,必须手动添加到文件中。 graylog
启动 Data Node
bash
sudo systemctl daemon-reload
sudo systemctl enable graylog-datanode.service
sudo systemctl start graylog-datanode
bash
# 安装 Graylog Server(开源版)
sudo dpkg -i graylog-server*.deb
# 企业版使用 graylog-enterprise
# sudo dpkg -i graylog-enterprise*.deb
sudo apt-get install -f
生成 root_password_sha2(管理员密码的 SHA256 哈希)
这是 Graylog 界面 root 管理员账户的密码,务必记录此密码,后续登录需要用到: graylog
bash
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
配置 Graylog Server
bash
sudo nano /etc/graylog/server/server.conf
修改以下关键配置项:
properties
# 1. 与 Data Node 使用完全相同的 password_secret(必须一致!)
password_secret = <与datanode相同的secret>
# 2. 管理员密码的 SHA256 值
root_password_sha2 = <上面生成的哈希值>
# 3. Web 界面监听地址
http_bind_address = 0.0.0.0:9000
# 4. 调整日志 Journal 设置(按实际日志量设置)
message_journal_max_age = 72h
message_journal_max_size = 90gb
配置 JVM 堆内存
打开 graylog-server 文件,将堆内存设置为系统内存的一半,最大 16 GB,推荐最小值和最大值设为相同: graylog
bash
sudo nano /etc/default/graylog-server
GRAYLOG_SERVER_JAVA_OPTS="-Xms4g -Xmx4g -server -XX:+UseG1GC -XX:-OmitStackTraceInFastThrow"
启动 Graylog Server
bash
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
⚠️ 不要用你之前生成的密码第一次登录!第一次必须使用 Graylog 服务日志文件中的初始临时凭据完成预检登录,预检完成后才能使用你设置的密码正常登录。 graylog
bash
# 查看初始登录凭据
sudo journalctl -u graylog-server -f | grep -i "password\|login\|preflight"
浏览器访问:http://<服务器IP>:9000,使用日志中的临时凭据完成预检配置后,再用 admin + 你设置的密码正常登录。
| 系统内存 | Data Node 堆内存 (opensearch_heap) | Graylog 堆内存 (-Xms/-Xmx) |
|---|---|---|
| 8 GB | 4g | 2g |
| 16 GB | 8g | 4g |
| 32 GB | 16g | 8g |
| 64 GB | 31g(上限) | 16g(上限) |
本指南不包含安全配置,在正式对外提供服务或接入生产数据之前,需要对整个 Graylog 技术栈进行安全加固,包括:限制网络访问、禁止内部服务暴露到公网、启用加密、配置身份认证和授权。 graylog
安装完成后启动失败,报错的后续处理:
先看具体报错原因:
bash
sudo journalctl -u graylog-datanode -n 100 --no-pager
错误原因很明确,关键报错是:
MongoSocketOpenException / MongoTimeoutException / ConnectException
DataNode 无法连接到 MongoDB。 原因就是之前发现的问题:MongoDB 只监听 127.0.0.1:27017,而 DataNode 的配置里连接地址可能对不上。
bash
sudo nano /etc/mongod.conf
找到 net: 部分,修改为:
yaml
net:
port: 27017
bindIpAll: true
重启 MongoDB:
bash
sudo systemctl restart mongod
# 确认现在监听所有接口
sudo ss -tlnp | grep 27017
正常应该显示 0.0.0.0:27017 而不是 127.0.0.1:27017。
bash
sudo grep 'mongodb_uri' /etc/graylog/datanode/datanode.conf
确保值是:
mongodb_uri = mongodb://127.0.0.1:27017/graylog
如果显示的是主机名(如 graylog01),改成 127.0.0.1(因为 MongoDB 和 DataNode 在同一台机器上)。
bash
sudo systemctl restart graylog-datanode
# 实时观察日志,等待约 30 秒
sudo journalctl -u graylog-datanode -f
不再出现 ConnectException / MongoTimeoutException 就说明修复成功,DataNode 会开始正常初始化 OpenSearch。
执行以下命令:
bash
sudo journalctl -u graylog-datanode -n 200 --no-pager 2>&1 | grep -E "ERROR|WARN|Exception|error|failed|Cannot|Unable" | tail -30
同时查看 DataNode 自己的日志文件:
bash
sudo ls /var/log/graylog-datanode/
sudo tail -100 /var/log/graylog-datanode/datanode.log 2>/dev/null || \
sudo find /var/log -name "*.log" | xargs grep -l "datanode" 2>/dev/null
还有,检查一下配置文件的关键项是否都齐全:
bash
sudo grep -E "password_secret|mongodb_uri|opensearch_heap" /etc/graylog/datanode/datanode.conf
执行以上三条命令,查看可能的问题。
看到如下消息说明正常了:
Graylog DataNode datanode up and running.
Started REST API at 0.0.0.0:8999
第一步:获取首次登录的临时凭据
bash
sudo grep -i "preflight\|initial.*password\|admin.*password" /var/log/graylog-server/server.log | tail -20
或者:
bash
sudo journalctl -u graylog-server --no-pager | grep -i "preflight\|password\|token" | tail -20
第二步:确认所有服务状态
bash
sudo systemctl status graylog-server graylog-datanode mongod | grep -E "Active|running"
第三步:浏览器访问
打开:http://*.*.*.*:9000
首次进入会跳转到 Preflight 界面,使用日志中找到的临时密码登录,按向导完成 DataNode 证书配置即可。
继续处理问题:
现了两个问题,逐一解决:
Graylog Server 也在报 MongoDB is not available,说明 server.conf 里的 mongodb 地址也需要检查:
bash
sudo grep 'mongodb_uri' /etc/graylog/server/server.conf
如果是空的或者地址不对,修改:
bash
sudo nano /etc/graylog/server/server.conf
找到 mongodb_uri 改为:
mongodb_uri = mongodb://*.*.*.*:27017/graylog
改完重启:
bash
sudo systemctl restart graylog-server
端口列表里只有 8999(DataNode),没有 9000(Graylog Server)。Graylog Server 可能因为 MongoDB 连不上而还没完全启动。等第一个问题修复后重启再检查。
日志里找到了:
username: admin
password: pmtNCIhymz
等 Graylog Server 正常起来、9000 端口出现后,用这个账号登录 Preflight 界面:
http://*.*.*.*:9000
先执行修复 MongoDB URI 的步骤,然后:
bash
# 确认9000端口出现
sudo ss -tlnp | grep 9000
# 实时观察 server 日志
sudo journalctl -u graylog-server -f
后续:
采集windows和ubuntu系统的日志
推荐用 Graylog Sidecar + Filebeat 方案,两种系统都支持,在 Graylog 界面统一管理所有采集端。
Beats Input0.0.0.05044bash
# 服务器上确认端口已监听
sudo ss -tlnp | grep 5044
sidecar在有网络的机器上下载(离线环境需提前准备):
bash
wget https://github.com/Graylog2/collector-sidecar/releases/download/1.5.0/collector-sidecar_1.5.0-1_amd64.deb
传到目标服务器安装:
bash
sudo dpkg -i collector-sidecar_1.5.0-1_amd64.deb
编辑配置文件:
bash
sudo nano /etc/graylog/sidecar/sidecar.yml
修改以下内容:
yaml
server_url: "http://*.*.*.*:9000/api/"
server_api_token: "你的API Token"
node_name: "ubuntu-server-01"
update_interval: 10
send_status: true
启动服务:
bash
sudo graylog-sidecar -service install
sudo systemctl enable graylog-sidecar
sudo systemctl start graylog-sidecar
在有网络的机器上下载:
https://github.com/Graylog2/collector-sidecar/releases/download/1.5.0/collector-sidecar_1.5.0-1_windows_amd64.exe
以管理员身份运行 PowerShell,执行安装:
powershell
.\collector-sidecar_1.5.0-1_windows_amd64.exe /S
编辑配置文件(路径:C:\Program Files\Graylog\sidecar\sidecar.yml):
yaml
server_url: "http://*.*.*.*:9000/api/"
server_api_token: "你的API Token"
node_name: "windows-server-01"
update_interval: 10
send_status: true
注册并启动服务:
powershell
& "C:\Program Files\Graylog\sidecar\graylog-sidecar.exe" -service install
Start-Service graylog-sidecar
节点注册成功后(约 30 秒):
Linux Syslog 或 Windows EventLogfilebeatUbuntu 采集配置模板:
yaml
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
output.logstash:
hosts: ["*.*.*.*:5044"]
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog
- /var/log/auth.log
- /var/log/*.log
Windows 采集配置模板:
yaml
fields_under_root: true
fields.collector_node_id: ${sidecar.nodeName}
output.logstash:
hosts: ["*.*.*.*:5044"]
filebeat.inputs:
- type: wineventlog
enabled: true
event_logs:
- name: Application
- name: System
- name: Security
进入 Search 页面,时间范围选 Last 5 minutes,能看到来自对应主机名的日志即为成功 ✅
| 文件 | 下载地址 |
|---|---|
| Ubuntu/Debian 安装包 | https://github.com/Graylog2/collector-sidecar/releases/download/1.5.0/collector-sidecar_1.5.0-1_amd64.deb |
| Windows 安装包 | https://github.com/Graylog2/collector-sidecar/releases/download/1.5.0/collector-sidecar_1.5.0-1_windows_amd64.exe |
Filebeat 版本建议用 8.x,与 Graylog 7.0 兼容。
| 文件 | 下载地址 |
|---|---|
| Ubuntu/Debian | https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-amd64.deb |
| Windows | https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-windows-x86_64.zip |
Linux/Mac 上运行:
bash
mkdir graylog-sidecar-offline && cd graylog-sidecar-offline
# Sidecar
wget https://github.com/Graylog2/collector-sidecar/releases/download/1.5.0/collector-sidecar_1.5.0-1_amd64.deb
wget https://github.com/Graylog2/collector-sidecar/releases/download/1.5.0/collector-sidecar_1.5.0-1_windows_amd64.exe
# Filebeat
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-amd64.deb
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.17.0-windows-x86_64.zip
ls -lh
打包传输:
bash
tar -czvf graylog-sidecar-offline.tar.gz graylog-sidecar-offline/
bash
# 1. 先装 Filebeat
sudo dpkg -i filebeat-8.17.0-amd64.deb
# 2. 再装 Sidecar
sudo dpkg -i collector-sidecar_1.5.0-1_amd64.deb
1. 解压 filebeat-8.17.0-windows-x86_64.zip
解压到 C:\Program Files\Graylog\sidecar\filebeat\
2. 运行 collector-sidecar_1.5.0-1_windows_amd64.exe(管理员身份)
⚠️ Windows 上 Sidecar 需要知道 Filebeat 的路径,安装完成后在 Graylog 界面 System → Sidecars → Configuration 里配置 Filebeat 可执行文件路径为:
C:\Program Files\Graylog\sidecar\filebeat\filebeat.exe
graylog-sidecar-offline/
├── collector-sidecar_1.5.0-1_amd64.deb # Ubuntu Sidecar
├── collector-sidecar_1.5.0-1_windows_amd64.exe # Windows Sidecar
├── filebeat-8.17.0-amd64.deb # Ubuntu Filebeat
└── filebeat-8.17.0-windows-x86_64.zip # Windows Filebeat