离线安装Graylog

Published on with 0 views and 0 comments

✅ CPU 指令集确认结果

您的 CPU 完全支持 AVX 指令集!

从输出中可以明确看到:

  • avx - 基础 AVX 支持
  • avx2 - 第二代 AVX 支持
  • avx_vnni - AVX 向量神经网络指令(相当新)

您的 CPU 是 13代 Intel i7-1355U(2023年初发布),这是非常新的处理器,不仅支持 AVX,还支持 AVX2 和 AVX-VNNI。

结论:可以放心使用 MongoDB 8.0(最新版本),无需降级到 7.0。实际上,您甚至可以运行任何需要 AVX-512 的现代软件。

🔒 完全物理隔离环境的 Graylog 7.0 离线安装完整方案

既然 CPU 完全没问题,我们采用最新且最稳定的组件组合

组件版本选择说明
Graylog7.0.x最新稳定版
Data Node7.0.x包含 OpenSearch 2.x
MongoDB8.0.x您的 CPU 完全支持
Java21Data Node 自带

📦 离线包完整下载清单(在联网机器上执行)

由于是完全物理隔离环境,建议创建一个完整的离线仓库

方案一:使用 apt-mirror 创建完整镜像(推荐,一劳永逸)

# 在联网的 Ubuntu 24.04 机器上

# 1. 安装 apt-mirror
sudo apt-get install apt-mirror -y

# 2. 配置镜像源
sudo tee /etc/apt/mirror.list << 'EOF'
set base_path    /var/spool/apt-mirror
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript $base_path/var/clean.sh
set defaultarch  amd64
set postmirror_script $base_path/var/postmirror.sh
set run_postmirror 0

# Ubuntu 24.04 官方源
deb https://archive.ubuntu.com/ubuntu noble main restricted universe multiverse
deb https://archive.ubuntu.com/ubuntu noble-updates main restricted universe multiverse
deb https://archive.ubuntu.com/ubuntu noble-security main restricted universe multiverse

# Graylog 官方源
deb https://packages.graylog2.org/repo/debian stable 7.0

# MongoDB 官方源
deb https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse

# 清理策略
clean https://archive.ubuntu.com/ubuntu
clean https://packages.graylog2.org/repo/debian
clean https://repo.mongodb.org/apt/ubuntu
EOF

# 3. 开始同步(需要大量磁盘空间,约50-80GB)
sudo apt-mirror

# 4. 同步完成后,打包整个镜像目录
sudo tar -czf ubuntu-graylog-offline-repo.tar.gz /var/spool/apt-mirror

方案二:精确下载最小依赖集(省空间,约2-3GB)

如果您磁盘空间有限,只下载必需的包:


# 创建下载目录
mkdir -p ~/graylog-offline && cd ~/graylog-offline

# 添加所有需要的源
wget https://packages.graylog2.org/repo/packages/graylog-7.0-repository_latest.deb
sudo dpkg -i graylog-7.0-repository_latest.deb

# 添加 MongoDB 8.0 源
wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] 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

# 下载所有核心包和依赖(使用 --recurse 确保完整依赖树)
apt-get download \
  graylog-server \
  graylog-datanode \
  mongodb-org \
  mongodb-org-database \
  mongodb-org-database-tools-extra \
  mongodb-org-mongos \
  mongodb-org-server \
  mongodb-org-shell \
  mongodb-org-tools

# 下载依赖包(自动获取所有依赖)
for pkg in graylog-server graylog-datanode mongodb-org; do
  apt-get --recurse --no-recommends -y --print-uris install $pkg | \
    grep -oP "http[^']+\.deb" >> urls.txt
done

# 去重并下载
sort -u urls.txt -o urls.txt
wget -i urls.txt -P ./packages/

# 同时下载 Java(虽然 Data Node 自带,但某些工具可能需要)
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.deb

# 打包
tar -czf graylog-full-offline.tar.gz packages/ *.deb

🖥️ 离线服务器安装步骤(详细版)

第 1 步:传输和准备

# 假设您已将打包文件传输到离线服务器(通过 U盘/DVD)
# 或者使用lrzsz
# 解压到专用目录
sudo mkdir -p /opt/graylog-install
sudo tar -xzf ~/graylog-full-offline.tar.gz -C /opt/graylog-install/
cd /opt/graylog-install

第 2 步:创建本地 APT 仓库(简化后续安装)

