日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

ELK 日志分析系統的部署

作者:Kiro君 更新時間: 2022-07-13 編程語言

ELK 日志分析系統的部署

  • 一、ELK日志分析系統概述
    • 1.1 ELK簡介
    • 1.2 完整日志系統基本特征
    • 1.3 ELK日志處理步驟
    • 1.4 完整日志系統基本特征
  • 二、Elasticsearch (日志存儲與收集)
    • 2.1 Elasticsearch 核心概念
    • 2.2 es默認端口
  • 三、 Logstash(日志收集)
    • 3.1 logstash介紹
  • 四、Kibana(展示)
    • 4.1 Kibana主要功能
  • 五、ELK日志分析系統集群部署
    • 5.1 ELK Elasticsearch 集群部署(在Node1、Node2節點上操作)
    • 5.2 ELK Logstash 部署(在 Apache 節點上操作)
    • 5.3 ELK Kiabana 部署(在 Node1 節點上操作)

一、ELK日志分析系統概述

1.1 ELK簡介

ELK平臺是一套完整的日志集中處理解決方案,將ElasticSearch、 Logstash 和Kiabana三個開源工具配合使用,完成更強大的用戶對日志的查詢、排序、統計需求

  • ElasticSearch: 是基于Lucene (一個全文檢索引擎的架構)開發的分布式存儲檢索引擎,用來存儲各類日志。


    Elasticsearch 是用Java 開發的,可通過RESTful Web接口,讓用戶可以通過瀏覽器與Elasticsearch 通信。

    Elasticsearch 是個分布式搜索和分析引擎,優點是能對大容量的數據進行接近實時的存儲、搜索和分析操作。

  • Logstash: 作為數據收集引擎。 它支持動態的從各種數據源搜集數據,并對數據進行過濾、分析 、豐富、統一格式等操作,然后存儲到用戶指定的位置,一般會發送給Elasticsearch。


Logstash 由Ruby 語言編寫,運行在Java虛擬機(JVM),

是一款強大的數據處理工具,可以實現數據傳輸、格式處理、格式化輸出。

Logstash 具有強大的插件功能,常用于日志處理。

  • Kiabana: 是基于Node.js 開發的展示工具,可以為Logstash和ElasticSearch 提供圖形化的日志分析Web界面展示,可以匯總、分析和搜索重要數據日志。

  • Filebeat: (可添加的組件)輕量級的開源日志文件數據搜集器。通常在需要采集數據的客戶端安裝


    Filebeat ,并指定目錄與日志格式,Filebeat 就能快速收集數據,并發送給logstash 進行解析,或是直接發給Elasticsearch存儲,性能上相比運行于JVM上的logstash 優勢明顯,是對它的替代。

1.2 完整日志系統基本特征

  • 收集: 能夠采集多種來源的日志數據
  • 傳輸: 能夠穩定的把日志數據解析過濾并傳輸到存儲系統
  • 存儲: 存儲日志數據
  • 分析: 支持UI分析
  • 警告: 能夠提供錯誤報告,監控機制

1.3 ELK日志處理步驟

【1】將日志進行集中化管理(Beats)
【2】將日志格式化(Logstash)并輸出到Elasticsearch
【3】對格式化后的數據進行索引和存儲(Elasticsearch)
【4】前端數據的展示(Kibana)

1.4 完整日志系統基本特征

  • 收集: 能夠采集多種來源的日志數據
  • 傳輸: 能夠穩定的把日志數據解析過濾并傳輸到存儲系統
  • 存儲: 存儲日志數據
  • 分析: 支持UI分析
  • 警告: 能夠提供錯誤報告,監控機制

二、Elasticsearch (日志存儲與收集)

提供了一個分布式多用戶能力的全文搜索引擎

2.1 Elasticsearch 核心概念

  • 接近實時

  • 集群

  • 節點

  • 索引

  • 索引(庫) → 類型(表)文檔(記錄)

  • 分片和副本


    (默認情況下是5個分片、1個副本,這意味著,如果你的集群至少有兩個節點,你的索引將會有5個分片和另外5個副本)

分片:

1.水平分割擴展,增大存儲量

2.分布式并行跨分片操作,提供性能和吞吐量

分布式分片的機制和搜索請求的文檔如何匯總完全是有elasticsearch控制的,這些對用戶而言是透明的

網絡問題等等其他問題可以在任何時候不期而至,為了健壯性,強烈建議要有個故障切換機制,無論何種故障以防止分片或者節點不可用,為此,elasticsearch讓我們將索引分片復制一份或多份,稱為分片副本或副本


