如何在 Rocky Linux 上安装 Graylog 集中式日志管理系统
在此页
- 先决条件
- 安装 Java OpenJDK
- 安装 MongoDB NoSQL 数据库
- 安装弹性搜索
- 安装 Graylog 服务器
- 设置 SELinux
- 创建新的 Graylog 输入
- 通过 Ingest Syslog 将日志发送到 Graylog 服务器
- 结论
Graylog 是一个免费的开源日志管理平台,用于捕获、存储和实时分析您的数据和日志。它是用 Java 编写的,构建在其他开源软件(如 MongoDB 和 Elasticsearch)之上。 Graylog 提供了最高效、快速和灵活的集中式日志管理平台之一。使用 Graylog,您可以发送和分析来自几乎任何数据源的结构化和非结构化数据。
在本教程中,您将使用 Graylog 在 Rocky Linux 服务器上设置集中式日志管理。本教程包括一些 Graylog 依赖项的基本安装,例如 Elasticsearch 和 MongoDB。此外,您还将设置 Graylog 输入并通过 Syslog Ingest 将日志从 Linux 机器发送到 Graylog 服务器。
先决条件
要学习本教程,您需要满足以下要求:
- 一台运行 Rocky Linux 8 的服务器。
- 具有 sudo/管理员权限的非根用户。
- 防火墙正在运行并已启用。
安装 Java OpenJDK
Graylog Server是一个主要用Java编写的应用服务器。要安装 Graylog,您需要在 Rocky Linux 系统上安装 Java OpenJDK。在撰写本文时,Graylog 服务器至少需要 Java v8 或更高版本。
在 Rocky Linux 存储库中,您可以安装多个 Java OpenJDK 版本。您可以使用以下命令检查所有可用的 OpenJDK 版本。
sudo dnf search openjdk
在此演示中,您将为 Graylog 服务器安装和使用 Java OpenJDK v11。运行以下 dnf 命令将 java OpenJDK 安装到您的 Rocky Linux 系统。
当提示确认安装时,输入 y 并按 ENTER。
sudo dnf install java-11-openjdk-devel
java OpenJDK 安装完成后,运行以下 java 命令来检查和验证 Java OpenJDK 版本。您应该会看到 OpenJDK v11 安装在您的 Rocky Linux 系统上。
java version

安装 MongoDB NoSQL 数据库
您现在将安装 MongoDB NoSQL 数据库作为 Graylog 服务器的依赖项。 MongoDB 用于存储 Graylog Server 的数据。
要安装 MongoDB,您需要添加 MongoDB 存储库。然后,您可以安装 MongoDB 包。
运行以下命令为 Rocky Linux 系统添加 MongoDB 存储库。
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/8/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
现在运行下面的 dnf 命令来检查和验证系统上可用存储库的列表。您应该会看到添加了 \mongodb\ 存储库。
sudo dnf repolist

接下来,使用以下 dnf 命令安装 MongoDB 包。当要求确认安装时,输入 y 并按 ENTER 继续。
sudo dnf install mongodb-org

此外,系统还会提示您确认 MongoDB 存储库 GPG 密钥。输入 y 确认并添加 MongoDB GPG 密钥。

如果 MongoDB 安装完成,运行以下命令重新加载 systemd 管理器并应用新的 MongoDB 服务文件。
sudo systemctl daemon-reload
现在使用以下系统命令启动名为 mongod 的 MongoDB 服务。然后,使 mongod 服务在系统启动时自动启动。
sudo systemctl enable mongod
sudo systemctl start mongod
最后,运行以下 systemctl 命令来检查和验证 mongod 服务。您应该看到 MongoDB 服务 mongod 正在运行并在系统启动时启用。
sudo systemctl status mongod

安装弹性搜索
elasticsearch 处理 Graylog 服务器日志管理堆栈的搜索引擎。在撰写本文时,您将需要安装 Elasticsearch v7.x。
当前版本的 Graylog 服务器将仅与 Elasticsearch v7.x 一起运行。如果你安装最新的elasticsearch比如v8.x或者v9.x,你会报错。
现在运行以下命令为 Rocky Linux 系统设置 Elasticsearch v7.x 存储库。
cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
运行以下命令来检查和验证系统上的存储库列表。您将看到添加了 Elasticsearch v7.x 存储库。
sudo dnf repolist

接下来,使用下面的 dnf 命令安装 Elasticsearch 包。当提示确认安装时,输入 y 确认并按 ENTER。
sudo dnf install elasticsearch

此外,系统将提示您将 GPG 密钥添加到 Elasticsearch 存储库。输入 y 添加 GPG 密钥。安装将完成。

