如何在 CentOS 7 上安装 Graylog 1.x

介绍

在本教程中,我们将涵盖如何在CentOS 7上安装Graylog v1.3.x(有时称为Graylog2)并配置它以在集中位置收集系统的syslogs。Graylog是一个强大的日志管理和分析工具,具有许多用例,从监控SSH登录和异常活动到调试应用程序。

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

关于 Graylog 组件

Graylog有四个主要成分:

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

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

Basic Graylog Setup

本教程将实现一个非常基本的Graylog设置,所有组件都安装在同一个服务器上。

前提条件

本教程中描述的设置需要 CentOS 7 服务器,至少有 2 GB 的 RAM. 您还需要 root 或超级用户访问(步骤 1-4 中的 CentOS 7 初始服务器设置)。

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

让我们开始安装软件吧!

安装 MongoDB

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

1sudo rpm --import https://www.mongodb.org/static/pgp/server-3.2.asc

创建 MongoDB 源列表:

1echo '[mongodb-org-3.2]
2name=MongoDB Repository
3baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
4gpgcheck=1
5enabled=1' | sudo tee /etc/yum.repos.d/mongodb-org-3.2.repo

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

1sudo yum install -y mongodb-org

现在开始MongoDB:

1sudo systemctl restart mongod

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

安装Java

Elasticsearch 和 Logstash 需要 Java,所以我们现在会安装它。我们会安装最近的 Oracle Java 8 版本,因为这就是 Elasticsearch 推荐的。 但是,如果您选择使用 OpenJDK,它应该很好地工作。

转到您的主目录并下载Oracle Java 8(更新73,本文写作时最新的) JDK RPM,使用以下命令:

1wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u73-b02/jdk-8u73-linux-x64.rpm"

然后用这个 yum 命令安装 RPM (如果您下载了不同的版本,请在这里更换文件名):

1sudo yum -y localinstall jdk-8u73-linux-x64.rpm

现在Java应该在/usr/java/jdk1.8.0_73/jre/bin/java上安装,并从/usr/bin/java上链接。

您可以删除您之前下载的档案文件:

1rm ~/jdk-8u*-linux-x64.rpm

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

安装 Elasticsearch

Graylog 1.x 仅适用于 Elasticsearch 2.0 之前的版本,因此我们将安装 Elasticsearch 1.7.x. Elasticsearch 可以通过添加 Elastic 的包源列表来与包管理器一起安装。

运行以下命令将 Elasticsearch 公共 GPG 键导入 rpm:

1sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

通过运行此命令为 Elasticsearch 创建一个新的 yum 存储文件:

1echo '[elasticsearch-1.7]
2name=Elasticsearch repository for 1.7.x packages
3baseurl=http://packages.elastic.co/elasticsearch/1.7/centos
4gpgcheck=1
5gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
6enabled=1' | sudo tee /etc/yum.repos.d/elasticsearch.repo

使用此命令安装 Elasticsearch:

1sudo yum -y install elasticsearch

Elasticsearch 已安装,让我们编辑配置:

1sudo vi /etc/elasticsearch/elasticsearch.yml

查找指定的cluster.name的部分,删除它,并用graylog-development取代默认值,以便它看起来如下:

1[label elasticsearch.yml — 1 of 2]
2cluster.name: graylog-development

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

1[label elasticsearch.yml — 2 of 2]
2network.host: localhost

保存并退出elasticsearch.yml

现在开始 Elasticsearch:

1sudo systemctl restart elasticsearch

然后运行以下命令启动 Elasticsearch 启动:

1sudo systemctl enable elasticsearch

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

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

现在Elasticsearch正在运行,让我们安装Graylog服务器。

安装 Graylog 服务器

现在我们已经安装了其他必要的软件,让我们安装Graylog的服务器组件,‘graylog-server’。

首先,使用此命令将 Graylog RPM 包下载到您的系统:

1sudo rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-1.3-repository-el7_latest.rpm

然后用这些命令安装graylog-server包:

1sudo yum -y install graylog-server

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

1sudo yum -y install epel-release
2sudo yum -y install pwgen

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

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

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