副本:

  1. 高可用性,以應對分片或節點故障,出于這個原因,分片副本要在不同節點上
  2. 性能加強,增加吞吐量,搜索可以并行在所有副本上執行

2.2 es默認端口

es啟動監聽兩個端口:9300和9200

  • 9300端口 是使用tcp客戶端連接使用的端口;
  • 9200端口 是通過http協議連接es使用的端口;

三、 Logstash(日志收集)

3.1 logstash介紹

  • 一款強大的數據處理工具

  • 可實現數據分析、傳輸、格式處理 、格式化輸出

  • 數據輸入、數據加工(過濾、改寫等)以及數據輸出

  • 由三個組件組成:Input、Output、Filter Plugin


    Input:獲取日志
    Output:輸出日志
    Filter Plugin:過濾日志、格式處理

四、Kibana(展示)

  • 一個針對Elasticsearch的開源分析及可視化平臺
  • 搜索、查看存儲在Elasticsearch索引中的數據
  • 通過各種圖表進行高級數據分析及展示

4.1 Kibana主要功能

  • Elasticsearch無縫之集成
  • 整合數據,復雜數據分析
  • 讓更多團隊成員收益
  • 接口靈活,分享更容易
  • 配置簡單、可視化多數據源
  • 簡單數據導出

五、ELK日志分析系統集群部署

環境:

服務器類型 系統和IP地址 需要安裝的組件 硬件方面
Node1節點 CentOS7.4(64 位) 192.168.61.11 Elasticsearch 、 Kibana 2核4G
Node2節點 CentOS7.4(64 位) 192.168.61.22 Elasticsearch 2核4G
Apache節點 CentOS7.4(64 位) 192.168.61.44 Logstash Apache 2核4G

5.1 ELK Elasticsearch 集群部署(在Node1、Node2節點上操作)

1.環境準備

#更改主機名 
Node1節點:hostnamectl set-hostname node1
Node2節點:hostnamectl set-hostname node2

#配置域名解析
vim /etc/hosts
192.168.61.22  node1
192.168.61.44  node2

#查看Java環境,如果沒有安裝,yum -y install java
java -version	

(1)更改主機名
在這里插入圖片描述
在這里插入圖片描述(2)配置域名解析
在這里插入圖片描述
在這里插入圖片描述
(3)查看Java環境
在這里插入圖片描述
在這里插入圖片描述
2.部署 Elasticsearch 軟件

(1)#上傳elasticsearch-5.5.0.rpm到/opt目錄下
cd /opt
rpm -ivh elasticsearch-5.5.0.rpm 

(2)#加載系統服務
systemctl daemon-reload    
systemctl enable elasticsearch.service

(3)#修改elasticsearch主配置文件
cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注釋,指定集群名字
cluster.name: my-elk-cluster
--23--取消注釋,指定節點名字:Node1節點為node1,Node2節點為node2
node.name: node1
--33--取消注釋,指定數據存放路徑
path.data: /data/elk_data
--37--取消注釋,指定日志存放路徑
path.logs: /var/log/elasticsearch/
--43--取消注釋,改為在啟動的時候不鎖定內存
bootstrap.memory_lock: false
--55--取消注釋,設置監聽地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注釋,ES 服務的默認監聽端口為9200
http.port: 9200
--68--取消注釋,集群發現通過單播實現,指定要發現的節點 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

#查看主配置文件
grep -v "^#" /etc/elasticsearch/elasticsearch.yml

#將node1的配置文件拷貝一份在node2上并去node2上修改
scp /etc/elasticsearch/elasticsearch.yml node2:/etc/elasticsearch/
vim /etc/elasticsearch/elasticsearch.yml
--23--取消注釋,指定節點名字:Node1節點為node1,Node2節點為node2
node.name: node2

(4)#創建數據存放路徑并授權
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/

(5)#啟動elasticsearch是否成功開啟
systemctl start elasticsearch.service
netstat -antp | grep 9200

(6)#查看節點信息
瀏覽器訪問 ,查看節點 Node1、Node2 的信息
http://192.168.59.115:9200  http://192.168.59.116:9200 

#原諒色:green
http://192.168.61.22:9200/_cluster/health?pretty
http://192.168.61.44:9200/_cluster/health?pretty
#######  使用以上方式查看狀態并不友好,可以通過 elasticsearch-head插件來直接管理  ####

(1)上傳elasticsearch-5.5.0.rpm到/opt目錄下
在這里插入圖片描述

在這里插入圖片描述
(2)加載系統服務
在這里插入圖片描述
在這里插入圖片描述
(3)修改elasticsearch主配置文件

