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

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 如何在 Ubuntu 14.04 上安装 Graylog2 并实现日志集中管理

简介

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

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

关于 Graylog2 组件

Graylog2 有四个主要组件:

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

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

!Basic Graylog2 Setup

对于非常基本的设置,所有组件都可以安装在同一台服务器上。对于更大的生产设置,最好设置一些高可用性功能,因为如果服务器、Elasticsearch 或 MongoDB 组件遇到故障,Graylog2 将无法收集在故障期间生成的消息。

先决条件

本教程中描述的设置需要一个至少有 2GB RAM 的 Ubuntu 14.04 VPS。您还需要 root 访问权限(Ubuntu 14.04 的初始服务器设置的步骤 1-4)。

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

让我们开始安装软件!

安装 MongoDB

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

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

创建 MongoDB 源列表:

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

更新您的 apt 软件包数据库:

sudo apt-get update

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

sudo apt-get install mongodb-org

MongoDB 现在应该已经启动。让我们继续安装 Java 7。

安装 Java 7

Elasticsearch 需要 Java 7,所以我们现在将安装它。我们将安装 Oracle Java 7,因为这是 elasticsearch.org 上推荐的。但如果您决定选择 OpenJDK,它也应该可以正常工作。

将 Oracle Java PPA 添加到 apt:

sudo add-apt-repository ppa:webupd8team/java

更新您的 apt 软件包数据库:

sudo apt-get update

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

sudo apt-get install oracle-java7-installer

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

安装 Elasticsearch

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

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

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

sudo vi /etc/elasticsearch/elasticsearch.yml

找到指定 cluster.name 的部分。取消注释,并将默认值替换为 “graylog2”,使其如下所示:

cluster.name: graylog2

您还需要限制外部访问您的 Elasticsearch 实例(端口 9200),以防止外部人员通过 HTTP API 读取您的数据或关闭您的 Elasticsearch 集群。找到指定 network.bind_host 的行,并取消注释,使其如下所示:

network.bind_host: localhost

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

script.disable_dynamic: true

保存并退出。接下来,重新启动 Elasticsearch 以使我们的更改生效:

sudo service elasticsearch restart

几秒钟后,运行以下命令测试 Elasticsearch 是否正常运行:

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

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

安装 Graylog2 服务器

现在我们已经安装了其他所需的软件,让我们来安装 Graylog2 服务器。我们将在 /opt 目录下安装 Graylog2 服务器 v0.20.2。首先,使用以下命令将 Graylog2 存档文件下载到 /opt 目录:

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

然后解压缩存档:

sudo tar xvf graylog2-server-0.20.2.tgz

让我们创建一个符号链接指向新创建的目录,以简化目录名称:

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

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

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

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

sudo apt-get install pwgen

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

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

admin 密码是通过创建所需密码的 shasum,并将其分配给 Graylog2 配置文件中的 root_password_sha2 参数来分配的。使用以下命令创建所需密码的 shasum,将其中的突出显示的 “password” 替换为您自己的密码。sed 命令会将其插入到 Graylog2 配置中:

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 配置文件进行一些更改:

sudo vi /etc/graylog2.conf

您应该看到 password_secretroot_password_sha2 有随机字符串,因为您在上面的步骤中运行了命令。现在我们将配置 rest_transport_uri,这是 Graylog2 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

保存并退出。现在我们的 Graylog2 服务器已配置并准备好启动。

可选:如果您想测试一下,运行以下命令:

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

您应该会看到大量输出。一旦看到类似以下行的输出,您将知道您的 Graylog2 服务器已正确配置:

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

按下 CTRL-C 来终止测试并返回到 shell。

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

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

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

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


接下来,安装启动脚本:

sudo update-rc.d graylog2 defaults

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

sudo service graylog2 start

下一步是安装 Graylog2 web 接口。让我们现在就来做吧!

安装 Graylog2 Web 接口

我们将使用以下命令在 /opt 目录中下载并安装 Graylog2 v.0.20.2 web 接口:

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

让我们创建一个符号链接指向新创建的目录,以简化目录名称:

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

接下来,我们需要配置 web 接口的密钥,即 graylog2-web-interface.conf 中的 application.secret 参数。我们将生成另一个密钥,就像我们在 Graylog2 服务器配置中所做的那样,并使用 sed 插入它,如下所示:

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

现在打开 web 接口配置文件,使用以下命令:

sudo 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="<span class="highlight">http://127.0.0.1:12900/</span>"

Graylog2 web 接口现在已配置。让我们启动它来进行测试:

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

当您看到以下两行时,您将知道它已正确启动:

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

按下 CTRL-C 杀死 web 接口。现在让我们安装一个启动脚本。您可以创建自己的启动脚本,或者下载我为本教程创建的启动脚本。要将脚本下载到您的主目录,请使用以下命令:

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

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

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

现在您可以使用以下命令安装 web 接口初始化脚本:

sudo update-rc.d graylog2-web defaults

启动 Graylog2 web 接口:

sudo service graylog2-web start

现在我们可以使用 Graylog2 web 接口。让我们现在这样做。

配置 Graylog2 接收 syslog 消息

登录到 Graylog2 Web 接口

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

http://<span class="highlight">gl2_public_IP</span>:9000/

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

登录后,您将看到类似以下内容:

!Graylog2 仪表板

闪烁的红色 “1” 是一个通知。如果单击它,您将看到一条消息,指出您有一个没有运行 inputs 的节点。让我们现在添加一个输入以接收 UDP 上的 syslog 消息。

创建 Syslog UDP 输入

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

现在,从下拉菜单中选择 Syslog UDP,然后单击 Launch new input

将弹出一个 “启动新输入 Syslog UDP” 窗口。输入以下信息:

  • 标题:syslog
  • 端口:514
  • 绑定地址:gl2_private_IP

然后单击 Launch

现在您应该在 Running local inputs section 中看到一个名为 “syslog” 的输入(它应该有一个绿色框,其中写着 “running”),如下所示:

!Graylog syslog 输入

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

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

在您希望将系统日志消息发送到 Graylog2 的所有服务器上,执行以下步骤。

在 /etc/rsyslog.d 中创建一个 rsyslog 配置文件。我们将称其为 90-graylog2.conf

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

在该文件中,添加以下行以配置 rsyslog 将系统日志消息发送到您的 Graylog2 服务器(将 gl2_private_IP 替换为您的 Graylog2 服务器的私有 IP 地址):

$template GRAYLOGRFC5424,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msg%\n"

*.* @gl2_private_IP:514;GRAYLOGRFC5424


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

sudo 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 等软件重新格式化日志)以使日志更有结构和可搜索性。您还可以考虑通过分离组件并添加冗余性来扩展您的 Graylog2 环境,以提高性能和可用性。

祝您好运!


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5天前
|
存储 Ubuntu Linux
关于实体机安装Ubuntu 22.04.3-desktop-amd64遇见的一些问题
【10月更文挑战第5天】本文介绍了Ubuntu安装过程中常见的四个问题及其解决方案,包括分区设置、驱动问题、软件安装问题和启动问题。对于分区,推荐新手选择自动分区,手动分区需了解基本概念。驱动问题可通过安装相应硬件的Linux驱动解决。软件安装问题可更换国内镜像源或修复依赖关系。启动问题则可尝试进入恢复模式修复或根据错误提示信息寻求帮助。
|
2月前
|
Ubuntu Shell 网络安全
安装了ubuntu虚拟机后发现shell无法连接 ubuntu开启ssh连接
【8月更文挑战第23天】安装了ubuntu虚拟机后发现shell无法连接
138 6
|
1天前
|
Kubernetes 网络安全 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
基于Ubuntu-22.04安装K8s-v1.28.2实验(一)部署K8s
9 2
|
1天前
|
存储 Kubernetes 负载均衡
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
基于Ubuntu-22.04安装K8s-v1.28.2实验(四)使用域名访问网站应用
9 1
|
1天前
|
负载均衡 应用服务中间件 nginx
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
基于Ubuntu-22.04安装K8s-v1.28.2实验(二)使用kube-vip实现集群VIP访问
7 1
|
8天前
|
存储 Ubuntu
关于实体机安装Ubuntu 22.04.3-desktop-amd64遇见的一些问题
【10月更文挑战第2天】本文详细介绍了在使用 Ubuntu 过程中常见的五个问题及其解决方案:下载镜像文件速度慢或损坏,可更换镜像源或验证哈希值;制作启动盘失败,需检查 U 盘及设置;安装过程中的分区问题,需合理规划分区;安装后的驱动问题,可通过安装官方驱动解决;软件安装和更新问题,需检查仓库配置及依赖关系。
|
1月前
|
Ubuntu Linux Docker
Ubuntu 18.04 安装Docker实战案例
关于如何在Ubuntu 18.04系统上安装Docker的实战案例,包括安装步骤、配置镜像加速以及下载和运行Docker镜像的过程。
178 3
Ubuntu 18.04 安装Docker实战案例
|
1月前
|
Ubuntu 网络安全 开发工具
Ubuntu19.04的安装过程详解以及操作系统初始化配置
本文详细介绍了Ubuntu 19.04操作系统的安装过程、初始化配置、网络设置、软件源配置、SSH远程登录以及终端显示设置。
63 1
Ubuntu19.04的安装过程详解以及操作系统初始化配置
|
1天前
|
Kubernetes 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
9 0
|
24天前
|
存储 Prometheus 监控
在Ubuntu系统上安装与配置Prometheus的步骤
通过以上步骤,您应该已经成功在Ubuntu系统上安装并配置了Prometheus。您现在可以开始使用Prometheus收集和分析您的系统和应用程序的指标数据了。
47 1