- ELK日志分析系統簡介
- ELK日志分析系統的組成部分:
- 日志處理步驟
- Elasticsearch介紹
- Elastcsearch概述
- Elasticsearch的核心概念
- Logstash介紹
- 概述
- 相關組件
- LogStash主機分類:
- Kibana介紹
- 概述
- Kibana的主要功能
- 部署ELK日志分析系統的拓撲圖
- 一、部署Elasticsearch群集節點
- 1、安裝Elasticsearch軟體
- 1.2)查看Java環境,需要java支持(三臺機都查看)
- 1.3)兩節點安裝Elasticsearch相關軟體包
- 1.4)修改ES組態檔
- 1.5)創建資料目錄,并改變屬性,啟動Elasticsearch
- 2、進行ES訪問測驗(安裝head影像化展示插件前)
- 2.1)查看節點資訊
- 2.2)查看集群節點狀態資訊 http://192.168.10.20:9200/_cluster/state?pretty
- 3、節點安裝elasticsearch-head插件,圖形化展示
- 3.1)首先安裝node組件依賴包
- 3.2)安裝phantomjs前端框架
- 3.3)安裝elasticsearch-head,資料的可視化工具
- 3.4)修改ES組態檔
- 3.5)啟動elasticsearch-head可視化工具
- 4、訪問elasticsearch測驗(可視化展示資料)
- 二、部署Logstash日志采集器
- 1.安裝logstash軟體,并啟動
- 2.利用logstash命令輸入資料,測驗ES接收情況
- 2.1)試驗logstash命令
- 2.2)將logstash的資訊輸出到Elasticsearch(ES)中
- 2.3)訪問ES驗證對接情況Elasticsearch 192.168.10.10:9100(在生產環境中一般都是訪問Keepalived的VIP地址)
- 3.利用Logstash收集系統日志測驗ES對接狀況
- 3.1)配置logstash采集系統日志的組態檔
- 3.2)檢查配置并重啟logstash服務
- 3.3)訪問ES驗證 192.168.10.10:9100
- 4.安裝Apache服務,供logstash采集日志
- 4.1)安裝Apache
- 4.2)訪問Apache測驗
- 4.3)配置Apache日志采集配置
- 4.4)訪問ES 192.168.10.10:9100 驗證
- 三、部署Kibana(因為是實驗環境,就直接裝在node1節點上了)
- 1.安裝Kibana
- 2.配置Kibana組態檔
- 3.訪問Kibana 192.168.10.10:5601
ELK日志分析系統簡介

ELK日志分析系統的組成部分:
- Elasticsearch
- Logstash
- Kibana
日志處理步驟
- 將日志進行集中化管理
- 將日志格式化(Logstash)并輸出到Elasticsearch
- 對格式化后的資料進行索引和存盤(Elasticsearch)
- 前端資料的展示(Kibana)
Elasticsearch介紹
Elastcsearch概述
提供了一個分布式多功能的搜索引擎
Elasticsearch的核心概念
- 接近實時 :回應速度非常的快,從索引一個檔案直到能夠被搜索到只有一個輕微的延遲(通常是1s)
- 集群 :群集就是由一個或多個節點組織在一起,在所有的節點上存放用戶資料,并一起提供索引和搜索功能,
- 節點 :是指一臺單一的服務器,多個節點組織為一個群集,每個節點都存盤資料并參與群集的索引和搜索功能,
- 索引:類似于關系型資料庫中的“庫”,當索引一個檔案后,就可以使用elasticsearch搜索到該檔案,也可以簡單地將索引理解為存盤資料庫的地方,可以方便地進行全文索引,
●索引(庫)→>型別(表)→>檔案(記錄)· - 分片和副本:集群索引中可能由多個分片構成,并且每個分片可以擁有多個副本,將一個單獨的索引分為多個分片,可以處理不能在單一服務器上運行的大型索引.
Logstash介紹
概述
- 一款強大的資料處理工具
- 可實作資料傳輸、格式處理、格式化輸出
- 資料輸入、資料加工(如過濾,改寫等)以及資料輸出
相關組件
-
Shipper:日志收集者 ,
負責監控本地日志檔案的變化,及時把日志檔案的最新內容收集起來,
通常,遠程代理端(agent)只需要運行這個組件即可; -
Indexer:日志存盤者,
負責接收日志并寫入到本地檔案, -
Broker:日志Hub,
負責連接多個Shipper和多個Indexer -
Search and Storage:允許對事件進行搜索和存盤;
-
Web Interface:基于Web的展示界面
LogStash主機分類:
-
代理主機(agent host):作為事件的傳遞者(shipper),將各種日志資料發送至中心主機;只需運行Logstash 代理(agent)程式;
-
中心主機(central host):可運行包括中間轉發器(Broker)、索引器(Indexer)、搜索和存盤器(Search and Storage)、Web界面端(Web Interface)在內的各個組件,以實作對日志資料的接收、處理和存盤
Kibana介紹
概述
Kibana是一個針對Elasticsearch的開源分析及可視化平臺,用來搜索、查看互動存盤在Elasticsearch索引中的資料,
- 一個針對Elasticsearch的開源分析及可視化平臺
- 搜索、查看存盤在Elasticsearch索引中的資料
- 通過各種圖表進行高級資料分析及展示
Kibana的主要功能
- Elasticsearch無縫之集成
- 整合資料,復雜資料分析
- 讓更多團隊成員受益
- 介面靈活,分享更容易
- 配置簡單,可視化多資料源
- 簡單資料匯出
部署ELK日志分析系統的拓撲圖

