如何在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 条评论
登录 后参与评论

相关文章

来自专栏磨磨谈

基于Docker UI 配置ceph集群

前一篇介绍了docker在命令行下面进行的ceph部署,本篇用docker的UI进行ceph的部署,目前来说市面上还没有一款能够比较简单就能直接在OS上面去部署...

13320
来自专栏铭毅天下

Elasticsearch存储深入详解

在本文中,我们将研究Elasticsearch的各个部分写入数据目录的文件。我们将查看节点,索引和分片级文件,并简要说明其内容,以便了解Elasticsearc...

2.3K20
来自专栏Hongten

hadoop2-HBase的安装和测试

https://www.cnblogs.com/hongten/p/hongten_hadoop_hbase.html

28910
来自专栏cmazxiaoma的架构师之路

蛋疼的ElasticSearch(二)之配置ElasticSearch Head插件

42860
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Graylog 1.x.

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

18220
来自专栏菩提树下的杨过

vmware安装cent os 6.5 + oracle 11g xe + jboss eap 6.2 + weblogic 12c+ webshpere mq 7.5

mac系统发展速度确实很快,短短数年,mac os上已经能网银支付(中行、招行、工商、支付宝等均已全面支持mac os了),windows上的经典常用软件:qq...

17820
来自专栏程序员同行者

ELKstack简介及环境部署

Logstash的运行依赖于Java运行环境, Logstash 1.5以上不低于java 7推荐使用最新版本的Java。由于只是运行Java程序,而不是开发,...

17240
来自专栏散尽浮华

完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建

公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务。 以下对openstack的...

3.6K110
来自专栏云计算教程系列

如何使用Winston记录Node.js应用程序

在本指南中,我们将重点介绍Winston的日志包,这是一个极其通用的日志库,是基于NPM下载统计信息,可用于Node.js应用程序的日志记录解决方案。Winst...

92450
来自专栏颇忒脱的技术博客

Spring Cloud Config配置文件最佳实践

大多数Spring Cloud项目都会使用Spring Cloud Config来管理应用启动时的配置文件,同时开发人员面临着多样化的程序启动方式:操作系统进程...

58220

扫码关注云+社区

领取腾讯云代金券