专栏首页云计算教程系列如何在CentOS 7上安装Graylog 1.x.
原创

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

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

可以使用Graylog来收集和监视各种日志,但我们将本教程的范围限制为syslog收集。此外,因为我们正在演示Graylog的基础知识,所以我们将在单个服务器上安装所有组件。

关于Graylog Components

Graylog有四个主要组成部分:

  • Graylog Server节点:用作接收和处理消息的工作者,并与所有其他非服务器组件通信。它的性能取决于CPU
  • Elasticsearch节点:存储所有日志/消息。其性能取决于RAM和磁盘I / O.
  • MongoDB:存储元数据,不会遇到太多负载
  • Web界面:用户界面

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

本教程将实现一个非常基本的Graylog设置,所有组件都安装在同一台服务器上。对于更大的生产设置,出于性能原因,建议在不同的服务器上安装组件。

课程准备

本教程中描述的设置需要具有至少2GB RAM的CentOS 7服务器。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。您还需要root或超级用户访问权限。

如果使用RAM小于2GB的VPS,则无法启动所有Graylog组件。

我们开始安装软件吧!

安装MongoDB

MongoDB安装简单快捷。运行以下命令将MongoDB公共GPG密钥导入rpm:

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

创建MongoDB源列表:

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

使用以下命令安装最新的稳定版MongoDB:

sudo yum install -y mongodb-org

现在启动MongoDB:

sudo systemctl restart mongod

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

安装Java

Elasticsearch和Logstash需要Java,所以我们现在就安装它。我们将安装最新版本的Oracle Java 8,因为这是Elasticsearch推荐的。但是,如果您决定走这条路,它应该可以与OpenJDK一起使用。遵循本节中的步骤意味着您接受Java SE的Oracle二进制许可协议。

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

wget --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(如果您下载了其他版本,请在此处替换文件名):

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

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

您可以删除先前下载的存档文件:

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

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

安装Elasticsearch

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

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

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

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

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

使用以下命令安装Elasticsearch:

sudo yum -y install elasticsearch

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

sudo vi /etc/elasticsearch/elasticsearch.yml

找到指定cluster.name的部分。取消注释,并用“graylog-development”替换默认值,如下所示:

cluster.name: graylog-development

您需要限制对Elasticsearch实例(端口9200)的外部访问,因此外人无法通过HTTP API读取您的数据或关闭您的Elasticsearch集群。找到指定network.host的行,取消注释,并将其值替换为“localhost”,使其如下所示:

network.host: localhost

保存并退出elasticsearch.yml

现在启动Elasticsearch:

sudo systemctl restart elasticsearch

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

sudo systemctl enable elasticsearch

片刻之后,运行以下命令以测试Elasticsearch是否正常运行:

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

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

安装Graylog Server

现在我们已经安装了其他所需的软件,让我们安装Graylog的服务器组件graylog-server

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

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

然后使用以下命令安装包graylog-server

sudo yum -y install graylog-server

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

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

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

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

通过创建一个指定shasum所需的密码,并且将其分配到所述Graylog配置文件中的root_password_sha2参数,可以分配管理员密码。使用以下命令创建所需密码的shasum,用您自己的密码替换突出显示的“密码”。sed命令为您将其插入到Graylog配置中:

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

现在设置了管理员密码,让我们打开Graylog配置进行一些更改:

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

您在运行在上述步骤中的命令后,您应该看到password_secretroot_password_sha2会拥有随机字符串。

现在我们将配置rest_transport_uri,这是Graylog Web界面与服务器通信的方式。因为我们要在单个服务器上安装所有组件,所以让我们将值设置为127.0.0.1,或localhost。查找并取消注释rest_transport_uri,并更改其值,使其如下所示:

rest_transport_uri = http://127.0.0.1:12900/

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

elasticsearch_shards = 1

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

elasticsearch_cluster_name = graylog-development

取消注释这两行以使用单播而不是多播来发现Elasticsearch实例:

elasticsearch_discovery_zen_ping_multicast_enabled = false
elasticsearch_discovery_zen_ping_unicast_hosts = 127.0.0.1:9300

保存并退出。现在graylog-server已配置并准备启动。

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

sudo systemctl start graylog-server

下一步是安装Graylog Web界面。我们现在就这样做!

安装Graylog Web

使用以下命令安装Graylog Web:

sudo yum -y install graylog-web

接下来,我们要配置Web界面的密钥,即web.conf中application.secret参数。我们将生成另一个键,就像我们使用Graylog服务器配置一样,并使用sed插入它,如下所示:

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

现在使用以下命令打开Web界面配置文件:

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

现在我们需要更新Web界面的配置以指定graylog2-server.uris参数。这是服务器REST URI的逗号分隔列表。由于我们只有一个Graylog服务器节点,因此该值应与Graylog服务器配置中的rest_listen_uri值匹配。

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

现在配置了Graylog Web界面。启动Graylog Web界面:

sudo systemctl restart graylog-web

现在我们可以使用Graylog Web界面。我们现在就这样做。

配置Graylog以接收syslog消息

登录Graylog Web界面

