介绍
ELK 是由 Elasticsearch、Logstash、Kibana 三个开源软件的组成的一个组合体,ELK 是 elastic 公司研发的一套完整的日志收集、分析和展示的企业
级解决方案,在这三个软件当中,每个软件用于完成不同的功能,ELK 又称为 ELK stack,官方域名为 elastic.co,ELK stack 的主要优点有如下几个:
处理方式灵活:elasticsearch 是实时全文索引,具有强大的搜索功能
配置相对简单:elasticsearch 的 API 全部使用 JSON 接口,logstash 使用模块配置,kibana 的配置文件部分更简单。
检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
集群线性扩展:elasticsearch 和 logstash 都可以灵活线性扩展
前端操作绚丽:kibana 的前端设计比较绚丽,而且操作简单
什么是 Elasticsearch:
是一个高度可扩展的开源全文搜索和分析引擎,它可实现数据的实时全文搜索、支持分布式可实现高可用、提供 API 接口,可以处理大规模日志数据,比如 Nginx、Tomcat、系统日志等功能。
Elasticsearch 使用 Java 语言开发,是建立在全文搜索引擎 Apache Lucene 基础之上的搜索引擎,https://lucene.apache.org/。
Elasticsearch 的特点
实时搜索、实时分析
分布式架构、实时文件存储
文档导向,所有对象都是文档
高可用,易扩展,支持集群,分片与复制
接口友好,支持 json
什么是 Logstash
Logstash 是一个具有实时传输能力的数据收集引擎,其可以通过插件实现日志收集和转发,支持日志过滤,
支持普通 log、自定义 json 格式的日志解析,最终把经过处理的日志发送给 elasticsearch。
什么是 kibana:
Kiabana:是基于 Node.js 开发的展示工具,可以为 elasticsearch 提供一个查看数据的 web 界面,其主要是通过elasticsearch 的 API 接口进行数据查找,
并进行前端数据可视化的展现,另外还可以针对特定格式的数据生成相应的表格、柱状图、饼图等。
Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,
并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。
为什么使用 ELK?
ELK 组件在海量日志系统的运维中,可用于解决以下主要问题:
- 分布式日志数据统一收集,实现集中式查询和管理
- 故障排查
- 安全信息和事件管理
- 报表功能
ELK 的好处:
ELK 组件在大数据运维系统中,主要可解决的问题如下:
- 日志查询,问题排查,故障恢复,故障自愈
- 应用日志分析,错误报警
- 性能分析,用户行为分析
LK的工作原理
在所有需要收集日志的服务器上部署Logstash; 或者先将日志进行集中化管理在日志服务器上, 在日志服务器上部署 Logs tash。
Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
Elasticsearch 对格式化后的数据进行索引和存储。
Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。
------------------------------------------------------------------------------
------------------------------------------------------------------------------
elasticsearch优化部分:
一个是内核参数 vm.max_map_count = 262144
一个是资源限制
需要允许elasticsearch用户占用系统的资源上限
内存优化
推荐是宿主机的一半内存,最大不超过30G
index的创建机制:
按天创建
访问量比较大的业务日志,比如各种web服务的访问日志
按周创建
网络设备的日志,web服务错误日志
按月创建
系统日志,/var/log/message /var/log/syslog
index名称格式:(logstash +服务名称+IP+时间)
logstash_tomcat.access.log_192.168.80.120_2021.10.21
索引=index
ES集群状态:
绿色状态:
表示集群各节点运行正常,而且没有丢失任何数据,各主分片和副本分片都运行正常
黄色状态:
表示由于某个节点宕机或者其他情况引起的,node节点无法连接、副本分片丢失等场景,但是还没有丢失任何数据
红色状态:
表示由于某个节点宕机或者其他情况引起的主分片丢失及数据丢失
Master 与 Slave 的区别:
Master 的职责:统计各 node 节点状态信息、集群状态信息统计、索引的创建和删除、索引分配的管理、关闭 node 节点等
Slave 的职责: 从 master 同步数据、等待机会成为 Master
收集日志的几种方式:
1.logstash
2.logstash的TCP/UDP 监听端口,在”其他“服务器安装 nc 命令
3.通过 rsyslog 收集日志,要logstash接收再转发到ES :
4.filebeat 收集日志:
通过 shell 命令获取集群状态:
curl -XGET 192.168.80.100:9200/_cat/nodes?pretty 查看节点状态
curl -XGET 192.168.80.100:9200/_nodes/process?pretty 查看节点详细信息
curl -XGET 192.168.80.100:9200/_cluster/health?pretty 查看健康状态
curl -XGET http://192.168.80.100:9200/_cat?pretty
curl http://192.168.80.100:9200/_cat/indices?v 查看索引和分片状态
curl -XGET 'http://192.168.80.100:9200/_cat/indices?v&pretty'查看损坏索引
curl 192.168.80.100:9200/_settings 查看索引和副本
curl -i -XPUT 192.168.80.100:9200/linux39/_settings -H 'content-Type:application/json' -d '{"number_of_replicas": 0}' 修改linux39副本数量为0。