目 录
一、ELK简介
ELK是由elasticsearch+logstash+kibana三个开源软件的组成的一个组合体,对收集、分析和展示的企业级解决方案,主要优点有:
处理灵活:elasticsearch是实时全文索引,具有强大的搜索功能配置相对简单,API接口使用json接口,logstash使用模块配置,kibana的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百万亿级数据的查询秒级响应。集群线性扩展:elasticsearch和logstash都可以灵活线性扩展。
前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单。
1.1 elasticsearch简介
elasticsearch是一个高度可扩展性的开源全文索引和分析引擎,它可实现数据的实时全文搜索。
搜索、支持分布式可实现高可用、提供API接口,可以处理大规模日志数据,比如nginx,tomcat,系统日志等功能。
使用java语言开发,建立在全文搜索引擎Apache lucene基础之上的搜索引擎
特点:
实时搜索、实时分析
分布式架构、实时文件存储
文档导向,所有对象都是文档
高可用,易扩展,支持集群,分片与分配
接口友好,支持json
1.2 logstash简介
Logstash 是一个具有实时传输能力的数据收集引擎,其可以通过插件实现日志收集和转发,支持日志过滤,支持普通 log、自定义 json 格式的日志解析,最终把经过处理的日志发送给 elasticsearch。
1.3 kibana简介
Kibana 为 elasticsearch 提 供 一 个 查 看 数 据 的 web 界 面 , 其 主 要 是 通 过elasticsearch 的 API 接口进行数据查找,并进行前端数据可视化的展现,另外还可以针对特定格式的数据生成相应的表格、柱状图、饼图等。
1.4 ELK的好处
ELK组件在大数据运维系统中,主要可解决的问题:
日志查询,问题排查,故障恢复,故障自愈
应用日志分析,错误报警
性能分析,用户行为分析
1.5 ELK的工作原理
(1)在所有需要收集日志的服务器上部署logstash,或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署logstash。
(2)logstash收集日志,将日志格式化并输出到elasticsearch群集中。
(3)elasticsearch对格式化后的数据进行索引和存储
(4)kibana从ES群集中查询数据生成图表,并进行前端数据的展示。
总结:logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交给elasticsearch存储,kibana对日志进行可视化处理。
二、部署ELK
全部的服务器配置,所有服务器不低于4G内存
服务器环境角色:三台机子
7-1(Node1)和7-2(Node2)作为elasticsearch存储数据。集群
7-3Node3作为收集日志服务器。
Node1:192.168.114.10Node2:192.168.114.20
Node3:192.168.114.30
前期准备:
systemctl stop firewalld
setenforce 0
都需要java环境,先安装java:
yum install -y java
创建存放源码包的目录:
mkdir /data ; cd /data
2.1 部署elasticsearch(集群)
两台服务器配置一致,后面只需要修改一个地方,名字不同。
以下没有指定说明,主机Node2也同样的操作。
准备rpm包,拖进来。
[root@Node1 data]#:ls
elasticsearch-6.7.2.rpm
解压:rpm -ivh elasticsearch-6.7.2.rpm
[root@Node1 data]#:rpm -ivh elasticsearch-6.7.2.rpm
2.1.1 修改配置文件
进入配置文件的路径,修改配置文件,先备份
[root@Node1 data]#:cd /etc/elasticsearch/
[root@Node1 elasticsearch]#:cp -a elasticsearch.yml elasticsearch.yml.bak
[root@Node1 elasticsearch]#:vim elasticsearch.ym
#做出以下修改,前面数字是行号。
17:cluster.name: my-elk-cluster
23:node.name: node1
24:node.master: true
25:node.data: true
35:path.data: /var/lib/elasticsearch
39:path.logs: /var/log/elasticsearch
45:bootstrap.memory_lock: true
57:network.host: 0.0.0.0
61:http.port: 9200
62:transport.tcp.port: 9300 #手动添加,集群,主机之间通过9300端口相连
71:discovery.zen.ping.unicast.hosts: ["192.168.114.10:9300", "192.168.114.20:9300"] #集群的IP地址,Node1和Node2的IP
过滤出看下修改的地方:
在这个配置文件中,第23行,名字不能一样,这个配置文件,可以远程拷贝到Node2
修改Node2的node.name名字为node2
2.1.2 修改系统参数
2.1.2.1 修改systemmd服务管理器
/etc/systemd/system.conf文件用于配置systemd的,这是一种用于linux操作系统的系统和服务管理器。通过这个文件,你可以自定义与系统操作、性能和行为相关的各种设置。在最后添加配置项:
DefaultLimitNOFILE=65536 #设置打开文件数量的默认限制
DefaultLimitNPROC=32000 #设置进程数量的默认限制
DefaultLimitMEMLOCK=infinity #内存锁
[root@Node1 elasticsearch]#:vim /etc/systemd/system.conf
......
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
2.1.2.2 性能调优参数
最后添加
[root@Node1 elasticsearch]#:vim /etc/security/limits.conf
......
* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
* soft memlock unlimited
* hard memlock unlimited