本页内容
- 环境要求
- 配置软件仓库
- 安装依赖项
- 配置 Opensearch
- 安装并配置 Graylog 服务器
- 配置 Firewalld 和 SELinux
- 访问 Graylog 服务器
- 创建第一个 Graylog 输入
- 通过 Rsyslog 向 Graylog 发送日志
- 结论
Graylog 是一个免费开源的日志管理平台,用于采集、存储并实现数据和日志的实时分析。它由 Java 编写,并构建于 MongoDB 和 Elasticsearch 等其他开源软件之上。Graylog 提供了最高效、快速且灵活的集中式日志管理平台之一。借助 Graylog,你可以从几乎任何数据源发送并分析结构化和非结构化数据。
在本指南中,我们将介绍如何在 AlmaLinux 9 服务器上将 Graylog 安装为集中式日志管理系统。你将安装 Graylog 服务器,然后为客户端设置向 Graylog 服务器发送日志的输入(inputs)。
环境要求
要完成本指南,请确保你具备以下条件:
- 一台至少 4 GB 内存的 AlmaLinux 9 服务器——本例中,我们将使用一台 8 GB 内存、IP 地址为 192.168.10.20 的 AlmaLinux 服务器。
- 一个具有管理员权限的非 root 用户。
配置软件仓库
在开始本指南之前,你需要为你的 AlmaLinux 9 机器添加新仓库。你将把 MongoDB 6.x、Opensearch 2.x 以及 Graylog 5.x 的仓库添加到系统中。
首先,执行以下 dnf 命令在你的系统上安装 curl。
sudo dnf install curl -y

现在复制并运行以下命令来添加 MongoDB 仓库。Graylog 服务器至少需要 MongoDB v6.x。
cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org-6.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
接下来,运行以下命令来添加 Opensearch 仓库。Opensearch 是 Elasticsearch 的替代品,建议在较新的 Graylog 版本中使用。本例中我们将使用 Opensearch v2.x。
sudo curl -SL https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/opensearch-2.x.repo -o /etc/yum.repos.d/opensearch-2.x.repo

现在运行以下命令,将 Graylog 仓库添加到你的系统。在撰写本文时,Graylog 服务器的最新版本是 v5.1。
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-5.1-repository_latest.rpm

最后,执行以下 dnf 命令来验证你 AlmaLinux 服务器上可用的仓库。
sudo dnf repolist
如果成功,你应该能看到 MongoDB 6.x、Opensearch 2.x 以及 Graylog 服务器的仓库。

安装依赖项
添加仓库之后,你将通过 DNF 包管理器安装 MongoDB 6.x 和 Opensearch 2.x。MongoDB 将用于存储字符串数据,而 Opensearch 将作为 Graylog 服务器的主要搜索引擎。
执行以下 dnf 命令来安装 MongoDB 和 Opensearch。当提示确认时输入 y,然后按 ENTER。
sudo dnf install mongodb-org opensearch

一旦 MongoDB 和 Opensearch 安装完成,运行以下 systemctl 命令来重新加载 systemd 管理器。
sudo systemctl daemon-reload
然后,使用以下命令启动并启用 MongoDB 服务。
sudo systemctl start mongod
sudo systemctl enable mongod
使用以下命令启动并启用 Opensearch 服务。
sudo systemctl start opensearch
sudo systemctl enable opensearch

最后,运行以下命令来验证 MongoDB 和 Opensearch 服务的状态。如果正在运行,服务状态应显示为 active (running)。
sudo systemctl status mongod
sudo systemctl status opensearch
检查 MongoDB 服务状态。

检查 Opensearch 服务状态。

