原文:https://www.howtoing.com/install-elasticsearch-logstash-and-kibana-elk-stack-on-centos-rhel-7html
若是你是一个曾经或过去负责检查和分析Linux系统日志的人,那么你知道若是同时监视多个服务,这个任务可能会成为一个噩梦。java
在过去的几天中,该任务必须大多数手动完成,每一个日志类型单独处理。 幸运的是,Elasticsearch,Logstash和Kibana的在服务器端的结合,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栈,对每一个部件作什么的简短解释说明:cookie
在中央服务器上安装如下软件包。 首先,咱们将安装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
要安装Elasticsearch,Logstash和Kibana的最新版本,咱们将不得不手动建立Yum库以下:
1.导入Elasticsearch公共GPG钥匙RPM软件包管理器:
# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
2.将如下几行库配置文件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:
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
上述命令的输出应相似于:
确保你完成上述步骤,而后用Logstash进行。 因为两个Logstash和Kibana共享Elasticsearch GPG密钥,则无需从新导入安装软件包以前。
建议阅读: 在CentOS 7管理系统日志(配置,旋转和导入到数据库中)
7.将如下行库配置文件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
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来自客户的到来。 确保证书和密钥的路径匹配上一步中概述的正确路径:
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
)文件:
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消息:
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
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
14.将如下几行库配置文件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界面:
咱们已经安装并在客户端配置的Filebeat以后,咱们将回到这里。
建议阅读: 在实时监控服务器日志在Linux的“Log.io”工具
咱们将向你展现如何为客户端#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中)基于分布:
[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配置存储在YAML文件,这须要严格的缩进。 当心这是你编辑/etc/filebeat/filebeat.yml
以下:
input_type: log document_type: syslog
上述步骤以下图所示:
保存更改,而后从新启动Filebeat在客户端:
# systemctl restart filebeat
一旦咱们在客户上完成上述步骤,请随时前进。
为了验证来自客户端的日志,能够发送和接收成功,运行ELK服务器上如下命令:
# curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'
输出应该相似于(注意如何从信息的/ var / log / messages文件和/ var /日志/安全正在从客户端1和客户端2接收):
不然,检查错误Filebeat配置文件。
# journalctl -xe
在尝试从新启动Filebeat将指向您的违规行。
在咱们验证日志由客户端运送并在服务器上成功接收后。 咱们将在Kibana要作的第一件事是配置索引模式并将其设置为默认值。
您能够在关系数据库上下文中将索引描述为完整数据库。 咱们将与去filebeat-*
(或者你可使用一个更精确的搜索条件中所解释的正式文件 )。
输入filebeat-*
在索引名称或图案字段 ,而后单击建立 :
请注意,您之后将被容许输入更细粒度的搜索条件。 接下来,单击绿色矩形中的星形将其配置为默认索引模式:
最后,在发现菜单中,你会发现几个字段添加到日志可视化报告。 只需将鼠标悬停在他们,而后单击Add:
结果将显示在屏幕的中心区域,如上所示。 随意玩弄(添加和删除的日志报表字段),以熟悉Kibana。
默认状况下,Kibana会显示最后15分钟期间处理的记录(见右上角),但你能够经过选择另外一个时间框架改变这种行为:
在本文中,咱们解释了如何设置ELK以收集由两个客户端(CentOS 7和Debian 8机器)发送的系统日志。
如今,你能够参考官方Elasticsearch文档并找到如何使用此设置的检查和更有效地分析你的日志的详细信息。
若是你有任何问题,不要犹豫问。 咱们期待您的回音。