如何在 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日志并进行多维度分析。
目录
相关文章
|
10天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
57 2
|
10天前
|
并行计算 PyTorch TensorFlow
Ubuntu安装笔记(一):安装显卡驱动、cuda/cudnn、Anaconda、Pytorch、Tensorflow、Opencv、Visdom、FFMPEG、卸载一些不必要的预装软件
这篇文章是关于如何在Ubuntu操作系统上安装显卡驱动、CUDA、CUDNN、Anaconda、PyTorch、TensorFlow、OpenCV、FFMPEG以及卸载不必要的预装软件的详细指南。
768 3
|
4天前
|
Ubuntu Linux 测试技术
Linux系统之Ubuntu安装cockpit管理工具
【10月更文挑战第13天】Linux系统之Ubuntu安装cockpit管理工具
25 4
Linux系统之Ubuntu安装cockpit管理工具
|
9天前
|
Ubuntu 应用服务中间件 nginx
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
本文是关于Ubuntu系统中使用ffmpeg 3.2.16源码编译OpenCV 3.4.0的安装笔记,包括安装ffmpeg、编译OpenCV、卸载OpenCV以及常见报错处理。
42 2
Ubuntu安装笔记(三):ffmpeg(3.2.16)源码编译opencv(3.4.0)
|
9天前
|
Ubuntu Linux C语言
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
本文介绍了在Ubuntu 18.04系统上编译安装OpenCV 3.4.0及其扩展包opencv_contrib 3.4.0的详细步骤,包括下载源码、安装依赖、配置CMake和编译安装,以及常见问题的解决方法。
14 1
Ubuntu安装笔记(二):ubuntu18.04编译安装opencv 3.4.0 opencv_contrib3.4.0
|
10天前
|
Ubuntu 虚拟化
软件安装(二):VMware ubuntu20.04 安装步骤
这篇文章是关于如何在VMware Workstation 16 Player上安装Ubuntu 20.04桌面版的详细步骤指南。
74 2
软件安装(二):VMware ubuntu20.04 安装步骤
|
11天前
|
PyTorch TensorFlow 算法框架/工具
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
本文提供了在Ubuntu 18.04操作系统的NVIDIA Jetson平台上安装深度学习和计算机视觉相关库的详细步骤,包括PyTorch、OpenCV、ONNX、TensorFlow等。
23 1
Jetson环境安装(一):Ubuntu18.04安装pytorch、opencv、onnx、tensorflow、setuptools、pycuda....
|
13天前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
46 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
5天前
|
Kubernetes Ubuntu Docker
从0开始搞K8S:使用Ubuntu进行安装(环境安装)
通过上述步骤,你已经在Ubuntu上成功搭建了一个基本的Kubernetes单节点集群。这只是开始,Kubernetes的世界广阔且深邃,接下来你可以尝试部署应用、了解Kubernetes的高级概念如Services、Deployments、Ingress等,以及探索如何利用Helm等工具进行应用管理,逐步提升你的Kubernetes技能树。记住,实践是最好的老师,不断实验与学习,你将逐渐掌握这一强大的容器编排技术。
17 1
|
9天前
|
Ubuntu Linux
软件安装(五):Ubuntu 18.04安装Teamviewer 看一遍就会
这篇文章介绍了在Ubuntu 18.04系统上通过图形界面和命令行两种方法安装TeamViewer远程控制软件的步骤。
16 2