配置 Opensearch
对于 Graylog 部署,建议使用 Opensearch 作为默认搜索引擎。Opensearch 的替代品是 Elasticsearch,但仅支持 Elasticsearch v7.x。在接下来的部分中,你将把 Opensearch 配置为 Graylog 服务器的默认搜索引擎。
首先,使用以下 nano 编辑器命令打开 Opensearch 默认配置文件 /etc/opensearch/opensearch.yml。
sudo nano /etc/opensearch/opensearch.yml
取消注释 cluster.name 参数并输入你的 Opensearch 集群名称,node.name 并输入你系统的主机名,然后 network.host 并输入你的内网 IP 地址。本例中,集群名称将为 graylog,主机名为 graylog-alma,IP 地址为 192.168.10.20(运行在本地网络中)。
cluster.name: graylog node.name: graylog-alma network.host: 0.0.0.0
添加以下行,将 Opensearch 配置为单节点/服务器,禁用 auto_create_index 以及安全插件(仅用于测试目的)。
discovery.type: single-node action.auto_create_index: false plugins.security.disabled: true
完成后保存文件并退出编辑器。
现在,使用 nano 编辑器打开文件 /etc/opensearch/jvm.options,以设置 Opensearch 服务的最大内存分配。
sudo nano /etc/opensearch/jvm.options
更改你 Opensearch 安装的默认内存分配。本例中,Opensearch 应以最大 2 GB 内存运行。
-Xms2g -Xmx2g
完成后保存文件并退出编辑器。
接下来,使用以下 nano 编辑器命令打开文件 /usr/lib/tmpfiles.d/opensearch.conf。
sudo nano /usr/lib/tmpfiles.d/opensearch.conf
将默认路径从 /var/run/opensearch 更改为 /run/opensearch。该目录将用于存储与 Opensearch 相关的附加文件,并将通过此配置自动创建。
/run/opensearch
完成后保存并关闭文件。
之后,运行以下命令将 vm.max_map_count 增加到 262144。这是 Opensearch 所必需的,要使其永久生效,你需要向 /etc/sysctl.conf 文件添加一个新的参数。
sudo sysctl -w vm.max_map_count=262144
sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf
现在运行以下 systemctl 命令来重启 Opensearch 服务并应用你所做的更改。
sudo systemctl restart opensearch
Opensearch 应运行在你服务器的本地 IP 地址上,本例中它运行在 192.168.10.20,默认端口为 9200。

执行以下 curl 命令来访问你的 Opensearch 安装。
curl 192.168.10.20:9200
如果 Opensearch 配置成功,你应该会看到类似如下关于你的 Opensearch 安装的详细信息:

至此,Opensearch 和 MongoDB 已准备就绪。在下一部分中,你将开始 Graylog 服务器的安装和配置。
安装并配置 Graylog 服务器
在本节中,你将在 AlmaLinux 9 机器上安装 Graylog 服务器 v5.x,并将 Graylog 配置为你基础设施的集中式日志管理。
执行以下 dnf 命令来安装 graylog-server 软件包。输入 y 确认安装并按 ENTER 继续。
sudo dnf install graylog-server

再次输入 y 以添加 Graylog 仓库的 GPG 密钥。

安装 Graylog 服务器后,执行以下命令为 Graylog 服务器生成 password_secret。复制你所生成的随机字符串。
< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c${1:-96};echo;
现在运行以下命令为你的 graylog 服务器生成 root_password_sha2。该密码将用于登录 Graylog 管理后台。
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
输入你的密码并复制生成的哈希密码。

在下面的示例中,JmGGtkruJ80LjnQBnz8QZ0gHjKpBZwWmH7JF0ZBa9iBS999bTlQfViaQj7jAH-XgIVcdVcDVYyy3x5Dh7fEXCPhbrSUXX1G1 是 password secret,而 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8 是为你的 Graylog 服务器生成的 root_password_sha2 密码。
接下来,使用 nano 编辑器打开 Graylog 配置文件 /etc/graylog/server/server.conf。
sudo nano /etc/graylog/server/server.conf
将生成的 password secret 填入 password_secret 参数,并将默认的 root_password_sha2 更改为你所生成的新密码。
password_secret = R8zwuO2NDewUcwRFQ0QDm07tn6AppmwThty0aagxOoqMDWNqPJLwrffpz7DdQyQVY1uHq54QwgYMNkZnBLuXQf3B1giq5RKX ... root_password_sha2 = a7fdfe53e2a13cb602def10146388c65051c67e60ee55c051668a1c709449111
取消注释 http_bind_address 参数,并将 IP 地址更改为你的内网 IP 地址,后面跟上 Graylog 服务器的默认端口 9000。
http_bind_address = 192.168.10.20:9000
保存文件并关闭编辑器。
现在运行以下 systemctl 命令来重新加载 systemd 管理器。
sudo systemctl daemon-reload
然后使用以下命令启动并启用 Graylog 服务器。
sudo systemctl start graylog-server
sudo systemctl enable graylog-server

最后,使用以下命令验证 Graylog 服务器状态。如果 Graylog 正在运行,你的终端上应输出 active (running)。
sudo systemctl status graylog-server

此外,你也可以通过使用以下 ss 命令检查系统上开放的端口列表来验证 Graylog 服务器。
ss -tulpn | grep 9000
如果成功,你应该会看到 Graylog 服务器正在使用端口 9000。
配置 Firewalld 和 SELinux
在安装并配置 Graylog 服务器之后,下一步你将设置 SELinux 和 firewalld。本例中,SELinux 以 enforcing 模式运行,且 firewalld 正在运行。
运行以下 dnf 命令,将 SELinux 管理工具安装到你的 AlmaLinux 服务器。提示时输入 y,然后按 ENTER 继续。
sudo dnf install policycoreutils policycoreutils-python-utils

