一、概念
ELK是Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。
通过上面对ELK简单的介绍,我们知道了ELK字面意义包含的每个开源框架的功能。市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。我们本教程主要也是围绕通过ELK如何搭建一个生产级的日志分析平台来讲解ELK的使用。
二、架构图
三、环境准备
四、具体实施
4.1优化系统(两台服务器都要操作的)
[root@ c701 ~]# vim /etc/security/limits.conf #在这个配置文件中添加一下内容
* soft nproc 63553
* hard nproc 63553
* soft nofile 63553
* hard nofile 63553
4.2测试是否优化完成
断开xshell,重新连接
[root@ c701 ~]# ulimit -n #有如下输出表示成功了
65535
4.3安装jdk环境
[root@ c701 ~]# rpm -ivh jdk-8u131-linux-x64_.rpm
Preparing... ################################# [100%]
Updating / installing...
1:jdk1.8.0_131-2000:1.8.0_131-fcs ################################# [100%]
Unpacking JAR files...
tools.jar...
plugin.jar...
javaws.jar...
deploy.jar...
rt.jar...
jsse.jar...
charsets.jar...
localedata.jar...
4.4安装ES+Kibana(c701服务器上操作的)
4.4.1安装ES
[root@ c701 ~]# rpm -ivh elasticsearch-6.6.2.rpm
warning: elasticsearch-6.6.2.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
Updating / installing...
1:elasticsearch-0:6.6.2-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
Created elasticsearch keystore in /etc/elasticsearch
4.4.2编辑ES的配置文件
[root@ c701 ~]# vim /etc/elasticsearch/elasticsearch.yml #修改以下内容
network.host: 10.0.0.41 #修改成本机的IP地址
http.port: 9200
4.4.3 开启ES服务
[root@ c701 ~]# systemctl restart elasticsearch
4.4.4安装Kibana
[root@ c701 ~]# rpm -ivh kibana-6.6.2-x86_64.rpm
warning: kibana-6.6.2-x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:kibana-6.6.2-1 ################################# [100%]
4.4.5 编辑kibana的配置文件
[root@ c701 ~]# vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.18.140:9200"] #这里是es服务器的IP地址
4.4.6 重启kibana的服务
[root@ c701 ~]# systemctl restart kibana
4.4.7 授权的一个操作
[root@ c701 ~]# chmod -R 777 /var/log/messages
4.5 安装logstash(c702服务器)
4.5.1安装logstash
[root@ c702 ~]# rpm -ivh logstash-6.6.0.rpm #这是表示已经安装过了,不需要再一次安装了
warning: logstash-6.6.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
package logstash-1:6.6.0-1.noarch is already installed
如果想要删除重新安装
[root@ c702 ~]# rpm -qa logstash #找到rpm包
logstash-6.6.0-1.noarch
[root@ c702 ~]# rpm -e logstash-6.6.0-1.noarch #删除
warning: /etc/logstash/logstash.yml saved as /etc/logstash/logstash.yml.rpmsave
[root@ c702 ~]# rpm -ivh logstash-6.6.0.rpm #重新安装
warning: logstash-6.6.0.rpm: Header V4 RSA/SHA512 Signature, key ID d88e42b4: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:logstash-1:6.6.0-1 ################################# [100%]
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash
4.5.2 编写一个收集日志的配置文件
[root@ c702 ~]# cd /etc/logstash/conf.d/ #存放所收集的日志的配置文件路径
[root@ c702 conf.d]# vim system.conf
input {
file {
path => "/var/log/messages"
type => "system-log"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => "10.0.0.41:9200"
index => "system_log-%{+YYYY.MM.dd}"
}
}
4.5.3重启服务
[root@ c702 conf.d]# systemctl restart logstash
4.6测试环境是否安装好了 (在两台都要操作)
[root@ c701 ~]# curl -X GET HTTP://10.0.0.41:9200/_cat/indices?v #这种情况是错误的
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open .kibana_1 7BLgtri6SEKMt7TF0RbRyQ 1 0 1 0 5.1kb 5.1kb
#出现以上错误是因为在c702这台机器上没有给予messages权限
[root@ c702 conf.d]# chmod -R 777 /var/log/messages
#再一次测试环境 要两台都成功才可以继续往下执行
[root@ c701 ~]# curl -X GET HTTP://10.0.0.41:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open system_log-2020.03.09 wJgaxl_KQD-zVDi0TE4sng 5 1 879 0 35.5kb 35.5kb
green open .kibana_1 7BLgtri6SEKMt7TF0RbRyQ 1 0 1 0 5.1kb 5.1kb
[root@ c702 ~]# curl -X GET HTTP://10.0.0.41:9200/_cat/indices?v
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
yellow open system_log-2020.03.09 wJgaxl_KQD-zVDi0TE4sng 5 1 19249 0 4.3mb 4.3mb
green open .kibana_1 7BLgtri6SEKMt7TF0RbRyQ 1 0 1 0 5.1kb 5.1kb
五、开始访问kibana的页面