一、部署Elasticsearch群集節點
1、安裝Elasticsearch軟體
注:兩個節點配置,除了主機名和節點號,其余配置完全相同,
### 1.1)給兩臺節點設定主機名,并做主機映射(以其中一臺為例)
[root@promote ~]# hostnamectl set-hostname node1
[root@promote ~]# su
[root@node1 ~]# vi /etc/hosts
192.168.10.10 node1
192.168.10.20 node2
1.2)查看Java環境,需要java支持(三臺機都查看)
[root@node1 ~]# 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)
1.3)兩節點安裝Elasticsearch相關軟體包
[root@node1 ~]# ls ##查看rpm包
…… elasticsearch-5.5.0.rpm
[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm ##rpm安裝
[root@node1 ~]# systemctl daemon-reload ##多載系統引數
[root@node1 ~]# systemctl enable elasticsearch.service ##開機自啟
1.4)修改ES組態檔
[root@node1 ~]# cd /etc/elasticsearch/
[root@node1 elasticsearch]# cp -p elasticsearch.yml elasticsearch.yml-bak ##帶屬性備份組態檔
[root@node1 elasticsearch]# vim elasticsearch.yml
'17行//' cluster.name: my-elk-cluster ##群集名稱,自定義,但要保持兩個節點相同
'23行//' node.name: node1 ##節點名稱,節點間唯一有區別的地方,不能相同
'33行//' path.data: /data/elk_data ##資料存放位置,需要手動創建
'37行//' path.logs: /var/log/elasticsearch/ ##日志存放位置,安裝時自動建好了
'43行//' bootstrap.memory_lock: false
##記憶體加固,true表示允許將溢位的記憶體保存到swap快取中,false則表示不允許
'55行//' network.host: 0.0.0.0 ##監聽地址,寫任意網段
'59行//' http.port: 9200 ##開啟9200埠
'68行//' discovery.zen.ping.unicast.hosts: ["node1", "node2"] ##群集內部通訊使用的是非廣播包的形式,”[ ]”內寫節點名稱
[root@node1 elasticsearch]# grep -v "^#" /etc/elasticsearch/elasticsearch.yml
##可以反向過濾出我們配置的資訊,默認檔案內所有資訊都被注釋掉了
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
1.5)創建資料目錄,并改變屬性,啟動Elasticsearch
[root@node1 ~]# mkdir -p /data/elk_data ##創建資料存放目錄
[root@node1 ~]# id elasticsearch ##安裝時,系統自動創建了elasticsearch用戶,可以使用id命令查看
uid=990(elasticsearch) gid=985(elasticsearch) groups=985(elasticsearch)
[root@node1 ~]# chown elasticsearch.elasticsearch /data/elk_data ##改變屬性
[root@node1 elasticsearch]# systemctl start elasticsearch ##啟動elasticsearch服務
[root@node1 elasticsearch]# netstat -anupt |grep 9200 ##啟動較慢,可能要等幾秒
tcp6 0 0 :::9200 :::* LISTEN 38188/java
2、進行ES訪問測驗(安裝head影像化展示插件前)
2.1)查看節點資訊



2.2)查看集群節點狀態資訊 http://192.168.10.20:9200/_cluster/state?pretty

