ELK日志分析系统

1、定义

ELK是一套完整的日志集中处理方案,由三个开源软件简称组成****【面试题。面试问每个组件是干什么用的】****

①E:ElasticSearch(ES),一个开源的、分布式的存储检索引擎(索引型的非关系型数据库)

由java代码开发的,基于Lucene结构开发的一套全文检索引擎,拥有一个web接口,用户可以通过浏览器的形式和ES组件进行通信

作用:存储日志

存储形式:允许全文搜索或结构化搜索(指定索引点进行搜索),索引点支持大容量的日志数据,并支持搜索其他不同类型的文档

②K:Kiabana,图形化界面,能更好的分析存储在ES上的日志数据,提供了一个图形化的界面来浏览ES上的日志数据

作用:浏览、汇总、分析、搜索日志

③L:Logstash,数据收集引擎,支持实时的从各种服务应用收集日志资源,并对收集到的日志数据过滤、分析,在一定程度上丰富日志数据,还可以统一格式等操作,最后数据同步到ES存储引擎

由RUBY语言编写,运行在java虚拟机上的一个强大的数据处理工具,数据传输、格式化处理、格式化输出

作用:实时收集、处理日志

日志流向:

Logstash****→**** ES****→**** Kiabana

(1) ELK的作用

当我们管理一个大集群时,需要分析和定位的日志很多,每一台服务器分别去分析,将会耗时耗力,应运而生一个集中统一的日志管理和分析系统,极大提高定位问题的效率

(2) ELK的特征

①收集日志。市面上常用的软件都可以收集日志

②传输日志。收集到的日志需要发送到ES上

③存储日志。ES负责存储数据

④图形化界面。kiabana负责显示图形化界面

2、数据收集工具

轻量级的开源的日志收集工具:filebeat。收集速度快,但没有数据分析和过滤的能力,一般结合logstash一起使用

中间件消息队列工具:kafka、RabbitMQ

3、数据流向和架构图

4、ES性能调优 (实验环境中安装启动ES前不要调整此性能)

(1) 打开的最大文件数/etc/security/limits.conf

* soft nofile 65536

* hard nofile 65536

* soft nproc 32000

* hard nproc 32000

* soft memlock unlimited

* hard memlock unlimited #不限制使用内存大小

reboot重启生效

(2)系统配置优化文件/etc/systemd/system.conf

末尾添加

reboot重启生效

DefaultLimitNOFILE=65536

一个用户会话的默认最大文件描述符的限制量

文件描述符:用于标识打开文件或者I/O资源的整数

DefaultLimitNPROC=32000

一个用户可以打开的最大进程数量的限制32000个(一个用户的终端可以运行多少个进程)

DefaultLimitMEMLOCK=infinity

一个用户的终端默认锁定内存的限制,infinity不限制

(3)内核优化vim /etc/sysctl.conf

ES基于lucene架构,可以利用操作系统的内存缓存ES的索引数据,可以提供更快的查询速度。在工作中,会把系统的一半内存留给lucene

部署ES的通用规则:

①机器内存<64G,50%给ES,50%给操作系统,让操作系统的内存给ES缓存数据

②机器内存>64G,ES分配4G~32G即可,其余皆给操作系统,让操作系统的内存给ES缓存数据

末尾添加vm.max_map_count=262144

一个进程可以拥有的最大内存映射区参数

内存映射:将文件或其他设备映射到进程地址空间的方法,允许进程直接读取或写入文件,无需常规的I/O读写方式。映射空间越大,ES和lucene的速度越快

|--------------|-------------------|
| 内存大小 | 最大内存映射区参数 |
| 2g | 262144 |
| 4g | 4194304 |
| 8g | 8388608 |

5、搭建ELK集群实验

****实验目的:****一体化查看日志

实验条件:

|-------------|------------------|--------------|-------------------------------|-------------------------|
| 主机名 | 服务器 | IP地址 | 组件 | 硬件 (最少) |
| test2 | es1 | 20.0.0.20 | ES+node+phantomjs+phantomjs组件 | 2核4G |
| test3 | es2 | 20.0.0.30 | ES+node+phantomjs+phantomjs组件 | 2核4G |
| test1 | logstash+kiabana | 20.0.0.10 | logstash+kiabana | 4核8G |

实验步骤:

1、es1、es2安装ES组件

(1) 修改ES组件的配置文件****【严格执行标准格式,错误不会报错】****

vim /etc/elasticsearch/elasticsearch.yml

es1

es2

(2)重启,设置成开机自启