现在,运行以下命令来添加一些 SELinux 策略,并允许某些服务的端口,例如 Graylog 服务器端口 9000、MongoDB 端口 27017 以及 Opensearch 端口 9200。
sudo setsebool -P httpd_can_network_connect 1
sudo semanage port -a -t http_port_t -p tcp 9000
sudo semanage port -a -t http_port_t -p tcp 9200
sudo semanage port -a -t mongod_port_t -p tcp 27017

接下来,运行以下 firewall-cmd 命令,将 Graylog 服务器端口 9000 添加到 firewalld,并重新加载 firewalld 以应用更改。
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
最后,运行以下命令来验证你系统上的 firewalld 规则列表。确保端口 9000 在你的 firewalld 上可用。
sudo firewall-cmd --list-all

访问 Graylog 服务器
既然你已经成功配置了 SELinux 和 firewalld,现在你可以访问你的 Graylog 服务器安装。
启动你常用的网页浏览器,并访问你的 AlmaLinux 服务器 IP 地址加上端口 9000(例如:http://192.168.10.20:9000/)。如果 Graylog 安装成功,你应该会看到如下的 Graylog 登录页面。
使用默认用户 admin 以及你所生成的密码(即 root_password_sha2 密码)登录。

如果你输入了正确的用户和密码,Graylog 管理后台将显示在你的浏览器中。

创建第一个 Graylog 输入
登录 Graylog 服务器后,你必须做的第一件事就是创建新的输入(inputs),用作来自目标监控系统的日志接收器。Graylog 输入有两种类型:Listener 输入和 Pull 输入。
Listener 输入的示例有 Syslog TCP/UDP、Beats TCP、GELF TCP、CEF TCP 和 Netflow TCP。Pull 输入的一些示例有 CEF AMQP 和 Kafka、Raw/Plaintext AMQP 和 Kafka,以及 Syslog AMQP 和 Kafka。
在接下来的部分中,你将使用 Syslog UDP 创建第一个 Graylog 输入。
点击 System 菜单并选择 Inputs。

从下拉菜单中选择你要创建的输入类型,然后点击 Launch new input。本例中,我们将创建一个 Syslog UDP 类型的输入。

输入输入名称、内网 IP 地址,以及新输入将运行的端口。本例中,我们将创建一个名为 graylog-alma 的 Syslog UDP 输入,它将运行在内网 IP 地址 0.0.0.0,端口为 5142。

接下来,向下滚动到页面底部,你应该会看到状态为 running 的新输入 graylog-alma。

最后,返回终端服务器并执行以下 firewall-cmd 命令,打开将由 graylog-alma 输入使用的端口 5142。
sudo firewall-cmd --add-port=5142/udp --permanent
sudo firewall-cmd --reload
使用以下命令验证 firewalld 上开放的端口列表。确保端口 5142 在 firewalld 上可用。
sudo firewall-cmd --list-all

通过 Rsyslog 向 Graylog 发送日志
在 Graylog 服务器上创建 Syslog UDP 输入后,你现在可以向 Graylog 服务器发送日志消息。在接下来的部分中,你将使用 Rsyslog 从一台 Linux 机器向 Graylog 服务器发送日志。
使用以下 nano 编辑器命令创建一个新的附加 rsyslog 配置文件 /etc/rsyslog.d/graylog.conf。
sudo nano /etc/rsyslog.d/graylog.conf
插入以下配置,并确保将 IP 地址和端口更改为输入 graylog-alma 的详细信息。
*.*@192.168.10.20:5142;RSYSLOG_SyslogProtocol23Format
完成后保存并退出文件。
现在运行以下 systemctl 命令来重启 Rsyslog 服务并应用更改。Rsyslog 重启后,目标机器将通过 syslog 协议向输入 graylog-alma 发送日志到 Graylog 服务器。
sudo systemctl restart rsyslog
接下来,返回 Graylog 管理后台并点击 Stream 菜单。如果你的安装成功,你应该会看到目标机器的详细日志在 Graylog 服务器上可用。

结论
恭喜,你已成功在 AlmaLinux 9 系统上将 Graylog 安装为集中式日志管理系统!你已将 Graylog 与 MongoDB 和 Opensearch 一起安装,并通过 Syslog UDP 配置了第一个 Graylog 输入。你现在可以探索不同类型的 Graylog 输入,或者借助多台服务器来扩展 Graylog 部署。