专栏首页云计算教程系列如何在Ubuntu 16.04上使用Graylog 2管理日志
原创

如何在Ubuntu 16.04上使用Graylog 2管理日志

介绍

Graylog是一个功能强大的开源日志管理平台。它聚合并从服务器日志中提取重要数据,这些数据通常使用Syslog协议发送。它还允许您在Web界面中搜索和可视化日志。

在本教程中,您将在Ubuntu 16.04上安装和配置Graylog,并设置一个接收系统日志的简单输入。

准备

在开始本教程之前,您需要:

  • 一个Ubuntu 16.04服务器,具有至少2 GB的RAM,并启用了专用网络,以及非root用户。
  • 安装Oracle JDK 8
  • 安装Elasticsearch 2.x。某些版本的Graylog仅适用于某些版本的Elasticearch。本教程使用Elasticsearch 2.4.4和Graylog 2.2。
  • 安装MongoDB

第一步 - 配置Elasticsearch

我们需要修改Elasticsearch配置文件,以便集群名称与Graylog配置文件中设置的名称匹配。为了简单起见,我们将Elasticsearch集群名称设置为默认的Graylog名称graylog。您可以将其设置为您想要的任何内容,但请确保更新Graylog配置文件以反映该更改。

在编辑器中打开Elasticsearch配置文件:

$ sudo nano /etc/elasticsearch/elasticsearch.yml

找到以下行:

/etc/elasticsearch/elasticsearch.yml

cluster.name: <CURRENT CLUSTER NAME>

cluster.name值更改为graylog

/etc/elasticsearch/elasticsearch.yml

cluster.name: graylog

保存文件并退出编辑器。

由于我们修改了配置文件,因此我们必须重新启动服务才能使更改生效。

$ sudo systemctl restart elasticsearch

现在您已经配置了Elasticsearch,让我们继续安装Graylog。

第二步 - 安装Graylog

在这一步中,我们将安装Graylog服务器。

首先,下载包含Graylog存储库配置的包文件。访问Graylog下载页面以查找当前版本号。我们将在本教程中使用版本2.2。

$ wget https://packages.graylog2.org/repo/packages/graylog-2.2-repository_latest.deb

接下来,从.deb软件包文件安装存储库配置,再次替换您下载的版本2.2

$ sudo dpkg -i graylog-2.2-repository_latest.deb

现在存储库配置已更新,我们必须获取新的软件包列表。执行以下命令:

$ sudo apt-get update

接下来,安装graylog-server软件包:

$ sudo apt-get install graylog-server

最后,使用以下命令在系统引导时自动启动Graylog:

$ sudo systemctl enable graylog-server.service

Graylog现已成功安装,但尚未启动。我们必须在它开始之前对其进行配置。

第三步 - 配置Graylog

现在我们已经安装了Elasticsearch并安装了Graylog,我们需要在默认的Graylog配置文件中更改一些设置才能使用它。Graylog的配置文件默认位于/etc/graylog/server/server.conf中。

首先,我们需要设置password_secret值。Graylog使用此值来保护存储的用户密码。我们将使用随机生成的128个字符的值。

我们将使用pwgen生成密码,如果尚未安装,请先使用以下命令安装:

$ sudo apt install pwgen

生成密码后将其放在Graylog配置文件中。我们将使用sed程序将password_secret值注入到Graylog配置文件中。这样我们就不必复制和粘贴任何值了。执行此命令以创建密钥并将其存储在文件中:

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

接下来,我们需要设置root_password_sha2值。您所需的密码需要一个SHA-256 哈希值。

再次,我们将使用sed命令修改Graylog配置文件,这样我们就不必使用shasum手动生成SHA-256哈希并将其粘贴到配置文件中。

执行此命令,但请在password在下面替换为您所需的默认管理员密码:

注意:命令中有一个前导空格,可防止您的密码在Bash历史记录中以纯文本格式存储。

$ sudo sed -i -e "s/root_password_sha2 =.*/root_password_sha2 = $(echo -n 'password' | shasum -a 256 | cut -d' ' -f1)/" /etc/graylog/server/server.conf

