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,收集日志

相关推荐
自由鬼17 小时前
免费开源日志软件ELK Stack介绍及安装过程
elk·开源
passion_flower_10 天前
日志分析集群安装部署(ELK) 保姆级教程
运维·elk·jenkins
TZ丶旭哥10 天前
ELK之elasticsearch基本使用教程
大数据·elk·elasticsearch
暮雨哀尘10 天前
Linux操作系统:基于ELK栈的日志分析系统与数据爬虫的设计与实现
linux·运维·服务器·爬虫·mongodb·elk·pipeline
AustinCien12 天前
1.4常规es报错问题
运维·elk·elasticsearch
AustinCien12 天前
3.2实验filebeat->logstash->es
运维·elk
hunao38412 天前
kibana内存溢出报错
linux·elk
AustinCien12 天前
2.3做logstash实验
运维·elk
AustinCien12 天前
2.部署kafka:9092
elk·zookeeper·kafka
AustinCien12 天前
deepseek部署:ELK + Filebeat + Zookeeper + Kafka
elk·zookeeper·kafka