3、節點安裝elasticsearch-head插件,圖形化展示
3.1)首先安裝node組件依賴包
[root@node1 elasticsearch]# yum -y install gcc gcc-c++ make
[root@node2 ~]# ls
node-v8.2.1.tar.gz
……省略部分
[root@node1 ~]# tar zxvf node-v8.2.1.tar.gz ##解壓
[root@node1 ~]# cd node-v8.2.1/
[root@node1 node-v8.2.1]# ./configure ##直接配置
[root@node1 node-v8.2.1]# make -j3 && make install ##編譯安裝,建議使用-j,否則較慢
3.2)安裝phantomjs前端框架
[root@node1 ~]# ls
……省略部分
phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# cd phantomjs-2.1.1-linux-x86_64/bin/ ##/bin目錄下有執行腳本
[root@node1 bin]# ls
phantomjs
[root@node1 bin]# cp phantomjs /usr/local/bin/
3.3)安裝elasticsearch-head,資料的可視化工具
[root@node1 ~]# ls
……省略部分
elasticsearch-head.tar.gz
[root@node1 ~]# tar zxvf elasticsearch-head.tar.gz
[root@node1 ~]# cd elasticsearch-head/
[root@node1 elasticsearch-head]# npm install ##npm是一種前端工具
3.4)修改ES組態檔
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enable: true ##在末尾插入這兩行,自動開啟
http.cors.allow-origin: "*" ##允許任意域名訪問
[root@node1 ~]# systemctl restart elasticsearch.service
3.5)啟動elasticsearch-head可視化工具
elasticsearch-head是java開發的,需要npm方式啟動
[root@node1 ~]# cd /root/elasticsearch-head/
[root@node1 elasticsearch-head]# npm run start & ##使用npm后臺啟動
[root@node1 elasticsearch-head]# netstat -lnuapt |grep 9100 ##查看埠狀態
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 84888/grunt
4、訪問elasticsearch測驗(可視化展示資料)
注:外部直接訪問ES的埠是9200,訪問ES-head的埠是9100,登入ES-head后再訪問9200埠,看訪問可視化資料



使用下面命令插入資料測驗
[root@node2 elasticsearch-head]# curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
##插入資料測驗


二、部署Logstash日志采集器
1.安裝logstash軟體,并啟動
[root@logstash ~]# ls ##查看相關軟體包
……省略部分
logstash-5.5.1.rpm
[root@logstash ~]# rpm -ivh logstash-5.5.1.rpm ##安裝Logstash軟體包
[root@logstash ~]# rpm -qc logstash ##查看logstash組態檔位置
/etc/logstash/jvm.options
/etc/logstash/logstash.yml
/etc/logstash/startup.options
[root@logstash ~]# systemctl start logstash.service ##開啟logstash日志收集器
[root@logstash ~]# systemctl enable logstash.service ##開機自啟
[root@logstash ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ ##建立軟連接
2.利用logstash命令輸入資料,測驗ES接收情況
############################################################################################
logstash (Apache)與elasticsearch (node)功能是否正常,做對接測驗
Logstash這個命令測驗
欄位描述解釋:
-f:通過這個選項可以指定logstash的組態檔,根據組態檔配置logstash
-e:后面跟著字串該字串可以被當做logstash的配置(如果是” ”,則默認使用stdin做為輸入、stdout作為輸出)
-t:測驗組態檔是否正確,然后退出
標準輸出中加入”codec=>rubydebug”欄位,可以轉換輸出格式,轉換成詳細格式
##############################################################################################
2.1)試驗logstash命令
[root@logstash ~]# logstash -e 'input { stdin{} } output { stdout{} }' ##會進入一個互動模式
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.
####上面的報錯是因為沒有開啟java的log4j日志沒開啟,不影響本實驗
……省略部分
12:02:00.759 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started
The stdin plugin is now waiting for input:
12:02:00.936 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600} ##提供了9600埠
www.kgc.com ##輸入資訊
2020-10-29T04:02:14.709Z logstash www.kgc.com ##這里會自動輸出你輸入的內容
[root@logstash ~]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
####標準輸出中加入”codec=>rubydebug”欄位,可以轉換輸出格式,轉換成詳細格式 ,由此可以看出Logstash具有格式轉換功能
……省略部分
12:15:54.510 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started
The stdin plugin is now waiting for input:
12:15:54.642 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
www.51xit.com ##輸入資訊后,下方輸出詳細資料
{
"@timestamp" => 2020-10-29T04:18:32.295Z,
"@version" => "1",
"host" => "logstash",
"message" => "www.51xit.com"
}
2.2)將logstash的資訊輸出到Elasticsearch(ES)中
[root@logstash ~]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.10.10:9200"] } }'
……省略部分
13:23:21.475 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline main started
The stdin plugin is now waiting for input:
13:23:21.568 [Api Webserver] INFO logstash.agent - Successfully started Logstash API endpoint {:port=>9600}
##提示成功開啟了logstash的介面,接下來就可以輸入資料到ES中顯示了
www.baidu.com ##插入資料
2.3)訪問ES驗證對接情況Elasticsearch 192.168.10.10:9100(在生產環境中一般都是訪問Keepalived的VIP地址)