现在,我们需要对配置文件进行更多更改。使用编辑器打开Graylog配置文件:

$ sudo nano /etc/graylog/server/server.conf

查找并更改以下行,取消注释并替换graylog_public_ip为服务器的公共IP。可以为IP地址或完全限定的域名。

/etc/graylog/server/server.conf

...
rest_listen_uri = http://your_server_ip_or_domain:9000/api/

...
web_listen_uri = http://your_server_ip_or_domain:9000/

...

保存文件并退出编辑器。

由于我们更改了配置文件,因此我们必须重新启动(或启动)该graylog-server服务。即使当前已停止,restart命令也将启动服务器。

$ sudo systemctl restart graylog-server

接下来,检查服务器的状态。

$ sudo systemctl status graylog-server

输出结果应该如下所示:

● graylog-server.service - Graylog server
   Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-03 20:10:34 PST; 1 months 7 days ago
     Docs: http://docs.graylog.org/
 Main PID: 1300 (graylog-server)
    Tasks: 191 (limit: 9830)
   Memory: 1.2G
      CPU: 14h 57min 21.475s
   CGroup: /system.slice/graylog-server.service
           ├─1300 /bin/sh /usr/share/graylog-server/bin/graylog-server
           └─1388 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSweepGC -XX:+CMSCon

您应该看到active的状态。

如果输出报告系统未运行,请检查/var/log/syslog是否存在任何错误。确保在安装Elasticsearch时安装了Java,并且在第三步中更改了所有值。之后再次尝试重新启动Graylog服务。

如果已使用ufw配置防火墙,请为TCP端口9000的防火墙添加一条例外,以便可以访问Web界面:

$ sudo ufw allow 9000/tcp

当Graylog运行后,您应该可以使用Web浏览器访问http://your_server_ip:9000。重启graylog-server后,您可能需要等待最多五分钟才能启动Web界面。另外,请确保MongoDB正在运行。当Graylog正常运行时,我们可以继续处理日志。

第四步 - 创建输入项

让我们在Graylog中添加一个新输入项来接收日志。输入项告诉Graylog要监听哪个端口以及接收日志时使用哪个协议。我们将添加一个Syslog UDP输入项,即一种常用的日志记录协议。

当您在浏览器中访问http://your_server_ip:9000时,您将看到一个登录页面。使用admin作为您的用户名,并使用您在第三步中输入的密码。

登录后,您会看到一个标题为“Getting Started”的页面,如下图所示:

Getting Started页面

要查看输入页面,请单击导航栏中的“ System”下拉列表,然后选择“ Inputs”

然后,您将看到一个包含文本Select Input的下拉框。从此下拉列表中选择Syslog UDP,然后单击Launch new input按钮。

应该出现带有表单的模态。填写以下详细信息以创建输入项:

  1. 对于Node,请选择您的服务器。其应该是列表中唯一的项目。
  2. 对于标题,请输入合适的标题,例如Linux Server Logs
  3. 对于绑定地址,请使用服务器的专用IP。如果您还希望能够从外部服务器收集日志(不推荐,因为Syslog不支持身份验证),您可以将其设置为0.0.0.0(所有接口)。
  4. 对于Port,请输入8514。请注意,我们在本教程中使用端口8514 ,因为端口0到1024只能由root用户使用。您可以使用1024以上的任何端口号,只要它不与任何其他服务冲突即可。

单击保存。本地输入列表将更新并显示您的新输入项,如下图所示:

Local inputs

现在已经创建了输入项,我们可以将一些日志发送到Graylog。

第五步 - 配置服务器以将日志发送到Graylog

我们有一个已配置的输入项和侦听端口8514,但我们还没有向输入项发送过任何数据,所以我们不会看到任何结果。rsyslog是一个用于转发日志的软件实用程序,并预先安装在Ubuntu上,因此我们将其配置为将日志发送到Graylog。在本教程中,我们将配置运行Graylog的Ubuntu服务器将其系统日志发送到我们刚刚创建的输入项中,但您可以在您可能拥有的任何其他服务器上执行这些步骤。