接下来,您需要为 Graylog 服务器使用的基本安装设置 Elasticsearch 服务器。
使用以下命令编辑默认的 Elasticsearch 配置文件 /etc/elasticsearch/elasticsearch.yml。
sudo nano /etc/elasticsearch/elasticsearch.yml
添加并取消注释以下基本 Elasticsearch 配置。
cluster.name: graylog-rocky8
action.auto_create_index: false
完成后保存并关闭文件。
此外,您还可以通过使用以下命令编辑文件 /etc/elasticsearch/jvm.options 来为 Elasticsearch 服务器设置最大内存分配。
sudo nano /etc/elasticsearch/jvm.options
取消注释并更改默认配置,如下所示。您可以在此处使用服务器的最大内存更改最大内存分配。
-Xms1g
-Xmx1g
完成后保存并关闭文件。
现在运行下面的 systemctl 命令来重新加载 systemd 管理器并为 Elasticsearch 服务器应用一个新的服务文件。
sudo systemctl daemon-reload
接下来,使用以下命令启动并启用 Elasticsearch 服务器。 Elasticsearch服务会在系统启动时自动运行,现在Elasticsearch的当前状态应该是running。
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch

最后,运行以下命令检查 Elasticsearch 服务并确保该服务正在运行。您应该会看到 Elasticsearch 服务正在运行并已启用的输出。
sudo systemctl status ealsticsearch

此外,您还可以通过下面的 curl 命令访问您的 Elasticsearch 服务器。你应该得到关于你的 Elasticsearch 服务器的基本信息的输出,包括集群名称、集群 uuuid、Elasticsearch 版本和 Lucene 版本(Elasticsearch 的核心)。
curl localhost:9200

安装 Graylog 服务器
安装 Java OpenJDK、MongoDB 和 Elasticsearch 后,您现在将安装 Graylog 服务器。在此之前,您需要在 Rocky Linux 服务器上设置 Graylog 存储库。然后就可以开始配置Graylog Server了,包括配置Graylog的密码认证,设置Graylog Server要使用的http_bind_address。
在撰写本文时,Graylog Server 的最新版本是 v4.3。运行以下命令将 Graylog 存储库添加到您的服务器。
sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-4.3-repository_latest.rpm
使用以下命令检查 Graylog 服务器的存储库列表。您应该会看到 Graylog 服务器存储库已添加。
sudo dnf repolist

接下来,运行以下 dnf 命令来安装 Graylog 服务器包。当提示确认安装时,输入 y 确认并按 ENTER。
sudo dnf install graylog-server graylog-integrations-plugins

此外,系统将提示您将 GPG 密钥添加到 Graylog 服务器存储库。输入 y 将 GPG 密钥添加到您的系统,然后按 ENTER。 Graylog 服务器安装完成。

现在您将设置基本的 Graylog 服务器。在此之前,运行下面的 dnf 命令来安装 pwgen 包。在提示确认安装时输入 y,然后按 ENTER。
pwgen 包提供了一个命令行工具,用于生成将用于设置 Graylog 服务器的机密和密码。
sudo dnf install pwgen

接下来,运行以下 pwgen 命令为 Graylog 服务器生成 password_secret。请务必将生成的秘密复制到您的笔记中。
sudo pwgen -N 1 -s 96
现在运行以下命令为 Graylog 服务器生成 root_password_sha2 的 sha256 哈希密码。此密码将用于登录 Graylog 服务器仪表板。请务必使用强密码并将生成的 sha256 哈希密码复制到您的笔记中。
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1

接下来,使用以下命令编辑 Graylog 服务器配置文件 /etc/graylog/server/server.conf。
sudo nano /etc/graylog/server/server.conf
使用您生成的密码更改选项 password_secret 和 root_password_sha2 的值。此外,您还可以在选项 graylog_username 上更改登录 Graylog 服务器的默认用户名。
password_secret = R8zwuO2NDewUcwRFQ0QDm07tn6AppmwThty0aagxOoqMDWNqPJLwrffpz7DdQyQVY1uHq54QwgYMNkZnBLuXQf3B1giq5RKX
root_password_sha2 = a7fdfe53e2a13cb602def10146388c65051c67e60ee55c051668a1c709449111
现在用服务器的内部 IP 地址更改 http_bind_address 选项。此外,Graylog 服务器的默认端口是 TCP 9000。
http_bind_address = 0.0.0.0:9000
完成后保存并关闭文件。

现在运行以下 systemctl 命令以重新加载 systemd 管理器并应用 Graylog Server 服务文件。
sudo systemctl daemon-reload
使用下面的 systemctl 命令启动并启用 graylog-server 服务。 Graylog 服务器现在应该正在运行并启用,它将在系统启动时自动启动。
sudo systemctl enable graylog-server
sudo systemctl start graylog-server

使用以下命令检查并验证 graylog-server 服务。您应该看到 Graylog Server 正在运行的当前状态的输出,并且它已启用并将在启动时自动运行。
sudo systemctl status graylog-server
最后,您需要将 Graylog 服务器使用的端口 9000 添加到 firewalld。
运行以下 firewall-cmd 命令将端口 9000 添加到 firewalld。然后,重新加载 firewalld 规则以应用新的更改。
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --reload
设置 SELinux
如果在强制模式下运行启用了 SELinux 的 Graylog 服务器,则需要为 Graylog 服务器设置 SELinux 规则。
在管理SELinux之前,运行下面的dnf命令,安装管理SELinux的命令行工具。当提示确认安装时,输入 y 并按 ENTER。
sudo dnf install policycoreutils policycoreutils-python-utils