日志文件路径tail -f /var/log/elasticsearch/my-elk-cluster.log

(3)检测ES配置文件grep -v "^#" /etc/elasticsearch/elasticsearch.yml

(4)测试ES组件

(5)检查集群的健康状态

http://20.0.0.20:9200/_cluster/health?pretty

ES组件安装完成

2、es1、es2安装图形化依赖环境

(1)安装C语言环境yum install gcc gcc-c++ make -y

(2)安装node组件

tar -xf node-v8.2.1.tar.gz

cd node-v8.2.1/

./configure

make && make install

(3)安装phantomjs组件

【WebKit插件。PhantomJS是一种没有图形用户界面的网络浏览器】

(4)安装elasticsearch-head-master数据可视化工具

|------|--------------|
| 9100 | 可视化工具的访问端口 |
| 9200 | ES数据库对外访问的端口 |
| 9300 | ES数据库内部访问的端口 |

①修改ES-head配置文件

vim /etc/elasticsearch/elasticsearch.yml

尾行添加

http.cors.enabled: true

http.cors.allow-origin: "*"

②后台打开可视化界面服务npm run start &

(5)测试可视化工具http://20.0.0.30:9100/

可视化工具完成

(6)插入索引

curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"yst","mesg":"heelo world"}'

插入一个测试索引,索引为 index-demo,类型为 test

插入索引前:

插入索引后:

加粗的黑框是主索引节点,没加黑框的是普通索引

3、test1安装logstash组件

rpm -ivh logstash-6.7.2.rpm

|------------|----------------------------------|
| logstash命令常用选项 ||
| -f | 指定配置文件,根据配置文件识别输入和输出流 |
| -e | 测试。从命令行中获取输入,经过logstash加工后形成标准输出 |
| -d | 检测配置文件是否正确,然后退出 |

(1)测试logsstash

①从键盘上发送,输出到界面

logstash -e 'input { stdin{} } output { stdout{} }'

input从哪里来

stdin从键盘来

output到哪里去

所有的键盘命令行输出转化成标准输出(rubydebug模式),6.0后,logstash的默认输出格式就是rubydebug格式的标准输出

②往ES服务器上发送(指定ES地址),浏览器访问

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["20.0.0.20:9200","20.0.0.30:9200"] } }'

4、test1安装kibana组件

(1)修改kibana配置文件

rpm -ivh kibana-6.7.2-x86_64.rpm

(2)创建日志文件

(3)重启kibana

(4)测试kibana组件http://20.0.0.10:5601/

(5)测试发送数据到ES服务器上

将message收集的日志文件发送到system.conf中

创建vim system.conf

logstash -f system.conf --path.data /opt/test1 &

重启elasticsearch.service,测试test1是否收到test2的日志数据。收到

5、ELK收集nginx的json格式日志

logstash -f nginx.conf --path.data /opt/test8 &

访问nginx,收集日志

相关推荐
幽弥千月2 天前
【ELK】filebeat采集数据输出到kafka指定topic
elk·kafka
Elastic 中国社区官方博客2 天前
从 ELK Stack 到简单 — Elastic Cloud Serverless 上的 Elastic 可观察性
大数据·数据库·elk·elasticsearch·搜索引擎·云原生·serverless
运维&陈同学2 天前
【Beats02】企业级日志分析系统ELK之Filebeat 收集日志及案例一
大数据·linux·运维·elk·elasticsearch·devops·filebeat
运维&陈同学3 天前
【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
运维·后端·elk·elasticsearch·云原生·自动化·kibana·日志收集
运维&陈同学5 天前
【Beats01】企业级日志分析系统ELK之Metricbeat与Heartbeat 监控
运维·elk·elasticsearch·云原生·kibana·heartbeat·metricbeat
幽弥千月8 天前
【ELK】ES单节点升级为集群并开启https【亲测可用】
elk·elasticsearch·https
IT猿手8 天前
基于PWLCM混沌映射的麋鹿群优化算法(Elk herd optimizer,EHO)的多无人机协同路径规划,MATLAB代码
算法·elk·机器学习·matlab·无人机·聚类·强化学习
流穿9 天前
ELK系列-(六)Redis也能作为消息队列?(下)
数据库·redis·ubuntu·elk·docker·容器
流穿9 天前
ELK系列-(五)指标收集-MetricBeat(下)
linux·运维·ubuntu·elk·docker·容器
流穿10 天前
ELK系列-(五)指标收集-MetricBeat(上)
ubuntu·elk·elasticsearch·docker