ELK日誌分析系統

cuiwangfeng發表於2020-11-18

摘要
顧名思義ELK是由Elasticsearch,Logstash,Kibana三大元件構成的一個基於web頁面的日誌分析工具。

日誌分析是運維工程師解決系統故障,發現問題的主要手段。日誌包含多種型別,包括程式日誌,系統日誌以及安全日誌等。通過對日誌分析,預發故障的發生,又可以在故障發生時,尋找到蛛絲馬跡,快速定位故障點。及時解決。

元件結構:

Elasticsearch:是一個開源分散式時實分析搜尋引擎,建立在全文搜尋引擎庫Apache Lucene基礎上,同時隱藏了Apache Lucene的複雜性。Elasticsearch將所有的功能打包成一個獨立的動畫片,索引副本機制,RESTful風格介面,多資料來源。自動搜尋等特點。
Logstash :是一個完全開源的工具,主要用於日誌收集,同時可以對資料處理,並輸出給Elasticarch
Kibana:也是一個完全開源的工具,kibana可以為Logstash和Elasticsearch提供圖形化的日誌分析。Web介面,可以彙總,分析和搜尋重要資料日誌。
Top
一、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、環境說明

在這裡插入圖片描述
部署兩臺Elasticsearch做叢集,node1做ELK日誌分析系統

在這裡插入圖片描述
3.2、Elasticsearch配置(下面的操作都需要在node1、node2上配置)
3.2.1、安裝金鑰及elasticsearch源

[root@node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 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

[root@node1 ~]# yum list #檢視yum清單
[root@node1 ~]# yum install elasticsearch -y #安裝elasticsearch
[root@node1 ~]# yum install java -y #安裝Java
[root@node1 ~]# 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、修改配置檔案
[root@node1 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 [root@node1 yum.repos.d]# mkdir -p /data/es-data
2 [root@node1 yum.repos.d]# chown -R elasticsearch:elasticsearch /data/es-data
3 [root@node1 yum.repos.d]# systemctl start elasticsearch.service
4 [root@node1 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
在這裡插入圖片描述

[root@node1 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
}
}

[root@node2 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 [root@node1 yum.repos.d]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
3.2.6、測試

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

在這裡插入圖片描述
3.2.7、符合查詢

提交請求
在這裡插入圖片描述
查詢
在這裡插入圖片描述
刪除後再查詢
在這裡插入圖片描述
3.2.8、elasticsearch叢集部署

1 [root@node1 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 [root@node1 yum.repos.d]# systemctl restart elasticsearch.service
3.2.9、測試

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

在這裡插入圖片描述
3.2.10、node-01和node-02日誌提示不讓鎖記憶體

[root@node1 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

修改配置檔案
[root@node1 elasticsearch]# vim /etc/security/limits.conf
//末尾插入

allow user ‘elasticsearch’ mlockall

elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited

[root@node1 elasticsearch]# systemctl stop elasticsearch.service
[root@node1 elasticsearch]# systemctl start elasticsearch.service

3.2.11、安裝監控元件

1 [root@node1 elasticsearch]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
3.2.12、測試
在這裡插入圖片描述
在這裡插入圖片描述
3.3、Logstash部署(node1上部署)
3.3.1、安裝金鑰及Logstash源
1 [root@node1 elasticsearch]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
2 [root@node1 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 [root@node1 elasticsearch]# yum install logstash -y

相關文章