如何在 Ubuntu 14.04 上安装 Graylog2 并集中管理日志

介绍

在本教程中,我们将涵盖安装Graylog2(v0.20.2),并将其配置为集中地收集我们系统的syslogs。Graylog2是一个强大的日志管理和分析工具,有许多用例,从监控SSH登录和异常活动到调试应用程序。

<$>[注] 注: 本教程适用于过时版本的Graylog2. 一个新的版本在这里可用: How To Install Graylog 1.x on Ubuntu 14.04

可以使用Graylog2来收集和监控各种各样的日志,但我们会将本教程的范围限制在syslog收集上。

关于Graylog2 组件

Graylog2有四个主要成分:

  • Graylog2 服务器节点 : 作为接收和处理消息的工人,并与所有其他非服务器组件进行通信。 其性能为 CPU dependent
  • Elasticsearch 节点 : 存储所有日志/消息。 其性能为 RAM 和磁盘 I/O dependent
  • MongoDB : 存储元数据并不会经历太多 load
  • Web 接口 : 用户界面

以下是 Graylog2 组件的图表(请注意,这些消息是从其他服务器发送的):

Basic Graylog2 Setup

对于较大的生产设置,设置一些高可用性功能是明智的,因为如果服务器,Elasticsearch或MongoDB组件经历了中断,Graylog2不会收集中断期间生成的消息。

前提条件

