ELK是一套完整的日志集中处理方案,由三个开源的软件简称组成
E 【ElasticSearch(ES)】 开源的分布式存储检索引擎。索引型的非关系型数据库。存储日志。
Java代码开发。基于Lucene结构开发的一套全文检索引擎。拥有一个web接口。用户可以通过浏览器的形式和ES组件进行通信。
作用:存储。允许全文搜索、结构化搜索(索引点),索引点可以支持大容量的日志数据,也可以所有不同类型的文档。
L 【Logstash】 数据收集引擎。可以支持动态的(实时)从各种服务应用收集日志资源,还可以对收集到的日志进行过滤、分析,并且在一定程度上可以进行丰富、统一格式等操作,然后把数据同步到ES存储引擎。
RUBY语言编写的,运行在Java虚拟机上的一个强大的数据处理工具。数据传输、格式化处理、格式化输出。主要用来处理日志
数据收集工具:
fiebeat: 轻量级的开源的,日志手机共计。收集的速度较快,但是没有数据分析和过滤的能力,一般是结合logstash一块使用.
kafka
RabbitMQ 中间件消息队列
K 【Kiabana 图形化界面】 可以更好的分析存储在ES上的日志数据。提供了一个图形化界面,来浏览ES上的日志数据。汇总、分析、搜索等
总结:ELK的作用,当我们管理一个大集群时,需要进行分析和定位的日志就会很多,每一台服务器分别去分析,将会耗时耗力
所以我们应运而生了一个集中的统一的日志管理和分析系统。极大的提高了定位问题的效率。
日志系统的特征
1、收集,可以收集基本上市面上常用的软件日志
2、传输,收集到的日志需要发送到ES 上
3、存储, es负责存储数据
4、uI: 图形化界面(kiabana)
三台主机
ES1 192.168.233.20 2核4G起步
ES2 192.168.233.30 2核4G起步
logstash和Kiabana 192.168.233.10 4核8G起步
es的性能调优
修改打开的最大文件数
DefaultlimitNOFILE=65536
一个用户会话的默认最大文件描述符的限制量.
文件描述符: 用于标识打开文件或者I/O资源限制的整数
DefaultLimitNPROC=32000
一个用户可以打开的最大进程数量的限制 32000。 一个用户的终端可以运行多少个进程。
DefaultLimitMEMLoCK=infinity
一个用户的终端默认锁定内存的限制。infinity表示不限制
内核优化
ES是基于Lucene架构,实现的一款索引型数据库。Lucene可以利用操作系统的内存来缓存ES的索引数据。
提供更快的查询速度。在工作中我们会把系统的一半内存留给Lucene
机器内存小于64G,50%给ES,50%给操作系统,供lucene使用
机器内存大于64G,ES分配4-32G即可,其他的都给操作系统,供lucene使用
ym.max map_count=262144
一个进程可以拥有的最大内存映射区参数
内存映射: 将文件或者其他设备映射进程空间的方法。允许进程直接读取或写入文件,无需常规的I/O方式
映射空间越大,ES和lucene的速度越快
28/262144
48/4194304
8g/8388608
http.cors.enabled: true
开启跨域访问的支持
http.cors.allow-origin: "*"
开启跨域访问之后
logstash的命令常用选项
-f指定配置文件,根据配置文件识别输入和输出流。
-e 测试,从命令行当中获取输入,然后经过logstash加工之后,形成一个标准输出
-t 检测配置文件是否正确,然后退出
logstash -e 'input { stdin ) output{ stdout{} }'
所有的键盘命令行输出,转化成标准输出(rubydebug的模式),6.0之后,logstash的默认输出格式就是rubydebug格式的标准输出
rubydebug
在以前的版本需要手动配置:
Nov 27 12:05:56 test1 logstash: 2023-11-27T12:05:56 354[logstash.config.sourceloader] No configuration found in the configured
sources.
ELK
ES:存储数据,索引型的数据库
logstash: 收集日志,然后按照标准化格式发送给ES (RUBYDEBUG的格式)
K:可视化工具。更人性化的显示用户信息,方便用户检索查询