##################################################################
Logstash組態檔主要有三個部分組成,input、output、filter(過濾器)組成
Logstash收集的日志資訊被設定標簽(type),filter再利用標簽進行分類,
#################################################################
3.利用Logstash收集系統日志測驗ES對接狀況
3.1)配置logstash采集系統日志的組態檔
[root@logstash ~]# chmod o+r /var/log/messages ##授予系統日志給其他用戶讀取的權限
[root@logstash ~]# cd /etc/logstash/conf.d/ ##進入/etc/logstash/conf.d/下創建組態檔
[root@logstash conf.d]# vi system.conf ##撰寫配置,可以撰寫多個,每個采集一大類日志,組態檔名稱自定義,但是必須要以 .conf 結尾
input {
file{ ##輸入點是檔案
path => "/var/log/messages" ##采集的檔案位置
type => "system" ##設定標簽
start_position => "beginning" ##采集開始位置,從開頭開始
}
}
output {
elasticsearch{ ## 輸出點是ES
hosts => ["192.168.10.10:9200"] ##ES的主機地址及埠,生產環境用的是VIP地址,而不是單個節點地址
index => "system-%{+YYYY.MM.dd}" ##ES索引的形式,‘-年月日’的形式
}
}
3.2)檢查配置并重啟logstash服務
[root@logstash conf.d]# logstash -f /etc/logstash/conf.d/system.conf -t ##檢查組態檔是否真確
……省略部分
Configuration OK ##配置OK,沒問題
13:57:43.260 [LogStash::Runner] INFO logstash.runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
[root@logstash conf.d]# systemctl restart logstash.service ##重啟Logstash
3.3)訪問ES驗證 192.168.10.10:9100



4.安裝Apache服務,供logstash采集日志
4.1)安裝Apache
[root@logstash ~]# yum -y install httpd
[root@logstash ~]# cd /etc/logstash/conf.d
[root@logstash ~]# systemctl start httpd.service ##啟動Apache服務
[root@logstash ~]# ls /var/log/httpd/ ##查看日志目錄,有兩個日志檔案
access_log error_log
4.2)訪問Apache測驗

4.3)配置Apache日志采集配置
[root@logstash conf.d]# vim Apache-log.conf ##撰寫Apache日志收集的配置
input {
file{
path => "/var/log/httpd/access_log"
type => "access"
start_position => "beginning"
}
file{
path => "/var/log/httpd/error_log"
type => "error"
start_position => "beginning"
}
}
output {
if [type] == "access" { ##判斷匹配access標簽
elasticsearch{
hosts => ["192.168.10.10:9200"]
index => "Apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" { ##判斷匹配error標簽
elasticsearch{
hosts => ["192.168.10.10:9200"]
index => "Apache_error-%{+YYYY.MM.dd}"
}
}
}
[root@logstash ~]# logstash -f /etc/logstash/conf.d/Apache-log.conf -t ##檢查配置
……省略部分
Configuration OK ##配置OK沒問題
14:41:31.909 [LogStash::Runner] INFO logstash.runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
[root@logstash ~]# logstash -f /etc/logstash/conf.d/Apache-log.conf ##重啟配置
4.4)訪問ES 192.168.10.10:9100 驗證

三、部署Kibana(因為是實驗環境,就直接裝在node1節點上了)
1.安裝Kibana
[root@node1 ~]# cd /usr/local/src/ ##Kibana的rpm包直接放在了src/目錄下
[root@node1 src]# ls ##查看軟體包
kibana-5.5.1-x86_64.rpm
[root@node1 src]# rpm -ihv kibana-5.5.1-x86_64.rpm ##直接安裝
2.配置Kibana組態檔
[root@node1 src]# cd /etc/kibana/
[root@node1 kibana]# cp -p kibana.yml kibana.yml.bak ##保留屬性備份組態檔
[root@node1 kibana]# vim kibana.yml
2 行// server.port: 5601 ##開啟5601埠
7 行// server.host: "0.0.0.0" ##設定監聽主機地址為0.0.0.0,任意地址
21行// elasticsearch.url: "http://192.168.10.10:9200" ##指定ES的訪問地址,真是環境為VIP地址
30行// kibana.index: ".kibana" ##開啟Kibana索引
[root@node1 kibana]# systemctl restart kibana.service ##重啟Kibana服務
3.訪問Kibana 192.168.10.10:5601






轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/196348.html
標籤:java
下一篇:rsync 遠程同步