在您喜欢的Web浏览器中,转到务器的公共IP地址的9000端口:

In a web browser:http://graylog_public_IP:9000/

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

登录后,您将看到如下内容:

顶部的红色数字是通知。如果单击它,您将看到一条消息,指出您有一个没有任何运行输入的节点。让我们添加一个输入来接收UDP上的syslog消息。

创建Syslog UDP输入

要添加输入以接收系统日志消息,请单击顶部菜单中的系统下拉列表。

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

从下拉菜单中选择Syslog UDP,然后单击Launch new input按钮。

将弹出“启动新输入:Syslog UDP ”模式窗口。输入以下信息(在服务器的私有IP地址中替换绑定地址):

  • 标题: syslog
  • 港口: 8514
  • 绑定地址: graylog_private_IP

然后单击Launch

您现在应该在Local inputs部分看到一个名为“syslog”的输入(它应该有一个绿色框,旁边显示“running”),如下所示:

现在,我们的Graylog服务器已准备好从您的服务器接收端口8514上的系统日志消息。让我们配置您的服务器,立即将他们的系统日志消息发送给Graylog。

配置Rsyslog以将Syslog发送到Graylog Server

在所有客户端服务器上,要将系统日志消息发送到Graylog的服务器,请执行以下步骤。

在/etc/rsyslog.d中创建rsyslog配置文件。我们将调用 90-graylog.conf

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

在此文件中,添加以下行以配置rsyslog以将系统日志消息发送到Graylog服务器(用Graylog服务器的专用IP地址来替换graylog_private_IP):

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

保存并退出。从现在开始,此文件将作为rsyslog配置的一部分加载。现在,您需要重新启动rsyslog才能使更改生效。

sudo systemctl restart rsyslog

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

查看您的Graylog来源

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

In a web browser:http://graylog_public_IP:9000/

单击顶部栏中的“ 来源 ”。您将看到已配置rsyslog的所有服务器的列表。

源的主机名在左侧,右侧是Graylog接收的消息数。

搜索您的Graylog数据

让Graylog收集邮件一段时间后,您将能够搜索邮件。例如,让我们搜索“sshd”,看看我们的服务器上发生了什么样的SSH活动。以下是我们结果的片段:

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

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

例如,如果您想在事件发生后查看服务器或多个服务器的日志,则搜索Graylog中的数据非常有用。集中日志记录可以更轻松地关联相关事件,因为您无需登录多个服务器即可查看已发生的所有事件。

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

结论

现在您已经设置了Graylog,请随时浏览它提供的其他功能。您可以将其他类型的日志发送到Graylog,并设置提取器(或使用logstash等软件重新格式化日志),以使日志更加结构化和可搜索。您还可以通过分离组件并添加冗余来提高性能和可用性,从而扩展Graylog环境。

更多CentOS教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Install Graylog 1.x on CentOS 7》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在Ubuntu 16.04上使用Docker和Docker Compose配置持续集成测试环境

    持续集成(CI)是指开发人员尽可能经常集成代码并在每个提交在通过自动构建合并到共享存储库之前和之后进行测试的实践。

    小翼111
  • 如何在Ubuntu 16.04上使用Netdata设置实时性能监控

    Netdata通过可扩展的Web仪表板提供准确的性能监控,可以显示Linux系统上的流程和服务。它监控有关CPU,内存,磁盘,网络,进程等的指标。

    小翼111
  • 如何在Ubuntu上搭建方舟:生存进化服务器

    《方舟:生存进化》(英语:Ark: Survival Evolved)是一款由Studio Wildcard制作与发行的生存类沙盒动作冒险游戏,使用虚幻4引擎打...

    小翼111
  • 如何在Ubuntu 14.04上安装Graylog 1.x.

    在本教程中,我们将介绍如何在Ubuntu 14.04上安装Graylog v1.3.x(有时称为Graylog2),并将其配置为在集中位置收集系统的syslog...

    温浪
  • 识别自动驾驶的深度

    有许多传感器可用于在车辆行驶时捕获信息。捕获的各种测量结果包括速度,位置,深度,热等。这些测量结果被输入到反馈系统中,该系统训练并利用运动模型来遵守车辆。本文重...

    代码医生工作室
  • 【有三说图像】图像简史与基础

    用户1508658
  • html5学习笔记(二)

    1. min、max、step属性用于包含数字或日期的input类型规定限定(约束)。

  • 自己动手制作elasticsearch的ik分词器的Docker镜像

    版权声明:欢迎转载,请注明出处,谢谢。 https://blog.csdn.net/boling_...

    程序员欣宸
  • 图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正

    通过采用图像处理技术,可以将数码设备采 集到的文字、图片等信息转化成其他信息形势输出,例如转化成音频输出己解决视 障患者的视力需求。但是,由于输入设备或某些其他...

    拓端
  • ubuntu命令大全

    查看软件xxx安装内容 #dpkg -L xxx 查找软件 #apt-cache search 正则表达式 查找文件属于哪个包 #dpkg -S fil...

    闵开慧

扫码关注云+社区

领取腾讯云代金券