node1
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

將node1配置文件遠程同步給node2
在這里插入圖片描述

node2節點
在這里插入圖片描述
在這里插入圖片描述
(4)創建數據存放路徑并授權
在這里插入圖片描述
在這里插入圖片描述
(5)啟動elasticsearch是否成功開啟

在這里插入圖片描述
在這里插入圖片描述
(6)查看節點信息

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

3.安裝 Elasticsearch-head 插件

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作為獨立服務進行安裝,需要使用npm工具(NodeJS的包管理工具)安裝。
安裝 Elasticsearch-head 需要提前安裝好依賴軟件 node 和 phantomjs。

  • node: 是一個基于 Chrome V8 引擎的 JavaScript 運行環境。
  • phantomjs: 是一個基于 webkit 的JavaScriptAPI,可以理解為一個隱形的瀏覽器,任何基于 webkit 瀏覽器做的事情,它都可以做到。
(1)#編譯安裝 node
#上傳軟件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y

cd /opt
tar zxf node-v8.2.1.tar.gz

cd node-v8.2.1/
./configure
make -j2 && make install

(2)#安裝 phantomjs
#上傳軟件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到
cd /opt
tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

(3)#安裝 Elasticsearch-head 數據可視化工具
#上傳軟件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

(4)#修改 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 /usr/local/src/elasticsearch-head/
npm run start &

> elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head
> grunt server

Running "connect:server" (connect) task
Waiting forever...
Started connect web server on http://localhost:9100

#elasticsearch-head 監聽的端口是 9100
netstat -natp |grep 9100

(6)#通過 Elasticsearch-head 查看 Elasticsearch 信息通過瀏覽器訪問 http://192.168.61.22:9100/ 地址并連接群集。如果看到群集健康值為 green 綠色,代表群集很健康。訪問有問題 可以將localhost 改成ip地址
(7)#插入索引
##登錄192.168.61.22 node1主機#####  索引為index-demo,類型為test,可以看到成功創建
[root@node1 ~]# curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
{
  "_index" : "index-demo",
  "_type" : "test",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "created" : true
}

####在192.168.61.11  刷新瀏覽器輸入看索引信息###
node1信息動作 01234 
node2信息動作 01234 
●上面圖可以看見索引默認被分片5個,并且有一個副本

點擊數據瀏覽--會發現在node1上創建的索引為index-demo,類型為test, 相關的信息

(1)編譯安裝 node
在這里插入圖片描述在這里插入圖片描述

node2操作相同

(2)#安裝 phantomjs
在這里插入圖片描述
在這里插入圖片描述
(3)安裝 Elasticsearch-head 數據可視化工具
在這里插入圖片描述
在這里插入圖片描述
(4)修改 Elasticsearch 主配置文件(這邊展示node1的,node2與之相同)
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
(5)啟動 elasticsearch-head 服務
#必須在解壓后的 elasticsearch-head 目錄下啟動服務,進程會讀取該目錄下的 gruntfile.js 文件,否則可能啟動失敗。
服務啟動會有一點慢,耐心等待一下吧!
在這里插入圖片描述
在這里插入圖片描述在這里插入圖片描述在這里插入圖片描述
(6)瀏覽器訪問:http://192.168.61.22:9100/

5.2 ELK Logstash 部署(在 Apache 節點上操作)

1.安裝Logstash

(1)#修改主機名
hostnamectl set-hostname apache
su

(2)#安裝httpd并啟動
yum -y install httpd
systemctl start httpd

(3)#安裝java環境
yum -y install java
java -version

(4)#安裝logstash
cd /opt
rpm -ivh logstash-5.5.1.rpm                           
systemctl start logstash.service                     
systemctl enable logstash.service
cd /usr/share/logstash/
ls
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/

2.測試 Logstash(Apache)與elasticsearch(node)功能是否正常,做對接

Logstash這個命令測試
字段描述解釋:
●	-f  通過這個選項可以指定logstash的配置文件,根據配置文件配置logstash
●	-e  后面跟著字符串 該字符串可以被當做logstash的配置(如果是“空”則默認使用stdin做為輸入、stdout作為輸出)
●	-t  測試配置文件是否正確,然后退出

logstash -f  配置文件名字      去連接elasticsearch  

(1)#輸入采用標準輸入 輸出采用標準輸出---登錄192.168.61.22  在Apache服務器上
logstash -e 'input { stdin{} } output { stdout{} }'

16:45:21.422 [[main]-pipeline-manager] INFO  logstash.pipeline - Pipeline main started
16:45:21.645 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com   ##需要手動輸入
2021-12-16T08:46:14.041Z apache www.baidu.com
www.sina.com     ##需要手動輸入
2021-12-16T08:46:23.548Z apache www.sina.com

