如何在CentOS / RHEL 7上安装Elasticsearch,Logstash和Kibana(ELK)

在本文中,我们将解释如何设置ELK(Elasticsearch,Logstash和Kibana)以收集客户端发送的系统日志,CentOS 7和

如果你是一个曾经或过去负责检查和分析Linux系统日志的人,那么你知道如果同时监视多个服务,这个任务可能会成为一个噩梦。

在过去的几天中,该任务必须大多数手动完成,每个日志类型单独处理。 幸运的是,Elasticsearch,LogstashKibana的在服务器端的结合,Filebeat在客户端一起,使得一旦艰巨的任务,像今天,在公园里散步。

前三个部件形成所谓的ELK栈,其主要目的是在同一时间(也称为集中式记录)收集来自多个服务器的日志。

建议阅读: 4优秀的开源日志监控和管理工具用于Linux

内置的基于java的Web界面允许您快速检查日志,以方便比较和故障排除。 这些客户端日志发送到由Filebeat中央服务器,它可以被描述为一个日志传送代理。

让我们看看所有这些部分如何组合在一起。 我们的测试环境包括以下机器:

Central Server: CentOS 7 (IP address: 192.168.0.29). 2 GB of RAM.
Client #1: CentOS 7 (IP address: 192.168.0.100). 1 GB of RAM.
Client #2: Debian 8 (IP address: 192.168.0.101). 1 GB of RAM.

请注意,这里提供的RAM值是不严格的先决条件,但建议值,成功实现了中央服务器上的ELK 在客户端上较少的RAM将没有太大的差别,如果有的话,在所有。

在服务器上安装ELK

首先,让我们在服务器上安装的ELK栈,对每个部件做什么的简短解释说明:

  1. Elasticsearch存储由客户端发送的日志。
  2. Logstash处理这些日志。
  3. Kibana提供Web界面,这将帮助我们检查和分析日志。

在中央服务器上安装以下软件包。 首先,我们将安装Java JDK版本8(更新102,最新一期在写这篇文章的时候),这是ELK组件的依赖。

您可能需要首先检查在Java下载页面点击这里 ,查看是否有可用的较新的更新。

# yum update
# cd /opt
# 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/8u102-b14/jre-8u102-linux-x64.rpm"
# rpm -Uvh jre-8u102-linux-x64.rpm

检查安装是否成功完成的时间:

# java -version
从命令行检查Java版本

从命令行检查Java版本

要安装Elasticsearch,LogstashKibana的最新版本,我们将不得不手动创建Yum库如下:

启用Elasticsearch Repository

1.导入Elasticsearch公共GPG钥匙RPM软件包管理器:

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

2.将以下几行库配置文件elasticsearch.repo

/etc/yum.repos.d/elasticsearch.repo
[elasticsearch]
name=Elasticsearch repository
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

3.安装Elasticsearch包。

# yum install elasticsearch

安装完成后,将提示您启动并启用elasticsearch:

在Linux中安装Elasticsearch

在Linux中安装Elasticsearch

4.启动并启用该服务。

# systemctl daemon-reload
# systemctl enable elasticsearch
# systemctl start elasticsearch

5.通过TCP端口9200在你的防火墙允许通信:

# firewall-cmd --add-port=9200/tcp
# firewall-cmd --add-port=9200/tcp --permanent

6.检查Elasticsearch响应通过HTTP简单的请求:

# curl -X GET http://localhost:9200

上述命令的输出应类似于:

验证Elasticsearch安装

验证Elasticsearch安装

确保你完成上述步骤,然后用Logstash进行。 由于两个LogstashKibana共享Elasticsearch GPG密钥,则无需重新导入安装软件包之前。

建议阅读: 在CentOS 7管理系统日志(配置,旋转和导入到数据库中)

启用Logstash存储库

7.将以下行库配置文件logstash.repo

/etc/yum.repos.d/logstash.repo
[logstash]
name=Logstash
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

8.安装Logstash包:

# yum install logstash

9.添加基于在下面的下面的行ELK服务器的IP地址的SSL证书[ v3_ca ]在第/etc/pki/tls/openssl.cnf

[ v3_ca ]
subjectAltName = IP: 192.168.0.29
添加Elasticsearch服务器IP地址

添加Elasticsearch服务器IP地址

10.生成自签名的证书,有效期365天:

# cd /etc/pki/tls
# openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

11.配置Logstash输入,输出和滤波器文件:

输入 :创建/etc/logstash/conf.d/input.conf并插入以下行进去。 这是必要的Logstash“ 学习 ”如何处理Beats来自客户的到来。 确保证书和密钥的路径匹配上一步中概述的正确路径:

/etc/logstash/conf.d/input.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}

输出( /etc/logstash/conf.d/output.conf )文件:

/etc/logstash/conf.d/output.conf
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}

滤波器( /etc/logstash/conf.d/filter.conf )文件。 为了简单,我们将记录syslog消息:

/etc/logstash/conf.d/filter.conf
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGLINE}" }
}
date {
match => [ "timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}

12.验证Logstash配置文件。

# service logstash configtest
验证Logstash配置

验证Logstash配置

13.启动并启用logstash:

# systemctl daemon-reload
# systemctl start logstash
# systemctl enable logstash

14.配置防火墙以允许Logstash从客户端(TCP端口5044)得到日志:

# firewall-cmd --add-port=5044/tcp
# firewall-cmd --add-port=5044/tcp --permanent

启用Kibana存储库

14.将以下几行库配置文件kibana.repo

/etc/yum.repos.d/kibana.repo
[kibana]
name=Kibana repository
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

15.安装Kibana包:

# yum install kibana

16.启动并启用Kibana。

# systemctl daemon-reload
# systemctl start kibana
# systemctl enable kibana

17.确保您可以从另一台计算机访问接入Kibana的Web界面(允许TCP端口5601上的流量):

# firewall-cmd --add-port=5601/tcp
# firewall-cmd --add-port=5601/tcp --permanent

18.启动Kibana( http://192.168.0.29:5601 )来验证您可以访问Web界面:

访问Kibana Web界面

访问Kibana Web界面

我们已经安装并在客户端配置的Filebeat之后,我们将回到这里。

建议阅读: 在实时监控服务器日志在Linux的“Log.io”工具

在客户端服务器上安装Filebeat

我们将向你展示如何为客户端#1这样做(重复的客户端#2之后,改变路径,如果适用于您的分布)。

1.从服务器到客户机复制SSL证书:

# scp /etc/pki/tls/certs/logstash-forwarder.crt root@192.168.0.100:/etc/pki/tls/certs/

2.导入Elasticsearch公共GPG钥匙RPM软件包管理器:

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

3.创建Filebeat(存储库/etc/yum.repos.d/filebeat.repo CentOS中)基于分布:

/etc/yum.repos.d/filebeat.repo
[filebeat]
name=Filebeat for ELK clients
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

4.配置源在Debian及其衍生物安装Filebeat:

# aptitude install apt-transport-https
# echo "deb https://packages.elastic.co/beats/apt stable main" > /etc/apt/sources.list.d/filebeat.list
# aptitude update

5.安装Filebeat包:

# yum install filebeat        [On CentOS and based Distros]
# aptitude install filebeat   [On Debian and its derivatives]

6.启动并启用Filebeat:

# systemctl start filebeat
# systemctl enable filebeat

配置Filebeat

这里提醒一下的话。Filebeat配置存储在YAML文件,这需要严格的缩进。 小心这是你编辑/etc/filebeat/filebeat.yml如下:

  1. 路径 ,指出哪些日志文件应“运”到ELK服务器。
  2. 淘金
input_type: log
document_type: syslog
  1. 输出
    1. 取消对与logstash开头的行。
    2. 表明您ELK服务器和端口的IP地址,其中Logstash在主机听。
    3. 确保路径证书指向您在步骤创建I(Logstash部分)高于实际文件。

上述步骤如下图所示:

在客户端服务器中配置Filebeat

在客户端服务器中配置Filebeat

保存更改,然后重新启动Filebeat在客户端:

# systemctl restart filebeat

一旦我们在客户上完成上述步骤,请随时前进。

测试Filebeat

为了验证来自客户端的日志,可以发送和接收成功,运行ELK服务器上以下命令:

# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

输出应该类似于(注意如何从信息的/ var / log / messages文件/ var /日志/安全正在从客户端1客户端2接收):

测试Filebeat

测试Filebeat

否则,检查错误Filebeat配置文件。

# journalctl -xe

在尝试重新启动Filebeat将指向您的违规行。

测试Kibana

在我们验证日志由客户端运送并在服务器上成功接收后。 我们将在Kibana要做的第一件事是配置索引模式并将其设置为默认值。

您可以在关系数据库上下文中将索引描述为完整数据库。 我们将与去filebeat-* (或者你可以使用一个更精确的搜索条件中所解释的正式文件 )。

输入filebeat-*索引名称图案字段 ,然后单击创建

测试Kibana

测试Kibana

请注意,您以后将被允许输入更细粒度的搜索条件。 接下来,单击绿色矩形中的星形将其配置为默认索引模式:

配置默认Kibana索引模式

配置默认Kibana索引模式

最后,在发现菜单中,你会发现几个字段添加到日志可视化报告。 只需将鼠标悬停在他们,然后单击Add:

添加日志可视化报告

添加日志可视化报告

结果将显示在屏幕的中心区域,如上所示。 随意玩弄(添加和删除的日志报表字段),以熟悉Kibana。

默认情况下,Kibana会显示最后15分钟期间处理的记录(见右上角),但你可以通过选择另一个时间框架改变这种行为:

Kibana日志报告

Kibana日志报告

概要

在本文中,我们解释了如何设置ELK以收集由两个客户端(CentOS 7和Debian 8机器)发送的系统日志。

现在,你可以参考官方Elasticsearch文档并找到如何使用此设置的检查和更有效地分析你的日志的详细信息。

如果你有任何问题,不要犹豫问。 我们期待您的回音。