# 1. 创建本地仓库结构
sudo mkdir -p /opt/local-apt-repo/packages
sudo cp *.deb /opt/local-apt-repo/packages/

# 2. 生成 Packages 索引
cd /opt/local-apt-repo
sudo dpkg-scanpackages packages /dev/null | sudo tee Packages
sudo gzip -c Packages > Packages.gz

# 3. 添加本地源
echo "deb [trusted=yes] file:/opt/local-apt-repo ./" | \
  sudo tee /etc/apt/sources.list.d/local.list

# 4. 更新 APT 索引(仅使用本地源)
sudo apt-get update

上边不好用的话,不用创建本地APT仓库,直接安装:
直接解压拷贝后,执行sudo dpkg -i *.deb
# 如果遇到依赖问题,强制修复
sudo apt-get install -f -y
然后重新执行sudo dpkg -i *.deb

第 3 步:批量安装所有软件包

# 一次性安装所有核心组件
sudo apt-get install -y --allow-unauthenticated \
  graylog-server \
  graylog-datanode \
  mongodb-org

# 如果遇到依赖问题,强制修复
sudo apt-get install -f -y

第 4 步:系统优化配置

# 设置虚拟内存映射(OpenSearch 必需)
echo 'vm.max_map_count=262144' | sudo tee -a /etc/sysctl.conf
echo 'vm.swappiness=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# 增加文件描述符限制
echo 'mongod soft nofile 64000' | sudo tee -a /etc/security/limits.conf
echo 'mongod hard nofile 64000' | sudo tee -a /etc/security/limits.conf
echo 'mongod soft nproc 64000' | sudo tee -a /etc/security/limits.conf
echo 'mongod hard nproc 64000' | sudo tee -a /etc/security/limits.conf

第 5 步:生成密钥和配置

# 生成密码密钥(保存好,后面需要)
PASSWORD_SECRET=$(openssl rand -hex 32)
echo "Password Secret: $PASSWORD_SECRET"

# 生成管理员密码哈希
# 设置您的管理员密码(记下来)
ADMIN_PASSWORD="YourStrongAdminPassword2024!"
ROOT_PASSWORD_SHA2=$(echo -n "$ADMIN_PASSWORD" | sha256sum | awk '{print $1}')
echo "Root Password SHA2: $ROOT_PASSWORD_SHA2"

第 6 步:配置 Graylog Data Node

sudo tee /etc/graylog/datanode/datanode.conf << EOF
# MongoDB 配置
mongodb_uri = mongodb://127.0.0.1:27017/graylog

# 安全配置
password_secret = $PASSWORD_SECRET

# OpenSearch 堆内存(根据实际内存调整,这里是总内存8G的一半)
opensearch_heap = 2g

# 绑定地址
http_bind_address = 0.0.0.0:8999

# 节点发现
discovery.seed_hosts = 127.0.0.1
cluster.initial_master_nodes = datanode-1
node.name = datanode-1
EOF

第 7 步:配置 Graylog Server

sudo tee /etc/graylog/server/server.conf << EOF
# 使用相同的密钥
password_secret = $PASSWORD_SECRET
root_password_sha2 = $ROOT_PASSWORD_SHA2

# Web 界面配置
http_bind_address = 0.0.0.0:9000
http_enable_cors = true

# 连接 Data Node(不是直接连接 OpenSearch)
elasticsearch_hosts = http://localhost:8999

# 邮件配置(如需要告警,配置内网 SMTP)
# transport_email_enabled = true
# transport_email_hostname = your-internal-smtp
# transport_email_port = 25

# 时区
root_timezone = Asia/Shanghai

# 消息队列配置
# message_journal_enabled = true
# message_journal_dir = /var/lib/graylog-server/journal
EOF

第 8 步:启动服务

# 重载 systemd
sudo systemctl daemon-reload

# 按顺序启动
sudo systemctl enable mongod
sudo systemctl start mongod
sudo systemctl status mongod

# 等待 MongoDB 完全启动(约10秒)
sleep 10

# 启动 Data Node
sudo systemctl enable graylog-datanode
sudo systemctl start graylog-datanode
sudo systemctl status graylog-datanode

# 等待 Data Node 初始化(约30-60秒)
sleep 30

# 启动 Graylog Server
sudo systemctl enable graylog-server
sudo systemctl start graylog-server
sudo systemctl status graylog-server

