如何在Ubuntu16.04上使用Graylog2管理日志
介绍
Graylog是一个强大的开源日志管理平台。 它从服务器日志中聚合和提取重要数据,这些数据通常使用 Syslog 协议发送。 它还允许您在 Web 界面中搜索和可视化日志。
在本教程中,您将在 Ubuntu 16.04 上安装和配置 Graylog,并设置一个接收系统日志的简单输入。
先决条件
在开始本教程之前,您需要:
- 一台 Ubuntu 16.04 服务器,至少有 2 GB RAM,启用专用网络,并且是非 root 用户。 这可以通过遵循 Ubuntu 16.04 的 初始服务器设置来进行设置。
- 已安装 Oracle JDK 8,您可以按照 这篇 Java 安装文章 的“安装 Oracle JDK”部分进行操作。
- Elasticsearch 2.x,您可以按照Elasticsearch安装教程的步骤1和2进行安装。 某些版本的 Graylog 仅适用于某些版本的 Elasticsearch。 例如,Graylog 2.x 不适用于 Elasticsearch 5.x。 具体版本请参考【X9X】此 Greylog-Elasticsearch 版本对照表【X64X】。 本教程使用 Elasticsearch 2.4.4 和 Graylog 2.2。
- MongoDB,可以按照【X49X】MongoDB教程【X69X】安装。
第 1 步 — 配置 Elasticsearch
我们需要修改 Elasticsearch 配置文件,使集群名称与 Graylog 配置文件中的设置相匹配。 为简单起见,我们将 Elasticsearch 集群名称设置为默认的 Graylog 名称 graylog
。 您可以将其设置为您希望的任何值,但请确保更新 Graylog 配置文件以反映该更改。
在编辑器中打开 Elasticsearch 配置文件:
sudo nano /etc/elasticsearch/elasticsearch.yml
找到以下行:
/etc/elasticsearch/elasticsearch.yml
cluster.name: <CURRENT CLUSTER NAME>
将 cluster.name
值更改为 graylog
:
/etc/elasticsearch/elasticsearch.yml
cluster.name: graylog
保存文件并退出编辑器。
由于我们修改了配置文件,我们必须重新启动服务才能使更改生效。
sudo systemctl restart elasticsearch
现在您已经配置了 Elasticsearch,让我们继续安装 Graylog。
第 2 步 — 安装 Graylog
在这一步中,我们将安装 Graylog 服务器。
首先,下载包含 Graylog 存储库配置的包文件。 访问【X10X】Graylog下载页面【X35X】查看当前版本号。 我们将在本教程中使用版本 2.2
。
wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb
接下来,从 .deb
包文件安装存储库配置,再次将 2.2
替换为您下载的版本。
sudo dpkg -i graylog-2.2-repository_latest.deb
现在存储库配置已经更新,我们必须获取新的包列表。 执行这个命令:
sudo apt-get update
接下来,安装 graylog-server
包:
sudo apt-get install graylog-server
最后,使用以下命令在系统启动时自动启动 Graylog:
sudo systemctl enable graylog-server.service
Graylog 现在安装成功了,但是还没有启动。 我们必须在它启动之前对其进行配置。
第 3 步 — 配置 Graylog
现在我们已经配置了 Elasticsearch 并安装了 Graylog,我们需要更改默认 Graylog 配置文件中的一些设置,然后才能使用它。 Graylog的配置文件默认位于/etc/graylog/server/server.conf
。
首先,我们需要设置 password_secret
的值。 Graylog 使用此值来保护存储的用户密码。 我们将使用随机生成的 128 个字符的值。
我们将使用 pwgen
来生成密码,如果尚未安装,请安装它:
sudo apt install pwgen
生成密码并将其放在 Graylog 配置文件中。 我们将使用 sed
程序将 password_secret
值注入到 Graylog 配置文件中。 这样我们就不必复制和粘贴任何值。 执行此命令以创建密钥并将其存储在文件中:
sudo -E sed -i -e "s/password_secret =.*/password_secret = $(pwgen -s 128 1)/" /etc/graylog/server/server.conf
有关使用 sed
的更多信息,请参阅 this DigitalOcean sed tutorial。
接下来,我们需要设置 root_password_sha2
的值。 这是您所需密码的 SHA-256 哈希 。 再次,我们将使用 sed
命令修改 Graylog 配置文件,这样我们就不必使用 shasum
手动生成 SHA-256 哈希并将其粘贴到配置文件中。
执行此命令,但将下面的 password
替换为您所需的默认管理员密码:
注意: 命令中有一个前导空格,它可以防止您的密码以纯文本形式存储在您的 Bash 历史记录中。
sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n 'password' | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf
现在,我们需要对配置文件进行更多更改。 使用编辑器打开 Graylog 配置文件:
sudo nano /etc/graylog/server/server.conf
查找并更改以下行,取消注释并将 graylog_public_ip
替换为您服务器的公共 IP。 这可以是 IP 地址或完全限定的域名。
/etc/graylog/server/server.conf
... rest_listen_uri = http://your_server_ip_or_domain:9000/api/ ... web_listen_uri = http://your_server_ip_or_domain:9000/ ...
保存文件并退出编辑器。
由于我们更改了配置文件,我们必须重新启动(或启动)graylog-server
服务。 即使服务器当前已停止,restart 命令也会启动服务器。
sudo systemctl restart graylog-server
接下来,检查服务器的状态。
sudo systemctl status graylog-server
输出应如下所示:
● graylog-server.service - Graylog server Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2017-03-03 20:10:34 PST; 1 months 7 days ago Docs: http://docs.graylog.org/ Main PID: 1300 (graylog-server) Tasks: 191 (limit: 9830) Memory: 1.2G CPU: 14h 57min 21.475s CGroup: /system.slice/graylog-server.service ├─1300 /bin/sh /usr/share/graylog-server/bin/graylog-server └─1388 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSCon
您应该看到 active
的状态。
如果输出报告系统未运行,请检查 /var/log/syslog
是否有任何错误。 确保在安装 Elasticsearch 时安装了 Java,并且在步骤 3 中更改了所有值。 然后再次尝试重新启动 Graylog 服务。
如果您已使用 ufw
配置防火墙,请为 TCP 端口 9000
添加防火墙例外,以便您可以访问 Web 界面:
sudo ufw allow 9000/tcp
Graylog 运行后,您应该能够使用 Web 浏览器访问 http://your_server_ip:9000
。 在重新启动 graylog-server
后,您可能需要等待最多五分钟才能启动 Web 界面。 此外,确保 MongoDB 正在运行。
现在 Graylog 运行正常,我们可以继续处理日志。
第 4 步 - 创建输入
让我们向 Graylog 添加一个新的输入来接收日志。 输入告诉 Graylog 监听哪个端口以及在接收日志时使用哪个协议。 我们将添加一个 Syslog UDP 输入,这是一种常用的日志记录协议。
当您在浏览器中访问 http://your_server_ip:9000
时,您会看到一个登录页面。 使用 admin
作为您的用户名,并使用您在步骤 3 中输入的密码作为您的密码。
登录后,您将看到一个标题为“入门”的页面,如下图所示:
要查看输入页面,请单击导航栏中的 System 下拉菜单并选择 Inputs。
然后您将看到一个下拉框,其中包含文本 Select Input。 从此下拉列表中选择 Syslog UDP,然后单击 Launch new input 按钮。
应出现带有表单的模式。 填写以下详细信息以创建您的输入:
- 对于 Node,选择您的服务器。 它应该是列表中的唯一项目。
- 对于 Title,输入合适的标题,例如
Linux Server Logs
。 - 对于绑定地址,使用您服务器的私有IP。 如果您还希望能够从外部服务器收集日志(不推荐,因为 Syslog 不支持身份验证),您可以将其设置为
0.0.0.0
(所有接口)。 - 对于 端口 ,输入
8514
。 请注意,我们在本教程中使用端口8514
,因为端口0
到1024
只能由 root 用户使用。 您可以使用1024
以上的任何端口号,只要它不与任何其他服务冲突即可。
单击保存。 本地输入列表将更新并显示您的新输入,如下图所示:
现在已经创建了一个输入,我们可以将一些日志发送到 Graylog。
第 5 步 — 配置服务器以将日志发送到 Graylog
我们在端口 8514
上配置并监听了一个输入,但是我们还没有向输入发送任何数据,所以我们不会看到任何结果。 rsyslog
是一个用于转发日志的软件实用程序,预装在 Ubuntu 上,因此我们将其配置为将日志发送到 Graylog。 在本教程中,我们将配置运行 Graylog 的 Ubuntu 服务器,以将其系统日志发送到我们刚刚创建的输入,但您可以在您可能拥有的任何其他服务器上执行这些步骤。
如果要从其他服务器向 Graylog 发送数据,则需要为 UDP 端口 8514
添加防火墙例外。
sudo ufw allow 8514/udp
在编辑器中创建并打开一个新的 rsyslog
配置文件。
sudo nano /etc/rsyslog.d/60-graylog.conf
将以下行添加到文件中,将 your_server_private_ip
替换为您的 Graylog 服务器的私有 IP。
/etc/rsyslog.d/60-graylog.conf
*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format
保存并退出您的编辑器。
重新启动 rsyslog
服务,使更改生效。
sudo systemctl restart rsyslog
对要从中发送日志的每台服务器重复这些步骤。
您现在应该能够在 Web 界面中查看您的日志。 单击导航栏中的 Sources 选项卡以查看源图表。 它应该看起来像这样:
您还可以单击导航栏中的 搜索 选项卡以查看最新日志的概览。
您可以在 Graylog 搜索文档 中了解有关搜索的更多信息。
结论
您现在有一个工作的 Graylog 服务器,其输入源可以从其他服务器收集日志。
接下来,您可能想要研究设置仪表板、警报和流。 仪表板提供日志的快速概览。 流对消息进行分类,您可以通过警报对其进行监控。 要了解有关配置 Graylog 更高级功能的更多信息,您可以在 Graylog 文档 中找到说明。