在本教程中描述的设置需要 Ubuntu 14.04 VPS 至少有 2 GB 的 RAM. 您还需要 root 访问(步骤 1-4 与 Ubuntu 14.04 初始服务器设置(https://www.digitalocean.com/community/articles/initial-server-setup-with-ubuntu-14-04))。

如果您使用的是 RAM 少于 2 GB 的 VPS,您将无法启动所有 Graylog2 组件。

让我们开始安装软件吧!

安装 MongoDB

安装 MongoDB 非常简单,快速,运行以下命令将 MongoDB 公共 GPG 密钥导入 apt:

1sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10

创建 MongoDB 源列表:

1echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list

更新您的 apt 数据库:

1sudo apt-get update

使用此命令安装 MongoDB 的最新稳定版本:

1sudo apt-get install mongodb-org

MongoDB 应该现在启动并运行,让我们继续安装 Java 7。

安装Java 7

Elasticsearch需要Java 7,所以我们现在将安装它,我们会安装Oracle Java 7,因为这是在elasticsearch.org上推荐的。

将 Oracle Java PPA 添加到 apt:

1sudo add-apt-repository ppa:webupd8team/java

更新您的 apt 数据库:

1sudo apt-get update

使用此命令安装 Oracle Java 7 的最新稳定版本(并接受出现的许可协议):

1sudo apt-get install oracle-java7-installer

现在 Java 7 已安装,让我们安装 Elasticsearch。

安装 Elasticsearch

Graylog2 v0.20.2 需要 Elasticsearch v.0.90.10 下载并使用以下命令安装:

1cd ~; wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.deb
2sudo dpkg -i elasticsearch-0.90.10.deb

我们需要更改 Elasticsearch cluster.name 设置. 打开 Elasticsearch 配置文件:

1sudo vi /etc/elasticsearch/elasticsearch.yml

尋找指定「cluster.name」的部分. 解釋它,並以「graylog2」取代默認值,讓它看起來如下:

1cluster.name: graylog2

您还需要限制对您的 Elasticsearch 实例的外部访问(端口 9200),以便外部人员无法通过 HTTP API 读取您的数据或关闭您的 Elasticseach 集群。

1network.bind_host: localhost

然后在文件中添加以下行,以禁用动态脚本:

1script.disable_dynamic: true

然后,重新启动 Elasticsearch 以使我们的更改生效:

1sudo service elasticsearch restart

几秒钟后,运行以下操作来测试 Elasticsearch 是否正常运行:

1curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'

现在Elasticsearch已启动并运行,让我们安装Graylog2服务器。

安装 Graylog2 服务器

现在我们已经安装了其他所需的软件,让我们安装Graylog2服务器. 我们将安装Graylog2服务器 v0.20.2 in /opt. 首先,下载Graylog2档案到 /opt用这个命令:

1cd /opt; sudo wget https://github.com/Graylog2/graylog2-server/releases/download/0.20.2/graylog2-server-0.20.2.tgz

然后提取档案:

1sudo tar xvf graylog2-server-0.20.2.tgz

让我们创建一个标志性的链接到新创建的目录,以简化目录名称:

1sudo ln -s graylog2-server-0.20.2 graylog2-server

将示例配置文件复制到正确的位置,在 /etc 中:

1sudo cp /opt/graylog2-server/graylog2.conf.example /etc/graylog2.conf

安装 pwgen,我们将使用它来生成密码秘密密钥:

1sudo apt-get install pwgen

现在我们必须配置 admin 密码和秘密密钥. 密码秘密密钥配置在 graylog2.conf 中,通过 password_secret 参数。 我们可以生成随机密钥并将其插入到 Graylog2 配置中,使用以下两个命令:

1SECRET=$(pwgen -s 96 1)
2sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog2.conf

通过创建所需密码的shasum来分配 admin 密码,并将其分配到 Graylog2 配置文件中的root_password_sha2参数中。 使用以下命令创建所需密码的 shasum,用您自己的代替所突出的密码:

PASSWORD=$(echo -n password | shasum -a 256 | awk '{print $1}')
sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog2.conf

现在,管理员密码已经设置,让我们打开Graylog2配置来做一些更改:

1sudo vi /etc/graylog2.conf

你应该看到password_secretroot_password_sha2有随机字符串,因为你在上面的步骤中运行的命令。现在我们将配置rest_transport_uri,这就是Graylog2网页接口将如何与服务器通信。因为我们在单个服务器上安装所有组件,让我们将值设置为127.0.0.1,或 localhost。找到和解除评论rest_transport_uri,并改变它的值,以便它看起来如下:

rest_transport_uri = http://127.0.0.1:12900/

接下来,因为我们只有一个 Elasticsearch 碎片(在这个服务器上运行),我们会将 `elasticsearch_shards' 的值更改为 1:

elasticsearch_shards = 1

现在我们的Graylog2服务器已配置并准备启动。

** 可选** :如果您想测试它,请执行以下命令:

1sudo java -jar /opt/graylog2-server/graylog2-server.jar --debug

一旦你看到类似于下列行的输出,你会知道你的Graylog2服务器已正确配置:

12014-06-06 14:16:13,420 INFO : org.graylog2.Core - Started REST API at <http://127.0.0.1:12900/>
22014-06-06 14:16:13,421 INFO : org.graylog2.Main - Graylog2 up and running.

CTRL-C来杀死测试并返回壳。

现在让我们安装 Graylog2 init 脚本. 复制 graylog2ctl 到 /etc/init.d:

1sudo cp /opt/graylog2-server/bin/graylog2ctl /etc/init.d/graylog2

更新启动脚本以将 Graylog2 日志放入 /var/log,并在 `/opt/graylog2-server 中搜索 Graylog2 服务器 JAR 文件,运行以下两个 sed 命令:

sudo sed -i -e 's/GRAYLOG2_SERVER_JAR=\${GRAYLOG2_SERVER_JAR:=graylog2-server.jar}/GRAYLOG2_SERVER_JAR=\${GRAYLOG2_SERVER_JAR:=\/opt\/graylog2-server\/graylog2-server.jar}/' /etc/init.d/graylog2
sudo sed -i -e 's/LOG_FILE=\${LOG_FILE:=log\/graylog2-server.log}/LOG_FILE=\${LOG_FILE:=\/var\/log\/graylog2-server.log}/' /etc/init.d/graylog2

接下来,安装启动脚本:

1sudo update-rc.d graylog2 defaults

现在我们可以使用服务命令启动Graylog2服务器:

1sudo service graylog2 start

下一步是安装Graylog2网页接口,现在就去做吧!

安装 Graylog2 Web 接口

我们将下载并安装 Graylog2 v.0.20.2 在 /opt 中的 Web 界面,使用以下命令:

1cd /opt; sudo wget https://github.com/Graylog2/graylog2-web-interface/releases/download/0.20.2/graylog2-web-interface-0.20.2.tgz
2sudo tar xvf graylog2-web-interface-0.20.2.tgz

让我们创建一个标志性的链接到新创建的目录,以简化目录名称:

1sudo ln -s graylog2-web-interface-0.20.2 graylog2-web-interface

接下来,我们要在 graylog2-web-interface.conf 中配置 Web 接口的秘密密密钥,即application.secret参数。

1SECRET=$(pwgen -s 96 1)
2sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

现在用这个命令打开 Web 界面配置文件:

1sudo vi /opt/graylog2-web-interface/conf/graylog2-web-interface.conf

现在我们需要更新 Web 接口的配置,以指定 graylog2-server.uris 参数. 这是服务器 REST URI 的一个命令列表. 因为我们只有一个 Graylog2 服务器节点,所以值应该与 Graylog2 服务器配置中的 rest_listen_uri’ 相匹配(即http://127.0.0.1:12900/`).

graylog2-server.uris="http://127.0.0.1:12900/"

Graylog2 Web 接口现在已配置,让我们开始测试它:

1sudo /opt/graylog2-web-interface-0.20.2/bin/graylog2-web-interface

你会知道它开始正确,当你看到以下两个行:

1[info] play - Application started (Prod)
2[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

点击CTRL-C来杀死 Web 界面. 现在让我们安装一个启动脚本. 您可以创建自己的,或下载我为本教程创建的一个。

1cd ~; wget https://assets.digitalocean.com/articles/graylog2/graylog2-web

接下来,您将要将其复制到 /etc/init.d,并将其所有权更改为 root,其权限更改为 755:

1sudo cp ~/graylog2-web /etc/init.d/
2sudo chown root:root /etc/init.d/graylog2-web
3sudo chmod 755 /etc/init.d/graylog2-web

现在你可以用这个命令安装Web界面 init脚本:

1sudo update-rc.d graylog2-web defaults

启动 Graylog2 Web 界面:

1sudo service graylog2-web start

现在我们可以使用Graylog2网页接口,让我们现在做。

配置 Graylog2 接收 syslog 消息

使用 Graylog2 Web 接口

在您最喜欢的浏览器中,前往 VPS 的公共 IP 地址的端口 9000:

http://gl2_public_IP:9000/

您应该看到登录屏幕. 输入admin作为您的用户名和密码,您之前设置的管理员密码。

一旦登录,你会看到这样的东西:

Graylog2 Dashboard

闪烁的红色1是一个通知. 如果你点击它,你会看到一个消息,说你有一个节点没有运行 inputs

创建 Syslog UDP 输入

若要添加输入以接收 syslog 消息,请在右侧的 System 菜单中单击 Inputs

现在,从下载菜单中,选择 Syslog UDP 并单击 Launch new input

将出现一个启动新输入 _Syslog UDP_窗口,输入以下信息:

  • 标题: syslog
  • 端口: 514
  • 链接地址: gl2_private_IP

然后点击 _Launch。

您现在应该在运行本地输入部分中看到一个名为syslog的输入(并且应该有一个绿色框,上面说运行),如下:

Graylog syslog input

现在我们的 Graylog2 服务器已经准备好从您的服务器接收 syslog 消息,现在让我们将我们的服务器配置为将其 syslog 消息发送到 Graylog2。

配置 rsyslog 发送到您的 Graylog2 服务器

在您要向 Graylog2 发送 syslog 消息的所有服务器上,请执行以下步骤。

在 /etc/rsyslog.d 中创建一个 rsyslog 配置文件,我们将称呼我们的 90-graylog2.conf:

1sudo vi /etc/rsyslog.d/90-graylog2.conf

在此文件中,添加以下行来配置 rsyslog 以将 syslog 消息发送到您的 Graylog2 服务器(以您的 Graylog2 服务器的私人 IP 地址代替 gl2_private_IP):

$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
*.* @gl2_private_IP:514;GRAYLOGRFC5424

保存和终止. 此文件将从现在起作为您的 rsyslog 配置的一部分加载. 现在您需要重新启动 rsyslog 以使您的更改生效。

1sudo service rsyslog restart

在您想要监控的所有服务器上完成配置 rsyslog 后,让我们回到 Graylog2 Web 界面。

查看您的 Graylog2 来源

在您最喜欢的浏览器中,前往 VPS 的公共 IP 地址的端口 9000:

http://gl2_public_IP:9000/

在顶部栏中点击 Sources,您将看到您配置 rsyslog 的所有服务器的列表。

Graylog2 Sources

来源的主机名在左边,Graylog2接收的消息数在右边。

搜索您的 Graylog2 数据

允许您的 Graylog2 收集消息一段时间后,您将能够搜索这些消息,例如,让我们搜索sshd,看看我们的服务器上发生了什么样的 SSH 活动。

Graylog2 Example Search

正如您所看到的,我们的示例搜索结果显示了各种服务器的 sshd 日志,以及许多失败的 root 登录尝试. 您的结果可能会有所不同,但可以帮助您识别许多问题,包括未经授权的用户试图访问您的服务器。

除了所有源的基本搜索功能外,您还可以搜索特定主机的日志或特定时间框架。

例如,如果您想在发生事件后查看服务器或多个服务器的日志,则 Graylog2 中的数据搜索非常有用。

有关搜索栏如何运作的更多信息,请参阅官方文件: 搜索栏解释

结论

现在您已经安装了 Graylog2,您可以自由探索其提供的其他功能. 您可以将其他类型的日志发送到 Graylog2,并设置提取器(或使用 logstash 等软件修订日志),以使日志更加结构化和可搜索。

好运!

By Mitchell Anicas
Published At
Categories with 技术
comments powered by Disqus