ELK日誌

Rikkatang發表於2020-11-23

1.ELK日誌分析系統簡介

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-lQpGTQqj-1606131447469)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606120893157.png)]

1.日誌伺服器

​ 提高安全性; 集中存放日誌; 缺陷:對日誌分析困難

2.ELK日誌分析系統

Elasticsearch; Logstash; Kibana

3.日誌處理步驟

將日誌進行集中化管理 將日誌格式化(Logstash)並輸出到(Elasticsearch) ;對格式化後的資料進行索引和儲存(Elasticsearch); 前端資料的展示(Kibana)

2.Elasticsearch介紹

Elasticsearch的概述

​ 提供了一個分散式多使用者能力的全文搜尋引擎

Elasticsearch核心概念

​ 接近實時

​ 叢集

​ 節點

​ 索引

​ 索引(庫)—>型別(表)—>文件(記錄)

​ 分片和副本

3.Logstash介紹

Logstash介紹

一款強大的資料處理工具

可實現資料傳輸、格式處理、格式化輸出

資料輸入、資料加工(如過濾、改寫等)以及資料輸出

LogStash主要元件

Shipper //日誌收集者。負責監控本地日誌檔案的變化,即時收集最新的日誌檔案內容

Indexer //日誌儲存者。負責接收日誌並寫入到本地檔案

Broker //日誌Hub。負責連線多個Shipper和多個Indexer

Search and Storage //允許對事件進行搜尋和儲存

Web Interface //基於Web的展示介面

//在Logstash中,包括了三個階段,分別是輸入(Input)、處理(Filter,非必需)和輸出(Output)

4.Kibana介紹

Kibana介紹

​ 一個針對Elasticsearch的開源分析及視覺化平臺

​ 搜尋、檢視儲存在Elasticsearch索引中的資料

​ 通過各種圖表進行高階資料分析及展示

Kibana主要功能

​ Elasticsearch無縫之整合

​ 整合資料,複雜資料分析

​ 讓更多團隊成員受益

​ 介面靈活,分享更容易

​ 配置簡單,視覺化多資料來源

​ 簡單資料匯出

5.部署ELK日誌分析系統

​ 困境

1:開發人員不能登入線上伺服器檢視日誌

2:各個系統都有日誌,日誌分散難以查詢

3:日誌資料量大,查詢慢,資料不夠實時

Elastic Search 分散式搜尋引擎

LogStash 日誌收集

Kibana 日誌展示

6.案列

部署Elasticsearch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-tlQ5blU0-1606131447470)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606121720476.png)]

1.yum安裝Elasticsearch(192.168.106.190;192.168.106.200)

[root@elk-1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch

[root@elk-1 ~]# vim /etc/yum.repos.d/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@elk-1 ~]# yum install -y elasticsearch java

[root@elk-1 ~]# java -version  ###檢視java版本
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

2.修改elasticsearch主配置檔案

[root@elk-1 ~]# vim /etc/elasticsearch/elasticsearch.yml
17行 叢集名稱 ###兩個節點一致
cluster.name: abner

23行 節點名稱 ###兩個節點不同
node.name: node-1

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

68行:discovery.zen.ping.unicast.hosts: ["127.0.0.1", "192.168.106.200"]    #叢集發現通過單播實現

3.建立工作目錄並更改屬主及屬組,開啟服務

[root@elk-1 ~]# mkdir -p /data/es-data
[root@elk-1 ~]# chown -R elasticsearch.elasticsearch /data/es-data
[root@elk-1 ~]# systemctl start elasticsearch.service
[root@elk-1 ~]# netstat -anpt | grep 9200
tcp6       0      0 :::9200                 :::*                    LISTEN      46814/java

4.測試

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-DMEE8Hsx-1606131447471)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606122095722.png)]

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-QcL6xp2p-1606131447472)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606122123485.png)]

5.兩種方法和ES進行互動
第一種 JAVA API
第二種 RESTful API (通過json格式互動)

[root@elk-1 ~]# curl -i -XGET 'http://192.168.192.190: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
  }
}

6.兩個節點安裝elasticsearch-head外掛(安裝外掛可以更加人性化的管理叢集)

[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
……省略內容
Installed head into /usr/share/elasticsearch/plugins/head ###安裝位置

7.node-01和node-02日誌提示不讓鎖記憶體

[root@elk-1 ~]# less /var/log/elasticsearch/abner.log
 # allow user 'elasticsearch' mlockall
        elasticsearch soft memlock unlimited
        elasticsearch hard memlock unlimited
[root@elk-1 ~]# vim /etc/security/limits.conf  ###末尾插入
        elasticsearch soft memlock unlimited
        elasticsearch hard memlock unlimited

[root@elk-1 ~]# systemctl stop elasticsearch.service
[root@elk-1 ~]# systemctl start elasticsearch.service

8.測試——輸入192.168.106.190:9200/_plugin/head/

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-D9quvrVS-1606131447474)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606122824404.png)]

9.安裝監控元件

[root@elk-1 ~]# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf

測試——輸入192.168.106.190:9200/_plugin/kopf

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-2Q9O1G9K-1606131447474)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606123111466.png)]

部署logstash

1.yum安裝apache服務

[root@apache ~]# yum install -y httpd
[root@apache ~]# systemctl start httpd

2.yum安裝java環境

[root@apache ~]# yum install -y java
已載入外掛:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
軟體包 1:java-1.8.0-openjdk-1.8.0.131-11.b12.el7.x86_64 已安裝並且是最新版本
無須任何處理
[root@apache ~]# java -version
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.yum安裝 logstash

[root@apache ~]# vi /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1

[root@apache ~]# yum install -y logstash
[root@apache ~]# ln -s /opt/logstash/bin/* /usr/local/bin ###優化執行路徑
  1. logstash(apache)與elasticsearch(node)功能是否正常,做對接測試
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{} }'

//註釋
logstash命令選項解釋:
-f:指定logstash的配置檔案,根據配置檔案配置logstash
-e:後面跟著字串,該字串可以被當做logstash的配置(如果是“ ”,則預設使用stdin做輸入,stdout為輸出)
-t:測試配置檔案是否正確,然後退出
#輸入採用標準輸入,輸出採用標準輸出

定義輸入和輸出流,類似管道

  1. 使用rubydebug顯示詳細輸出,codec為一種編解碼器
[root@apache ~]# logstash -e 'input { stdin{} } output { stdout{ codec => rubydeb
  1. 使用logstash將資訊輸出給elasticsearch
[root@apache ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["192.168.73.40:9200"] } }'
Settings: Default filter workers: 1
Logstash startup completed

abc123
tom456
123jerry
  1. 開啟瀏覽器輸入http://192.168.106.190:9200/,檢視索引資訊,顯示新的資料資訊說明輸出到elasticsearch成功

8.在apache主機中做對接配置

[root@apache ~]# chmod o+r /var/log/messages  ###允許其他使用者訪問
[root@apache ~]# ll /var/log/messages
-rw----r--. 1 root root 439103 11月 23 15:20 /var/log/messages

[root@apache ~]# vim /etc/logstash/conf.d/system.conf
input {                       ###logstash輸入:從/var/log/messages輸入,型別為system,起始位
        file {
          path => "/var/log/messages"
          type => "system"
          start_position => "beginning"
        }
      }

output {                      ###logstash輸出:輸出給elasticsearch(以IP地址指定位置)
        elasticsearch {
        hosts => ["192.168.106.190:9200"]
        index => "system-%{+YYY.MM.dd}"
        }
      }
     
[root@apache ~]# systemctl restart logstash

9.開啟瀏覽器輸入http://192.168.106.190:9200/,檢視索引資訊,顯示新的索引資訊代表logstash蒐集到的日誌資訊成功輸出給elasticsearch

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-dxHXv2lc-1606131447474)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606130950729.png)]

部署kibana

1安裝kibana(192.168.106.190)

[root@elk-1 ~]# tar zxf kibana-4.3.1-linux-x64.tar.gz
[root@elk-1 ~]# vim kibana-4.3.1-linux-x64/config/kibana.yml
//2行 
server.port: 5601

//5行
server.host: "0.0.0.0"


//12行 ES地址
elasticsearch.url: "http://192.168.106.190:9200"

//20行
kibana.index: ".kibana"

yum install screen -y


[root@elk-1 ~]# kibana-4.3.1-linux-x64/bin/kibana  ###啟動監聽
 log   [19:22:36.004] [info][status][plugin:kbn_vislib_vis_types] Status changed from uninitialized to green - Ready
  log   [19:22:36.009] [info][status][plugin:markdown_vis] Status changed from uninitialized to green - Ready
  log   [19:22:36.017] [info][status][plugin:metric_vis] Status changed from uninitialized to green - Ready
  log   [19:22:36.020] [info][status][plugin:spyModes] Status changed from uninitialized to green - Ready
  log   [19:22:36.023] [info][status][plugin:statusPage] Status changed from uninitialized to green - Ready
  log   [19:22:36.025] [info][status][plugin:table_vis] Status changed from uninitialized to green - Ready
  log   [19:22:36.028] [info][status][plugin:elasticsearch] Status changed from yellow to green - Kibana index ready
  log   [19:22:36.036] [info][listening] Server running at http://0.0.0.0:5601

2.瀏覽器中登入http://192.168.106.190:5601,首次登入提示建立一個索引名字:
填入system-*,即對接系統日誌檔名

[19:22:36.025] [info][status][plugin:table_vis] Status changed from uninitialized to green - Ready
log [19:22:36.028] [info][status][plugin:elasticsearch] Status changed from yellow to green - Kibana index ready
log [19:22:36.036] [info][listening] Server running at http://0.0.0.0:5601


 2.瀏覽器中登入http://192.168.106.190:5601,首次登入提示建立一個索引名字:
填入system-*,即對接系統日誌檔名 

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-OULgE1Hj-1606131447475)(C:\Users\Rikka\AppData\Roaming\Typora\typora-user-images\1606131394191.png)]

相關文章