介绍
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仅适用于某些版本的Elasticearch。 例如,Graylog 2.x不适用于Elasticsearch 5.x. 请参阅这个Greylog-Elasticsearch版本对照表中的确切版本。 本教程使用Elasticsearch 2.4.4和Graylog 2.2。
- MongoDB,可以通过遵循MongoDB教程安装 。
第1步 - 配置弹性搜索
我们需要修改Elasticsearch配置文件,使得集群名称与Graylog配置文件中的集合名称相匹配。 为了简单起见,我们将弹性搜索集群名称设置为默认的Graylog的graylog名称。 您可以将其设置为任何您想要的,但请确保更新Graylog配置文件以反映该更改。
在编辑器中打开Elasticsearch配置文件:
sudo nano /etc/elasticsearch/elasticsearch.yml
找到以下行:
cluster.name: <CURRENT CLUSTER NAME>
将cluster.name
值更改为graylog
:
cluster.name: graylog
保存文件并退出编辑器。
由于我们修改了配置文件,我们必须重新启动服务才能使更改生效。
sudo systemctl restart elasticsearch
现在您已经配置了Elasticsearch,我们继续安装Graylog。
第2步 - 安装Graylog
在此步骤中,我们将安装Graylog服务器。
首先,下载包含Graylog存储库配置的软件包文件。 访问Graylog下载页面以查找当前版本号。 我们将在本教程中使用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
更多信息,请参阅此DigitalOcean sed教程 。
接下来,我们需要设置root_password_sha2
值。 这是您所需密码的SHA-256哈希值 。 再次,我们将使用sed
命令来修改Graylog配置文件,因此我们不必使用shasum
手动生成SHA-256哈希并将其粘贴到配置文件中。
执行此命令,但请使用您所需的默认管理员密码替换以下密码:
注意:该命令中有一个前导空间,这样可以防止您的密码作为纯文本存储在您的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
查找并更改以下行,取消注释它们,并用服务器的公共IP替换graylog_public_ip
。 这可以是IP地址或完全限定域名。
...
rest_listen_uri = http://your_server_ip_or_domain:9000/api/
...
web_listen_uri = http://your_server_ip_or_domain:9000/
...
保存文件并退出编辑器。
由于我们更改了配置文件,因此我们必须重新启动(或启动)这个graylog-server
。 即使当前停止,重新启动命令将启动服务器。
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
为active
状态。
如果输出报告系统未运行,请检查/var/log/syslog
是否有任何错误。 确保您在安装Elasticsearch时安装了Java,并且更改了第3步中的所有值。然后再次重新启动Graylog服务。
如果您使用ufw配置了防火墙,请为TCP端口9000
添加防火墙异常,以便您可以访问Web界面:
sudo ufw allow 9000/tcp
一旦Graylog运行,您应该可以使用网络浏览器访问http:// your_server_ip :9000
。 在Web界面启动之前,您可能需要等待五分钟才能重新启动graylog-server
。 另外,确保MongoDB正在运行。
现在Graylog运行正常,我们可以继续处理日志。
第4步 - 创建输入
我们为Graylog添加一个新的输入来接收日志。 输入告诉Graylog要收听的端口以及接收日志时要使用的协议。 我们将添加一个Syslog UDP输入,它是常用的日志记录协议。
当您在浏览器中访问http:// your_server_ip :9000
时,您将看到一个登录页面。 使用admin
作为您的用户名,并使用您在第3步中输入的密码作为密码。
登录后,您会看到一个名为“入门”的页面,如下图所示:
要查看输入页面,请单击导航栏中的系统下拉列表,然后选择输入 。
然后,您将看到一个包含文本Select Input的下拉框。 从此下拉列表中选择Syslog UDP ,然后单击Launch new input按钮。
应该出现一个形式的模态。 填写以下详细信息以创建您的输入:
- 对于节点 ,选择您的服务器。 它应该是列表中唯一的项目。
- 对于标题 ,输入一个合适的标题,如
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 your_server_private_ip
为您的Graylog服务器的专用IP。
*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format
保存并退出编辑器。
重新启动rsyslog
服务,以便更改生效。
sudo systemctl restart rsyslog
对要发送日志的每个服务器重复这些步骤。
您现在应该可以在Web界面中查看日志。 单击导航栏中的“ 来源 ”选项卡以查看源的图形。 它应该看起来像这样:
您还可以单击导航栏中的“ 搜索 ”选项卡,查看最近日志的概述。
结论
您现在拥有一个可以从其他服务器收集日志的输入源的工作的Graylog服务器。
接下来,您可能需要查看设置仪表板,警报和流。 仪表板提供了您的日志的快速概述。 流将邮件分类,您可以使用警报来监控邮件。 要了解有关配置Graylog更高级功能的更多信息,可以在Graylog文档中找到说明 。