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

原文:https://www.howtoing.com/install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-rhel-7html

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

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

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

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

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

让咱们看看全部这些部分如何组合在一块儿。 咱们的测试环境包括如下机器:安全

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栈,对每一个部件作什么的简短解释说明:cookie

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

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

您可能须要首先检查在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文档并找到如何使用此设置的检查和更有效地分析你的日志的详细信息。

若是你有任何问题,不要犹豫问。 咱们期待您的回音。

相关文章
相关标签/搜索