如何在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 按钮。

应出现带有表单的模式。 填写以下详细信息以创建您的输入:

  1. 对于 Node,选择您的服务器。 它应该是列表中的唯一项目。
  2. 对于 Title,输入合适的标题,例如 Linux Server Logs
  3. 对于绑定地址,使用您服务器的私有IP。 如果您还希望能够从外部服务器收集日志(不推荐,因为 Syslog 不支持身份验证),您可以将其设置为 0.0.0.0(所有接口)。
  4. 对于 端口 ,输入 8514。 请注意,我们在本教程中使用端口 8514,因为端口 01024 只能由 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 文档 中找到说明。