您的 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 的现代软件。
既然 CPU 完全没问题,我们采用最新且最稳定的组件组合:
| 组件 | 版本选择 | 说明 |
|---|---|---|
| Graylog | 7.0.x | 最新稳定版 |
| Data Node | 7.0.x | 包含 OpenSearch 2.x |
| MongoDB | 8.0.x | 您的 CPU 完全支持 |
| Java | 21 | Data Node 自带 |
由于是完全物理隔离环境,建议创建一个完整的离线仓库。
# 在联网的 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
如果您磁盘空间有限,只下载必需的包:
# 创建下载目录
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
# 假设您已将打包文件传输到离线服务器(通过 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
# 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
# 一次性安装所有核心组件
sudo apt-get install -y --allow-unauthenticated \
graylog-server \
graylog-datanode \
mongodb-org
# 如果遇到依赖问题,强制修复
sudo apt-get install -f -y
# 设置虚拟内存映射(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
# 生成密码密钥(保存好,后面需要)
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"
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
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
# 重载 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
# 如果使用 ufw
sudo ufw allow 9000/tcp comment "Graylog Web UI"
sudo ufw allow 8999/tcp comment "Graylog Data Node API" # 内部使用,可仅监听本地
sudo ufw reload
# 检查日志
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
浏览器访问:http://<您的服务器IP>:9000
登录:
adminADMIN_PASSWORD 中设置的密码首次登录后:立即进入 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 源
确保 /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
成功启动。