ELK日志分析系统

摘要
顾名思义ELK是由Elasticsearch,Logstash,Kibana三大组件构成的一个基于web页面的日志分析工具。

日志分析是运维工程师解决系统故障,发现问题的主要手段。日志包含多种类型,包括程序日志,系统日志以及安全日志等。通过对日志分析,预发故障的发生,又可以在故障发生时,寻找到蛛丝马迹,快速定位故障点。及时解决。

组件结构:

Elasticsearch:是一个开源分布式时实分析搜索引擎,建立在全文搜索引擎库Apache Lucene基础上,同时隐藏了Apache Lucene的复杂性。Elasticsearch将所有的功能打包成一个独立的动画片,索引副本机制,RESTful风格接口,多数据源。自动搜索等特点。
Logstash :是一个完全开源的工具,主要用于日志收集,同时可以对数据处理,并输出给Elasticarch
Kibana:也是一个完全开源的工具,kibana可以为Logstash和Elasticsearch提供图形化的日志分析。Web界面,可以汇总,分析和搜索重要数据日志。
Top
一、ELK日志分析系统简介
日志服务器
提高安全性

集中存放日志

缺陷

对日志的分析困难

ELK日志分析系统
1.2、ELK日志分析系统
1.2.1、Elasticsearch

1.2.2、Logstash

1.2.3、Kibana

1.3、日志处理步骤
1.3.1、将日志进行集中化管理

1.3.2、将日志格式化(Logstash)并输出到(Elasticsearch)

1.3.3、对格式化后的数据进行索引和存储(Elasticsearch)

1.3.4、前端数据的展示(Kibana)

Top
二、ELK组件介绍
2.1、ELasticsearch的概述
提供了一个分布式多用户能力的全文搜索引擎
2.2、Elasticsearch核心概念
2.2.1、接近实时

2.2.2、集群

2.2.3、节点

2.2.4、索引

索引(库)→类型(表)→文档(记录)
2.2.5、分片和副本

2.3、Logstash介绍
2.3.1、Logstash介绍

一款强大的数据处理工具
可实现数据传输、格式处理、格式化输出
数据输入、数据加工(如过滤,改写等)以及数据输出
2.3.2、Logstash主要组件

Shipper
Indexer
Broker
Search and Storage
Web Interface
2.4、Kibana介绍
2.4.1、Kibana介绍

一个针对Elasticsearch的开源分析及可视化平台
搜索、查看存储在Elasticsearch索引中的数据
通过各种图表进行高级数据分析及展示
2.4.2、Kibana主要功能

Elasticsearch无缝之集成
整合数据,复杂数据分析
让更多团队成员受益
接口灵活,分享更容易
配置简单,可视化多数据源
简单数据导出
Top
三、ELK日志问及那系部署
3.1、环境说明

ELK日志分析系统
部署两台Elasticsearch做集群,node1做ELK日志分析系统

ELK日志分析系统
3.2、Elasticsearch配置(下面的操作都需要在node1、node2上配置)
3.2.1、安装**及elasticsearch源

[[email protected] ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[[email protected] ~]# cd /etc/yum.repos.d/
[[email protected] yum.repos.d]# vi elasticsearch.repo
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

[[email protected] ~]# yum list #查看yum清单
[[email protected] ~]# yum install elasticsearch -y #安装elasticsearch
[[email protected] ~]# yum install java -y #安装Java
[[email protected] ~]# java -version #查看Java版本
openjdk version “1.8.0_131”
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)

3.2.2、修改配置文件
[[email protected] yum.repos.d]# vi /etc/elasticsearch/elasticsearch.yml
17行 集群名称
cluster.name: elastic

23行 节点名称
node.name: linux-node1

33行 工作目录
path.data: /data/es-data
path.logs: /var/log/elasticsearch/

43行 防止交换swap分区
bootstrap.memory_lock: true

54行 监听网络
network.host: 0.0.0.0

58行 端口
http.port: 9200

3.2.3、创建目录及开启服务
1 [[email protected] yum.repos.d]# mkdir -p /data/es-data
2 [[email protected] yum.repos.d]# chown -R elasticsearch:elasticsearch /data/es-data
3 [[email protected] yum.repos.d]# systemctl start elasticsearch.service
4 [[email protected] yum.repos.d]# netstat -anpt | grep 9200
5 tcp6 0 0 :::9200 ::???? LISTEN 54134/java
3.2.4、测试

1 http://20.0.0.10:9200
ELK日志分析系统

[[email protected] yum.repos.d]# curl -i -XGET ‘http://20.0.0.20:9200/_count?pretty’ -d '{

“query”: {
“match_all”: {}
}
}’
HTTP/1.1 200 OK #输出项
Content-Type: application/json; charset=UTF-8
Content-Length: 95

{
“count” : 0,
“_shards” : {
“total” : 0,
“successful” : 0,
“failed” : 0
}
}

[[email protected] yum.repos.d]# curl -i -XGET ‘http://20.0.0.10:9200/_count?pretty’ -d '{

“query”: {
“match_all”: {}
}
}’
HTTP/1.1 200 OK #输出项
Content-Type: application/json; charset=UTF-8
Content-Length: 95

{
“count” : 0,
“_shards” : {
“total” : 0,
“successful” : 0,
“failed” : 0
}
}

3.2.5、安装Elasticsearch插件

1 [[email protected] yum.repos.d]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
3.2.6、测试

1 http://192.168.175.139:9200/_plugin/head/

ELK日志分析系统
3.2.7、符合查询

提交请求
ELK日志分析系统
查询
ELK日志分析系统
删除后再查询
ELK日志分析系统
3.2.8、elasticsearch集群部署

1 [[email protected] yum.repos.d]# vi /etc/elasticsearch/elasticsearch.yml
2 69行 单播列表自动发现机制
3 discovery.zen.ping.unicast.hosts: [“20.0.0.10”, “20.0.0.20”]
4
5 重启服务
6 [[email protected] yum.repos.d]# systemctl restart elasticsearch.service
3.2.9、测试

1 http://192.168.175.139:9200/_plugin/head/

ELK日志分析系统
3.2.10、node-01和node-02日志提示不让锁内存

[[email protected] elasticsearch]# less /var/log/elasticsearch/elastic.log

[2020-11-18 10:36:42,959][WARN ][bootstrap ] These can be adjusted by modifying /etc/security/limits.conf, for example:
# allow user ‘elasticsearch’ mlockall
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

修改配置文件
[[email protected] elasticsearch]# vim /etc/security/limits.conf
//末尾插入

allow user ‘elasticsearch’ mlockall

elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

[[email protected] elasticsearch]# systemctl stop elasticsearch.service
[[email protected] elasticsearch]# systemctl start elasticsearch.service

3.2.11、安装监控组件

1 [[email protected] elasticsearch]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
3.2.12、测试
ELK日志分析系统
ELK日志分析系统
3.3、Logstash部署(node1上部署)
3.3.1、安装**及Logstash源
1 [[email protected] elasticsearch]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
2 [[email protected] elasticsearch]# vi /etc/yum.repos.d/logstash.repo
3 [logstash-2.1]
4 name=Logstash repository for 2.1.x packages
5 baseurl=http://packages.elastic.co/logstash/2.1/centos
6 gpgcheck=1
7 gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
8 enable=1
9
10 安装Logstash
11 [[email protected] elasticsearch]# yum install logstash -y