ELK日志分析系统

1、定义

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

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

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

作用:存储日志

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

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

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

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

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

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

日志流向:

LogstashESKiabana

(1)ELK的作用

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

(2)ELK的特征

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

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

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

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

2、数据收集工具

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

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

3、数据流向和架构图

ELK日志分析系统_第1张图片

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  #不限制使用内存大小

ELK日志分析系统_第2张图片

reboot重启生效

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

末尾添加

ELK日志分析系统_第3张图片

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

ELK日志分析系统_第4张图片

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

内存映射:将文件或其他设备映射到进程地址空间的方法,允许进程直接读取或写入文件,无需常规的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

ELK日志分析系统_第5张图片

ELK日志分析系统_第6张图片

ELK日志分析系统_第7张图片

ELK日志分析系统_第8张图片

es2

ELK日志分析系统_第9张图片

ELK日志分析系统_第10张图片

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

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

ELK日志分析系统_第11张图片

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

ELK日志分析系统_第12张图片

ELK日志分析系统_第13张图片

(4)测试ES组件

ELK日志分析系统_第14张图片ELK日志分析系统_第15张图片

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

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

ELK日志分析系统_第16张图片ELK日志分析系统_第17张图片

ES组件安装完成

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

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

ELK日志分析系统_第18张图片

(2)安装node组件

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

cd node-v8.2.1/

./configure

make && make install

ELK日志分析系统_第19张图片

ELK日志分析系统_第20张图片

(3)安装phantomjs组件

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

ELK日志分析系统_第21张图片

ELK日志分析系统_第22张图片

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

ELK日志分析系统_第23张图片

ELK日志分析系统_第24张图片

9100

可视化工具的访问端口

9200

ES数据库对外访问的端口

9300

ES数据库内部访问的端口

①修改ES-head配置文件

vim /etc/elasticsearch/elasticsearch.yml

尾行添加

http.cors.enabled: true

http.cors.allow-origin: "*"

ELK日志分析系统_第25张图片

ELK日志分析系统_第26张图片

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

ELK日志分析系统_第27张图片

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

ELK日志分析系统_第28张图片

ELK日志分析系统_第29张图片

可视化工具完成

(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

ELK日志分析系统_第30张图片

插入索引前:

ELK日志分析系统_第31张图片

插入索引后:

ELK日志分析系统_第32张图片

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

ELK日志分析系统_第33张图片ELK日志分析系统_第34张图片ELK日志分析系统_第35张图片ELK日志分析系统_第36张图片

3、test1安装logstash组件

rpm -ivh logstash-6.7.2.rpm

ELK日志分析系统_第37张图片

ELK日志分析系统_第38张图片

logstash命令常用选项

-f

指定配置文件,根据配置文件识别输入和输出流

-e

测试。从命令行中获取输入,经过logstash加工后形成标准输出

-d

检测配置文件是否正确,然后退出

(1)测试logsstash

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

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

input从哪里来

stdin从键盘来

output到哪里去

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

ELK日志分析系统_第39张图片

ELK日志分析系统_第40张图片

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

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

ELK日志分析系统_第41张图片

ELK日志分析系统_第42张图片

ELK日志分析系统_第43张图片

4、test1安装kibana组件

(1)修改kibana配置文件

rpm -ivh kibana-6.7.2-x86_64.rpm

ELK日志分析系统_第44张图片

ELK日志分析系统_第45张图片

ELK日志分析系统_第46张图片

ELK日志分析系统_第47张图片

(2)创建日志文件

(3)重启kibana

ELK日志分析系统_第48张图片

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

ELK日志分析系统_第49张图片

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

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

ELK日志分析系统_第50张图片

创建vim system.conf

ELK日志分析系统_第51张图片

ELK日志分析系统_第52张图片

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

ELK日志分析系统_第53张图片

ELK日志分析系统_第54张图片

ELK日志分析系统_第55张图片

ELK日志分析系统_第56张图片

ELK日志分析系统_第57张图片

ELK日志分析系统_第58张图片

ELK日志分析系统_第59张图片

ELK日志分析系统_第60张图片

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

ELK日志分析系统_第61张图片

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

ELK日志分析系统_第62张图片

ELK日志分析系统_第63张图片

ELK日志分析系统_第64张图片

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

访问nginx,收集日志

ELK日志分析系统_第65张图片

你可能感兴趣的:(elk)