接下来,运行以下命令为 Graylog 服务器、Elasticsearch 和 MongoDB 添加 SELinux 规则。
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
现在您可以访问您的 Graylog 服务器。
创建新的 Graylog 输入
为了能够从您的应用程序或客户端机器接收日志,您需要在您的 Graylog 服务器上设置一个输入。您可以使用多种类型的 Graylog 输入,请查看 Graylog 文档了解详细信息。 Graylog 输入将在 TCP/UDP 协议上运行,并能够接收多种格式的日志,例如 Syslog、GELF、CEF 或 RAW。此外,您还可以通过 TCP/HTTPS 协议安全地接收日志。
在此演示中,您将创建一个 Graylog 输入,用于从 Linux 机器客户端接收日志。此输入将使用 \Syslog UDP\ 并将通过 UDP 协议从客户端计算机接收日志消息。
打开您的网络浏览器并访问服务器 IP 地址,然后访问 Graylog 服务器端口 9000(即 http://192.168.5.100:9000/)。您将看到 Graylog 服务器安装的登录页面。
要登录 Graylog 服务器仪表板,请输入您的用户名和密码。然后,单击“登录”。

现在您应该会看到 Graylog 服务器管理仪表板的新窗口。

要创建新的 Graylog 输入,请单击菜单“系统”并选择“输入”。

选择输入类型并单击“启动新输入”。在此示例中,您将创建一个新的输入类型“Syslog UDP”。所有 Linux 客户端计算机都将通过 Syslog UDP 协议将日志发送到此输入。

现在输入新输入的详细信息,如下所示:
- 标题:我们将使用标题 syslog-udp-input。
- 绑定地址:输入你的Graylog服务器的内部IP地址,如果你在内网也可以使用0.0.0.0。
- 端口:在此示例中,我们将使用 UDP 端口 5142 作为此输入。
现在单击“保存”以添加输入。

现在您应该看到 Graylog 输入的状态为“正在运行”。在底部,您应该看到有关 Graylog 输入的详细信息。

最后,回到您的 Graylog 服务器并运行下面的 firewall-cmd 命令以添加将由 syslog-udp-input 使用的 UDP 端口 5142。
sudo firewall-cmd --add-port=5142/udp --permanent
sudo firewall-cmd --reload
通过 Ingest Syslog 将日志发送到 Graylog 服务器
您已经在 Graylog 服务器上创建了 Graylog Syslog UDP 输入。现在您将设置一台 Linux 机器以使用 Rsyslog 将日志发送到 Graylog 服务器。在此示例中,我们将使用主机名为“linux-host1”且 Graylog 服务器 IP 地址为 192.168.5.100 的 Rocky Linux clinet 机器。
连接到您的 Linux 客户端机器并运行以下命令来检查您的 Linux 机器上的 rsyslog 服务。您应该得到正在运行的 rsyslog 服务的输出。
sudo systemctl status rsyslog

接下来,创建一个新的附加 rsyslog 配置文件,用于将日志发送到 Graylog 服务器。运行以下命令创建一个新文件 /etc/rsyslog.d/graylog.conf。
sudo nano /etc/rsyslog.d/graylog.conf
将以下配置添加到文件中。使用此配置,linux-host1 上的 rsyslog 服务会将日志发送到运行在服务器 IP 地址 192.168.5.100 和 UDP 端口 5142 上的 Graylog 服务器输入。
*.*@192.168.5.100:5142;RSYSLOG_SyslogProtocol23Format
完成后保存并关闭文件。
现在运行以下 systemctl 命令以重新启动 rsyslog 服务并对配置文件应用新的更改。并且 rsyslog 服务会将系统日志发送到 Graylog 服务器,您可以等待几分钟。
sudo systemctl restart rsyslog
接下来,回到 Graylog 服务器管理仪表板。然后,单击“搜索”菜单。现在您应该可以看到来自 linux-host1 机器的日志及其在 Graylog 服务器上的可用日志。

结论
通过本教程,您学习了如何在 Rocky Linux 服务器上安装 Graylog 服务器。这包括安装一些依赖项,例如 Java OpenJDK、Elasticsearch 和 MongoDB。此外,您已经在 Rocky Linux 上配置了 Graylog 服务器,并启用了 SELinux 和 enforcing 模式,并启用了 firewalld。
最后,您现在已经了解了如何设置类型为“Syslog UDP”的 Graylog Input,它可以用作 Linux 机器的集中日志管理系统。此外,您还学习了如何通过 Rsyslog 服务将日志从 Linux 机器发送到 Graylog 服务器。您现在还为您的应用程序设置了更多输入或向 Graylog 服务器添加了新的 Linux 机器。