1PASSWORD=$(echo -n password | sha256sum | awk '{print $1}')
2sudo -E sed -i -e 's/root_password_sha2 =.*/root_password_sha2 = '$PASSWORD'/' /etc/graylog/server/server.conf

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

1sudo vi /etc/graylog/server/server.conf

您应该看到password_secretroot_password_sha2因您在上面的步骤中运行的命令而具有随机字符串。

现在我们将配置rest_transport_uri,这就是Graylog Web 接口将如何与服务器进行通信. 因为我们在一个服务器上安装所有组件,让我们将值设置为127.0.0.1,或localhost

1[label /etc/graylog/server/server.conf — 1 of 4]
2rest_transport_uri = http://127.0.0.1:12900/

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

1[label /etc/graylog/server/server.conf — 2 of 4]
2elasticsearch_shards = 1

接下来,将elasticsearch_cluster_name的值更改为graylog-development(与cluster.name的Elasticsearch相同):

1[label /etc/graylog/server/server.conf — 3 of 4]
2elasticsearch_cluster_name = graylog-development

解析这两个行以发现使用unicast而不是multicast的Elasticsearch实例:

1[label /etc/graylog/server/server.conf — 4 of 4]
2elasticsearch_discovery_zen_ping_multicast_enabled = false
3elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300

现在graylog-server已配置并准备启动。

使用服务命令启动 Graylog 服务器:

1sudo systemctl start graylog-server

下一步是安装Graylog Web接口,现在就去做吧!

安装Graylog Web

使用此命令安装 Graylog Web:

1sudo yum -y install graylog-web

接下来,我们要配置 Web 接口的秘密密密钥,在 web.conf 中的 application.secret 参数. 我们将生成另一个密钥,就像我们在 Graylog 服务器配置中一样,并用 sed 插入,如下:

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

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

1sudo vi /etc/graylog/web/web.conf

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

1[label /etc/graylog/web/web.conf excerpt]
2graylog2-server.uris="http://127.0.0.1:12900/"

Graylog Web 接口现在已配置。启动 Graylog Web 接口:

1sudo systemctl restart graylog-web

现在我们可以使用Graylog Web接口,现在就来做吧。

配置 Graylog 以接收 syslog 消息

登录到 Graylog Web 界面

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

1[secondary_label In a web browser:]
2http://graylog_public_IP:9000/

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

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

Graylog Dashboard

顶部的红色数字是一个通知. 如果你点击它,你会看到一个消息,说你有一个节点没有任何运行输入. 让我们添加一个输入来接收通过UDP的 syslog消息。

创建 Syslog UDP 输入

若要添加输入以接收 syslog 消息,请点击顶部菜单中的 ** System** 滚动键。

现在,从下滑菜单中,选择 Inputs

从下滑菜单中选择 Syslog UDP ,然后单击 ** 启动新输入** 按钮。

一个启动新输入: _Syslog UDP_模式窗口将出现. 输入以下信息(在您的服务器的私人IP地址中替代绑定地址):

  • 标题: syslog
  • 端口: 8514
  • 链接地址: graylog_private_IP

然后点击启动

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

Graylog syslog input

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

配置 Rsyslog 将 Syslogs 发送到 Graylog 服务器

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

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

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

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

1[label /etc/rsyslog.d/90-graylog.conf]
2$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"
3*.* @graylog_private_IP:8514;GRAYLOGRFC5424

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

1sudo systemctl restart rsyslog

在您想要监控的所有服务器上完成配置 rsyslog 后,请返回 Graylog Web 界面。

查看您的 Graylog 来源

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

1[secondary_label In a web browser:]
2http://graylog_public_IP:9000/

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

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

搜索您的 Graylog 数据

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

Graylog Example Search

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

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

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

有关搜索栏如何工作的更多信息,请参阅官方文档: Graylog Searching

结论

现在你已经设置了Graylog,请自由探索其提供的其他功能。你可以将其他类型的日志发送到Graylog,并设置提取器(或使用软件如logstash的改编日志),以使日志更加结构化和可搜索。

好运!

Published At
Categories with 技术
comments powered by Disqus