如果要从其他服务器向Graylog发送数据,则需要为UDP端口8514的防火墙添加一条例外。

$ sudo ufw allow 8514/udp

在编辑器中创建并打开一个新rsyslog配置文件。

$ sudo nano /etc/rsyslog.d/60-graylog.conf

将以下行添加到文件中,替换your_server_private_ip为Graylog服务器的专用IP。

/etc/rsyslog.d/60-graylog.conf

*.* @your_server_private_ip:8514;RSYSLOG_SyslogProtocol23Format

保存并退出编辑器。

重新启动rsyslog服务以使更改生效。

$ sudo systemctl restart rsyslog

对要从中发送日志的每个服务器重复这些步骤。

您现在应该能够在Web界面中查看日志。单击导航栏中的“Sources”选项卡以查看源的图表。它应该看起来像这样:

Sources

您还可以单击导航栏中的“ Search”选项卡以查看最新日志的概述。

结论

您现在将有一个正常运行的Graylog服务器,其输入源可以从其他服务器收集日志。接下来,您可能希望了解如何设置仪表板,警报和流。仪表板提供日志的快速概览。Streams对邮件进行分类,您可以使用警报进行监控。如果您对如何在Ubuntu 16.04上使用Logrotate管理日志文件感兴趣,可以访问腾讯云查看相关内容。


参考文献:《How to Manage Logs with Graylog 2 on Ubuntu 16.04》

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

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在CentOS 7上使用OTRS设置帮助台系统

    OTRS是一个开源的票证请求系统。它为用户,客户,IT人员,IT服务和任何外部组织提供单点联系。该程序是用Perl编写的,支持各种数据库(MySQL,Postg...

    何处惹尘埃
  • 如何在CentOS 7上使用Linux审计系统

    在Linux审核系统可以帮助系统管理员创建一个审计跟踪,日志服务器上的每一个动作。我们可以通过检查审计日志文件来跟踪与安全相关的事件,将事件记录在日志文件中,以...

    何处惹尘埃
  • 如何在Ubuntu 14.04上设置Masterless Puppet环境

    在现代云计算领域,配置管理是至关重要的一步。配置管理工具允许您可靠地将配置部署到服务器。Puppet是这个领域中比较成熟的配置管理工具之一。

    何处惹尘埃
  • 软件分享 | office2010安装教程

    4、选择1是一键式安装,默认安装全部且安装在系统盘,选择2为自定义安装,这里点击自定义安装。

    课代表
  • 不要争了!技术选择没那么重要

    很多开发者非常热衷于比较不同技术,比如:Angular 是否比 Vue.js 更好?Node.js 能否取代 Java?究竟应该选择 MySQL 还是 Mong...

    Fundebug
  • 软件将统治机器人世界?

    “首先我们拿下了曼哈顿,下一个目标是柏林。” —Leonard Cohen在计算机产业发展的早期,硬件占据着绝对的统治地位。 我的哥哥那个现在还放在车库里出奇昂...

    机器人网
  • Redux基本用法,为周日的先行者课程准备着。

    众所周知,React只是一个View层而已,它不是一个完整的前端解决方案。只是给出了页面组件化的解决思路,但组件之间如何沟通?代码之间的结构?它并没有给出更多的...

    web前端教室
  • 中心化交易所弊端尽显,DEX时代即将到来?用户分析告诉你

    去中心化交易所留在以太坊链上的数据已是书面史,工件、日志条目、交易和合同消息在这里都可以保留。

    区块链大本营
  • 百度烽火算法 2.0 来了,你做好防劫持了吗?

    最近不知道为啥?明月总是因为自己的疏忽造成一些看着很怪异的问题,比如最近明月博客上的微博同步插件就突然失效了,无法完成文章发布的同步在插件设置里死活无法获取到 ...

    明月云服务
  • 资源安全

    在所有异常分之里记得释放资源,存在较为严重的安全隐患。此处,引入ScopedExit的封装,使用C++特有的RAII机制,在析构函数中完成资源的安全释放;即使程...

    用户1332428

扫码关注云+社区

领取腾讯云代金券