ELK日志分析系统

Elk日志分析系统

Elk是一套完整的日志集中处理方案,是由三个开源软件的简称组成的
E

elasticSearch 简称ES,是一个开源的分布式的存储检索引擎(索引型的非关系型数据库),存储日志,是由java代码开发的,基于Lucene结构开发的一套全文检索引擎,它拥有一个web接口,用户可以拥浏览器的形式和ES组件进行通信。

作用:存储,允许全文搜索,结构化搜索(索引点),索引点可以支持大容量的日志数据,也可以搜索其他所有不同类型的文档

L

logstash是数据搜索引擎,支持动态实时的从各种服务应用收集资源,还可以对手机到的日志数据进行过滤,分析,丰富,统一格式等等操作,然后把数据同步到es存储引擎

RUBY语言编写的,运行在java虚拟机上的一个强大的数据处理工具,数据传输,格式化处理,格式化输出,主要是用来处理日志

K kiabana(图形化界面),可以更好的分析存储在ES上的日志数据,提供了一个图形化的界面浏览ES上的日志数据,汇总,分析,搜索。

数据收集工具

Fliebeat 轻量级的开源的,日志收集工具,收集的速度比较快,但是没有数据分析和过滤的能力,一般是结合logstatsh 使用
Kafka
RabbitMQ 中间件消息队列

Elk架构图

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

Elk的作用

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

特征

1 收集,可以收集市面上常用的软件日志
2 传输,收集到的日志需要发送到es上
3 存储,es负责存储数据
4 Ui图形化界面(kiabana)

安装ELK

三台主机
Es1:192.168.233.66  2核4G
Es2:192.168.233.67  2核4G
Logstash kiabana:192.168.233.68  4核8G
三台组件最少要2核/4G

es1
[root@c1 opt]# ls
elasticsearch-6.7.2.rpm 
[root@c1 opt]# rpm -ivh elasticsearch-6.7.2.rpm
[root@c1 opt]# cd /etc/elasticsearch/
[root@c1 elasticsearch]# vim elasticsearch.yml

cluster.name: my-elk-cluster
#17行,名称可以自定义

node.name: node1
#23行,node1

node.master: true
#24行,是否为主

node.data: true
#25行,数据存储节点

path.data: /var/lib/elasticsearch
#34行,日志文件路径就默认就行

boottstrap.memory_lock: true
#43行,禁止es使用交换分区,因为可能会造成数据丢失,这个不是工作时候别开,不然端口一直起不来

network.host: 0.0.0.0
#56行,取消注释监听地址,所有人都可以和我建立联系

http。port: 9200
#60行,取消注释,对外提供通信端口

transport.tcp.port: 9300
#61行添加,es内部通信的端口

discovery.zen.ping.unicast.hosts: ["192.168.233.66:9300", "192.168.233.67:9300"]
#71行,取消注释,指定内部的主机

es2
[root@c2 opt]# vim /etc/elasticsearch/elasticsearch.yml

cluster.name: my-elk-cluster
#17行

node.name: node2
node.master: false
node.data: true
#23行

network.host: 0.0.0.0
#56行

http.port: 9200
transport.tcp.port: 9300
#61行

discovery.zen.ping.unicast.hosts: ["192.168.233.66:9300", "192.168.233.67:9300"]
#69行

es1
[root@c1 elasticsearch]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node1
node.master: true
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["192.168.233.66:9300", "192.168.233.67:9300"]
#查看一下改动的配置

es2
[root@c2 opt]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml

cluster.name: my-elk-cluster
node.name: node2
node.master: false
node.data: true
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["192.168.233.66:9300", "192.168.233.67:9300"]

http.cors.enabled: true
http.cors.allow-origin: "*"
#看一下改动的配置

ES的性能调优

es1
vim /etc/security/limits.conf

* soft nofile 65536
#软限制 最大打开数
* hard nofile 65536
#硬限制 
* soft nproc 32000
#软限制 打开软件的限制
* hard nproc 32000
#硬限制
* soft memlock unlimited
#软限制  不对内存量进行锁定
* hard memlock unlimite
#硬限制  
#最后追加 需要重启虚拟机,针对机器的优化

es2

vim /etc/security/limits.conf

* soft nofile 65536
#软限制 最大打开数
* hard nofile 65536
#硬限制 
* soft nproc 32000
#软限制 打开软件的限制
* hard nproc 32000
#硬限制
* soft memlock unlimited
#软限制  不对内存量进行锁定
* hard memlock unlimite
#硬限制  
#最后追加

vim /etc/systemd/system.conf

DefaultLimitNOFILE=65536
#一个用户会话的默认最大文件描述符的限制量,文件描述符:用于标识打开文件i/o资源限制的整数
DefaultLimitNPROC=32000
#一个用户可以打开的最大进程数量的限制32000,一个用户的终端可以运行多少个进程
DefaultLimitMEMLOCK=infinity
#一个用户的终端默认锁定内存的限制

#针对用户的优化

vim /etc/systemctl.conf

vm.max_map_count=262144
一个进程可以拥有的最大内存映射区参数。
内存映射:将文件或者其他设备映射进程地址空间的方法。允许进程直接读取或写入文件,无需常规的I/o方式。
映射空间越大,ES和lucene的速度越快。
2g/262144
4g/4194304
8g/8388608
#内核优化


es1
[root@c1 ~]# systemctl restart elasticsearch.service
[root@c1 ~]# systemctl enable elasticsearch.service
[root@c1 ~]# netstat -antp | grep 9200

#端口起了就到浏览器看是否可以正常登录
192.168.233.66:9200

安装elasticsearch-head-master

先要安装node-v8.2.1.tar.gz,把elasticsearch-head-master安装包,node安装包放到opt下
yum install gcc gcc-c++ make -y
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install

安装 phantomjs安装包
#上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd /opt/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

安装 Elasticsearch-head 数据可视化工具
#上传软件包 elasticsearch-head-master.zip 到/opt
cd /opt
unzip elasticsearch-head-master.zip
cd elasticsearch-head-master/
npm install		 //安装依赖包

#速度慢,可以指定为淘宝镜像
npm config set registry http://registry.npm.taobao.org/  
 
#再次安装
npm install

修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
......
--末尾添加以下内容--
http.cors.enabled: true				#开启跨域访问支持,默认为 false
http.cors.allow-origin: "*"			#指定跨域访问允许的域名地址为所有

systemctl restart elasticsearch

(5)启动 elasticsearch-head 服务
#必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败。
cd /opt/elasticsearch-head-master
npm run start &

通过 Elasticsearch-head 查看 Elasticsearch 信息
通过浏览器访问 http://192.168.233.12:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。

浏览器访问 http://192.168.233.12:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。

Elasticsearch 的可视化工具中,以索引分区(Shard)为单位,
可能采用不同的标识颜色来表示它们的状态。黑色的边框通常表示主分片(Primary Shard)。

在 Elasticsearch 中,索引被分成多个分区,这些分区称为分片。
每个索引可能包含一个或多个主分片以及它们的副本。主分片是数据的主要存储,
副本用于提高冗余和可用性。

你可能感兴趣的:(elk)