ELK搭建
需求背景
业务量庞大、服务器越来越多
需要集中管理日志
为什么用ELK
完整的集中式日志系统需要包含以下几点:
1、收集-能够收集多种类型的日志
2、传输-能够稳定的把数据传输到中央系统
3、存储-如何存储日志(保留最近3个月的)
4、分析-可以支持UI的分析(时间维度)
5、警报-能够提供错误报告,监控机制
什么是ELK
ElasticSearch、Logstash、Kibana
1、ES是一款开源的分布式搜索引擎,具有收集、分析、存储数据的能力。其优点是:零配置、分布式、自动发现、索引自动分片、索引副本机制、restful风格接口、多数据源、自动搜索负载等。
2、Logstash主要用来,搜集、分析、过滤、 传输数据。
3、Kibana免费的开源工具、提供友好的WEB界面、帮助汇总、分析、搜索重要数据日志。
后期的发展
由于Logstash对CPU、内存、io方面资源占用较多,所以出现了Beats这个轻量级的日志采集器。
现在较为流行的是es+beats+kibana
关于x-pack工具
该工具提供了安全、警报、监控、报表、图表于一身的拓展包、是收费的
架构图
![架构图](https://s1.51cto.com/images/blog/201803/02/18a4bf43c1fcb34cdbc426ddd12b77ec.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
准备工作
软件版本
- Elasticsearch-6.0.0
- logstash-6.0.0
- kibana-6.0.0
- filebeat-6.0.0
部署ELK
安装ES
-
采用rpm方式安装
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.rpm rpm -ivh elasticsearch-6.0.0.rpm
-
配置ES
配置文件分别在
/etc/elasticsearch
/etc/sysconfig/elasticsearch
/etc/elasticsearch/elasticsearch.yml 主要用来配置集群节点相关信息
/etc/sysconfig/elasticsearch/elasticsearch 主要配置服务本身相关的配置,例如:某个配置文件的路径,java路径等。 -
排错记录
注意配置JAVA_HOME,尤其是在profile里
-
启动服务
systemctl start elasticsearch.service
查看端口状况
会发现占用了两个端口 9200和9300
9300是集群通讯端口,9200是数据传输端口 -
验证服务
查看集群健康状态
curl ‘host:9200/_cluster/health?pretty’
查看集群详细信息
curl ‘host:9200/_cluster/state?pretty’
安装kibana
-
rpm方式安装
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-x86_64.rpm rpm -ivh kibana-6.0.0-x86_64.rpm
-
进行配置
[root@master-node ~]# vim /etc/kibana/kibana.yml # 增加以下内容 server.port: 5601 # 配置kibana的端口 server.host: 192.168.77.128 # 配置监听ip elasticsearch.url: "http://192.168.77.128:9200" # 配置es服务器的ip,如果是集群则配置该集群中主 点的ip logging.dest: /var/log/kibana.log # 配置kibana的日志文件路径,不然默认是messages里记录日志
-
启动kibana服务,并检查进程和监听端口
[root@master-node ~]# systemctl start kibana [root@master-node ~]# ps aux |grep kibana kibana 3083 36.8 2.9 1118668 112352 ? Ssl 17:14 0:03 /usr/share/kibana/bin/../node/bin/node --no-warnings /usr/share/kibana/bin/../src/cli -c /etc/kibana/kibana.yml root 3095 0.0 0.0 112660 964 pts/0 S+ 17:14 0:00 grep --color=auto kibana [root@master-node ~]# netstat -lntp |grep 5601 tcp 0 0 192.168.77.128:5601 0.0.0.0:* LISTEN 3083/node [root@master-node ~]#
kibana为node开发
-
访问服务
直接访问host:5601
由于没有安装x-pack所以是不用登录的,直接访问就可以
安装logstash
-
rpm直接安装
注意不支持jdk1.9
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.0.0.rpm rpm -ivh logstash-6.0.0.rpm
-
配置logstash
创建配置文件,
input { tcp { host => "192.168.10.200" port => 8082 mode => "server" ssl_enable => false codec => json { charset => "UTF-8" } } } output { elasticsearch { hosts => "192.168.10.200:9200" index => "logstash-test" } stdout { codec => rubydebug {} } }
-
启动服务
./bin/logstash -f config/logstash-test.conf --debug
完成logback日志传送到日志服务器 -
注意
1、启动时候要注意权限问题
2、kibana添加索引过滤的时候选择@timetamp,若展示不出来日志就去掉
3、添加配置文件要通过命令检查配置文件是否正确,命令为[root@data-node1 ~]# cd /usr/share/logstash/bin [root@data-node1 /usr/share/logstash/bin]# ./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf --config.test_and_exit Sending Logstash's logs to /var/log/logstash which is now configured via log4j2.properties Configuration OK # 为ok则代表配置文件没有问题 [root@data-node1 /usr/share/logstash/bin]#
命令说明:
–path.settings 用于指定logstash的配置文件所在的目录
-f 指定需要被检测的配置文件的路径
–config.test_and_exit 指定检测完之后就退出,不然就会直接启动了