(2)#使用 rubydebug 輸出詳細格式顯示,codec 為一種編解碼器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'

16:51:13.127 [[main]-pipeline-manager] INFO  logstash.pipeline - Starting pipeline {"id"=>"main", "pipeline.workers"=>2, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250}
16:51:13.174 [[main]-pipeline-manager] INFO  logstash.pipeline - Pipeline main started
The stdin plugin is now waiting for input:
16:51:13.205 [Api Webserver] INFO  logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.baidu.com  ##需要手動輸入
{
    "@timestamp" => 2021-12-16T08:52:22.528Z,
      "@version" => "1",
          "host" => "apache",
       "message" => "www.baidu.com"
}

(3)##使用logstash將信息寫入elasticsearch中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.59.5:9200"] } }'

3.定義 logstash配置文件

Logstash 配置文件基本由三部分組成:input、output 以及 filter(可選,根據需要選擇使用)。

(1)#給日志目錄可讀權限
chmod o+r /var/log/messages					#讓 Logstash 可以讀取日志
(2)#修改 Logstash 配置文件,讓其收集系統日志/var/log/messages,并將其輸出到 elasticsearch 中。
vim /etc/logstash/conf.d/system.conf

input {
    file{
        path =>"/var/log/messages"						#指定要收集的日志的位置
        type =>"system"									#自定義日志類型標識
        start_position =>"beginning"					#表示從開始處收集
    }
}
output {
    elasticsearch {										#輸出到 elasticsearch
        hosts => ["192.168.61.22:9200"]	#指定 elasticsearch 服務器的地址和端口
        index =>"system-%{+YYYY.MM.dd}"		#指定輸出到 elasticsearch 的索引格式
    }
}

(4)#重啟服務
systemctl restart logstash

(5)#登錄192.168.59.116 真機
打開瀏覽器 輸入http://192.168.61.22:9100/ 查看索引信息###

多出 system-xxxx

5.3 ELK Kiabana 部署(在 Node1 節點上操作)

(1)#安裝 Kiabana
#上傳軟件包 kibana-5.5.1-x86_64.rpm 到/opt目錄
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm

(2)#設置 Kibana 的主配置文件
vim /etc/kibana/kibana.yml
--2--取消注釋,Kiabana 服務的默認監聽端口為5601
server.port: 5601
--7--取消注釋,設置 Kiabana 的監聽地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注釋,設置和 Elasticsearch 建立連接的地址和端口
elasticsearch.url: "http://192.168.59.115:9200" 
--30--取消注釋,設置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"

(3)#啟動 Kibana 服務
systemctl start kibana.service
systemctl enable kibana.service
netstat -natp | grep 5601

(4)#驗證 Kibana
瀏覽器訪問 http://192.168.59.115:5601

第一次登錄需要添加一個 Elasticsearch 索引:
Index name or pattern
//輸入:system-*			#在索引名中輸入之前配置的 Output 前綴“system”
單擊 “create” 按鈕創建,單擊 “Discover” 按鈕可查看圖表信息及日志信息。
數據展示可以分類顯示,在“Available Fields”中的“host”,然后單擊 “add”按鈕,可以看到按照“host”篩選后的結果

(5)#將 Apache 服務器的日志(訪問的、錯誤的)添加到 Elasticsearch 并通過 Kibana 顯示
vim /etc/logstash/conf.d/apache_log.conf
input {
    file{
        path => "/etc/httpd/logs/access_log"
        type => "access"
        start_position => "beginning"
    }
    file{
        path => "/etc/httpd/logs/error_log"
        type => "error"
        start_position => "beginning"
    }
}
output {
    if [type] == "access" {
        elasticsearch {
            hosts => ["192.168.59.115:9200"]
            index => "apache_access-%{+YYYY.MM.dd}"
        }
    }
        if [type] == "error" {
        elasticsearch {
            hosts => ["192.168.59.115:9200"]
            index => "apache_error-%{+YYYY.MM.dd}"
        }
    }

cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf

6.#瀏覽器訪問http://192.168.59.115:9100/測試,查看索引信息能發現
apache_error-2019.04.16     apache_access-2019.04.16 

#瀏覽器訪問http://192.168.59.115:5601
點擊左下角有個management選項---index  patterns---create index pattern
----分別創建apache_error-*   和     apache_access-* 的索引   

原文鏈接:https://blog.csdn.net/m0_61744194/article/details/125648094

欄目分類
最近更新