# 检查所有服务状态
sudo systemctl status mongod graylog-datanode graylog-server

第 9 步:防火墙配置(如启用)

# 如果使用 ufw
sudo ufw allow 9000/tcp comment "Graylog Web UI"
sudo ufw allow 8999/tcp comment "Graylog Data Node API"  # 内部使用,可仅监听本地
sudo ufw reload

第 10 步:验证安装

# 检查日志
sudo tail -f /var/log/graylog-server/server.log
sudo tail -f /var/log/graylog-datanode/datanode.log

# 检查端口监听
sudo netstat -tlnp | grep -E "9000|8999|27017"

# 测试 API(Web UI 启动可能需要1-2分钟)
curl -I http://localhost:9000/api/system/lbstatus

🌐 访问 Web 界面

  1. 浏览器访问http://<您的服务器IP>:9000

  2. 登录

    • 用户名:admin
    • 密码:您在 ADMIN_PASSWORD 中设置的密码
  3. 首次登录后:立即进入 System → Users 创建备份管理员账号

    配置 System → Inputs 开始接收日志

    设置 System → Configurations 调整保留策略

    ⚠️ 物理隔离环境特别注意事项

    时间同步问题(重要!)

    Graylog 对时间戳非常敏感,时间不同步会导致日志乱序

# 方案1:使用硬件时钟
sudo timedatectl set-local-rtc 1
sudo hwclock --systohc

# 方案2:搭建内部 NTP 服务器(推荐)
sudo apt-get install ntp -y
# 配置 /etc/ntp.conf 指向内部 NTP 源

DNS 解析

确保 /etc/hosts 包含正确的条目:

127.0.0.1 localhost localhost.localdomain
<实际IP> graylog-server graylog-server.local

日志轮转

# 配置 Graylog 日志轮转
sudo tee /etc/logrotate.d/graylog << EOF
/var/log/graylog-server/server.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 0640 graylog graylog
    sharedscripts
    postrotate
        systemctl kill -s HUP graylog-server
    endscript
}
EOF

📋 部署前检查清单

□ 联网机器完成离线包下载(最少2GB)
□ 确认已将包复制到离线服务器
□ 检查磁盘空间:至少 10GB 可用
□ 内存:至少 4GB(推荐 8GB+)
□ CPU 核心:至少 2 核
□ /etc/hosts 配置正确
□ 时间已同步(硬件时钟或内部 NTP)
□ 防火墙开放 9000 端口
□ vm.max_map_count=262144 已设置


实际报错:

for pkg in graylog-server graylog-datanode mongodb-org; do
>   apt-get --recurse --no-recommends -y --print-uris install $pkg | \
>     grep -oP "http[^']+\.deb" >> urls.txt
> done
E: Command line option --recurse is not understood in combination with the other options
E: Command line option --recurse is not understood in combination with the other options
E: Command line option --recurse is not understood in combination with the other options

错误是因为 apt-get 没有 --recurse 这个选项。

server启动失败:

配置文件增加内容:

# 检查配置文件是否存在、格式正确
sudo cat /etc/graylog/datanode/datanode.conf
# 数据存储目录
datanode.data\_dir=/var/lib/graylog-datanode

之后修复目录权限。

最后一个问题:

graylog-datanode 用户无法访问 /etc/graylog/datanode/ 目录,导致脚本在 readlink -f 时因为 set -eo pipefail 直接静默退出,连 Java 都没有启动,所以日志里什么都没有。

先确认一下目录的权限:

ls -la /etc/graylog/
ls -la /etc/graylog/datanode/

/etc/graylog/ 目录的权限是 drwxr-x---,owner 是 graylog 组,但 graylog-datanode 用户不属于 graylog 组,所以无法进入这个父目录,导致即使 datanode/ 子目录权限正确,也完全无法访问。

确认一下:

id graylog-datanode
getent group graylog

解决方法是把 graylog-datanode 用户加入 graylog 组:

sudo usermod -aG graylog graylog-datanode

加完后验证:

id graylog-datanode

确认输出里包含 graylog 组后,再重启服务:

sudo systemctl restart graylog-datanode
sleep 5
sudo systemctl status graylog-datanode

成功启动。


标题:离线安装Graylog
作者:lovejjt
地址:https://www.lovejjt.top/articles/2026/04/28/1777357853455.html