ELK日誌分析系統

一,ELK

1.ELK日誌分析系統

ELK日誌分析系統是Logstash、Elasticsearch、Kibana開源軟體的集合,對外是作為一個日誌管理系統的開源方案,它可以從任何來源、任何格式進行日誌搜尋、分析與視覺化展示。

2.ELK日誌分析系統組成

elasticsearch(

es

):透過搭建群集;儲存日誌資料,索引日誌資料;

logstash :收集日誌,收集到了後給

es

儲存;

kibana :檢視形式展現日誌資訊,更加人性化。

3.日誌處理步驟

1

,將日誌進行集中化管理(

beats)

2

,將日誌格式化(Logstash),然後將格式化後的資料輸出到Elasticsearch

3

,對格式化後的資料進行索引和儲存(Elasticsearch)

4

,前端資料的展示(Kibana)

4.Elasticsearch

Elasticsearch

:提供了一個分散式多使用者能力的全文搜尋引擎,用java開發,設計用於雲計算中,能夠達到即時搜尋,穩定,可靠,快速,安裝使用方便。

Elasticsearch

核心概念:

1

.接近即時(

NRT

):

elasticsearch

是一個接近即時的搜尋平臺,這意味著,從索引一個文件直到這個文件能夠被搜尋到有一個輕微的延遲(通常是

1

秒)

2

.叢集(cluster):

一個叢集就是由一個或多個節點組織在一起,它們共同持有你整個的資料,並一起提供索引和搜尋功能。其中一個節點為主節點,這個主節點是可以透過選舉產生的,並提供跨節點的聯合索引和搜尋的功能。叢集有一個唯一性標示的名字,預設是elasticsearch,叢集名字很重要,每個節點是基於叢集名字加入到其叢集中的。因此,確保在不同環境中使用不同的叢集名字。一個叢集可以只有一個節點。建議在配置elasticsearch時,配置成叢集模式。

3

.節點(node):

節點就是一臺單一的伺服器,是叢集的一部分,儲存資料並參與叢集的索引和搜尋功能。節點也是透過名字來標識,預設是在節點啟動時隨機分配的字元名。可自己定義。

4

.索引(

type

):

在一個索引中,可以定義一種或多種型別。一個型別是索引的一個邏輯上的分類/分割槽,其語義完全自己來定。通常,會為具有一組共同欄位的文件定義一個型別。

型別相對於關係型資料庫的表,

索引(庫)–> 型別(表)-> 文件(記錄)

5

.分片和副本(shards & replicas):

在實際情況下,索引儲存的資料可能超過單個節點的硬體限制。如一個

10

億文件需1TB空間可能不適合儲存在單個節點的磁碟上,或者從單個節點搜尋請求太慢了。為了解決這個問題,elasticsearch提供將索引分成多個分片的功能。當在建立索引時,可以定義想要分片的數量。每一個分片就是一個全功能的獨立的索引,可以位於叢集中任何節點上。

每個索引可以被分成多個分片。一個索引也可以被複制

0

次(意思是沒有複製)或多次。一旦複製了,每個索引就有了主分片(作為複製源的原來的分片)和複製分片(主分片的複製)之別。分片和副本的數量可以在索引建立的時候指定。

在索引建立之後,可以在任何時候動態地改變副本的數量,但是事後不能改變分片的數量。

預設情況下,

Elasticsearch

中的每個索引被分片

5

個主分片和

1

個副本,這意味著,如果叢集中至少有兩個節點,索引將會有

5

個主分片和另外

5

個副本分片(

1

個完全複製),這樣的話每個索引總共就有

10

個分片。

5.LogStash

一款強大的資料處理工具;

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

資料輸入(從業務輸入)、資料加工(如過濾、改寫等)以及資料輸出(輸出到Elasticsearch群集)。
Logstash的主要元件:

shipper:日誌收集者,負責監控本地日誌檔案的變化,及時把日誌檔案的最新內容收集起來。通常,遠端代理端(agent)只需要執行這個元件即可;

indexer:日誌儲存者,負責接收日誌並寫入到本地檔案;

broker:日誌hub,負責連線多個shipper和多個indexer;

search

and

storage:允許對事件進行搜尋和儲存;

web interface:基於Web的展示介面。

6.Kibana

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

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

透過各種圖表進行高階資料分析及展示。
主要功能:

Elasticsearch無縫之整合

整合資料,複雜資料分析

讓更多團隊成員收益

介面靈活,分享更容易

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

簡單資料匯出

二,部署ELK日誌分析系統

環境:

node1 192.168.118.13

node2 192.168.118.14

apache 192.168.118.128

1,關閉防火牆及核心防護

systemctl stop firewalld

systemctl

disable

firewalld

setenforce 0

2,配置elasticsearch環境

node1+node2

echo'192.168.118.13 node1'

>> /etc/hosts

echo'192.168.118.14 node2'

>> /etc/hosts

java -version

#如果沒有安裝,yum -y install java

3,部署elasticsearch軟體

1)安裝elasticsearch—rpm包

上傳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行;取消註釋,修改;節點名字(node2修改成node2)

node.name: node1

#33行;取消註釋,修改;資料存放路徑

path.data: /data/elk_data

#37行;取消註釋,修改;日誌存放路徑

path.logs: /var/log/elasticsearch

#43行;取消註釋,修改;不在啟動的時候鎖定記憶體

bootstrap.memory_lock:

false
#55行;取消註釋,修改;提供服務繫結的IP地址,0.0.0.0代表所有地址

network.host: 0.0.0.0

#59行;取消註釋;偵聽埠為9200(預設)

http.port: 9200

#68行;取消註釋,修改;叢集發現透過單播實現,指定要發現的節點 node1、node2

discovery.zen.ping.unicast.hosts: [

"node1"

,

"node2"

]
檢驗配置

grep -v

"^#"

/etc/elasticsearch/elasticsearch.yml
4)建立資料存放路徑並授權

mkdir

-p /data/elk_data

chown

elasticsearch:elasticsearch /data/elk_data/
5)啟動elasticsearch是否成功開啟

systemctl start elasticsearch

netstat -antp |grep 9200
6)檢視節點資訊

瀏覽器訪問:

http://192.168.118.13:9200

http://192.168.118.14:9200
真機檢測叢集健康、檢視叢集狀態

http://192.168.118.13:9200/_cluster/health?pretty

http://192.168.118.14:9200/_cluster/health?pretty

http://192.168.118.13:9200/_cluster/state?pretty

http://192.168.118.14:9200/_cluster/state?pretty

4,安裝elasticsearch-head外掛

1)編譯安裝node元件依賴包

node1+node2
yum -y install gcc gcc-c++ make

上傳軟體包 node-v8.2.1.tar.gz 到/opt

cd

/opt

tar zxvf node-v8.2.1.tar.gz

cd

node-v8.2.1/

./configure && make && make install
2)安裝phantomjs(前端框架)

上傳軟體包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt目錄下

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)修改主配置檔案

vim /etc/elasticsearch/elasticsearch.yml

#末尾;新增以下內容

http.cors.enabled:

true#開啟跨域訪問支援,預設為 false

http.cors.allow-origin:

"*"#指定跨域訪問允許的域名地址為所有

systemctl restart elasticsearch.service
5)啟動elasticsearch-head

必須在解壓後的 elasticsearch-head 目錄下啟動服務,程序會讀取該目錄下的 gruntfile.js 檔案,否則可能啟動失敗。

cd

/usr/local/src/elasticsearch-head/

npm run start &
> [email protected] 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外掛檢視叢集狀態

瀏覽器上訪問:

http://192.168.118.13:9100

在Elasticsearch 後面的欄目中輸入

http://192.168.118.13:9200
http://192.168.118.14:9100

在Elasticsearch 後面的欄目中輸入

http://192.168.118.14:9200
7)建立索引

node1(192.168.118.13)

建立索引為index-demo,型別為

test

curl -XPUT

'localhost:9200/index-demo/test/1?pretty&pretty'

-H

'content-Type: application/json'

-d

'{"user":"srs","mesg":"hello world"}'

向本機的頁面localhost:9200/index-demo/test/1?pretty&pretty提交資料H新增HTTP請求標頭-d新增的資料
開啟瀏覽器輸入地址,檢視索引資訊

http://192.168.118.13:9100

5.安裝logstash

1)安裝Apahce服務(httpd)和Java環境

apache 192.168.118.128上:
yum -y install httpd

systemctl start httpd

安裝yum -y install java

java -version
2)安裝logstash

上傳logstash-5.5.1.rpm到/opt目錄下

cd

/opt

rpm -ivh logstash-5.5.1.rpm

systemctl start logstash.service

systemctl

enable

logstash.service

#建立logstash軟連線
ln

-s /usr/share/logstash/bin/logstash /usr/local/bin/
3)測試logstash命令

欄位描述解釋:

-f 透過這個選項可以指定logstash的配置檔案,根據配置檔案配置logstash

-e 後面跟著字串 該字串可以被當做logstash的配置(如果是” ”,則預設使用stdin做為輸入、stdout作為輸出)

-t 測試配置檔案是否正確,然後退出
定義輸入和輸出流:

輸入採用標準輸入,輸出採用標準輸出(類似管道)

logstash -e

'input { stdin{} } output { stdout{} }'

使用rubydebug顯示詳細輸出,codec為一種編解碼器

logstash -e

'input { stdin{} } output { stdout{ codec=>rubydebug } }'

使用 Logstash 將資訊寫入 Elasticsearch 中

logstash -e

'input { stdin{} } output { elasticsearch { hosts=>["192.168.118.13:9200"] } }'

4)在Apache主機上做對接配置

chmod

o+r /var/log/messages

ll /var/log/messages
vim /etc/logstash/conf.d/system.conf

input {

file{

path =>

"/var/log/messages"
type

=>

"system"

start_position =>

"beginning"

}

}

output {

elasticsearch {

hosts => [

"192.168.118.13:9200"

]

index =>

"system-%{+YYYY.MM.dd}"

}

}
systemctl restart logstash.service

瀏覽器檢視,索引資訊:

http://192.168.118.13:9100

6.安裝kibana

node1上:

上傳kibana-5.5.1-x86_64.rpm 到/opt目錄

cd

/opt

rpm -ivh kibana-5.5.1-x86_64.rpm

cd

/etc/kibana/

cp

kibana.yml kibana.yml.bak
vim kibana.yml

#2行;取消註釋;kibana開啟的埠(預設5601)

server.port: 5601

#7行;取消註釋,修改;kibana偵聽的地址

server.host:

"0.0.0.0"
#21行;取消註釋,修改;和elasticsearch建立聯絡

elasticsearch.url:

"http://192.168.221.20:9200"
#30行;取消註釋;在elasticsearch中新增.kibana索引

kibana.index:

".kibana"

systemctl start kibana.service

systemctl

enable

kibana.service
瀏覽器訪問:

192.168.118.13:5601

首次登入建立一個索引 名字:system-* (這是對接系統日誌檔案)

然後點最下面的出面的create 按鈕建立
對接Apache主機的Apache 日誌檔案(訪問日誌、錯誤日誌)

cd

/etc/logstash/conf.d/
vim 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.118.13:9200"

]

index =>

"apache_access-%{+YYYY.MM.dd}"

}

}

if

[

type

] ==

"error"

{

elasticsearch {

hosts => [

"192.168.118.13:9200"

]

index =>

"apache_error-%{+YYYY.MM.dd}"

}

}

}
/usr/share/logstash/bin/logstash -f apache_log.conf

瀏覽器訪問192.168.118.128,製造訪問記錄

開啟瀏覽器 輸入http://192.168.118.13:9100/ 檢視索引資訊

開啟瀏覽器 輸入http://192.168.118.13:5601

報錯解決:

檢視結果

連結:https://www.cnblogs.com/qfzr2508/p/16196352.html
                                                              (版權歸原作者所有,侵刪)

文末福利

即將步入2025年,不少小夥伴在考慮來年的工作方向。

僅目前來說,傳統運維衝擊年薪30W+的轉型方向就是SRE&DevOps崗位。

為了幫助大家早日擺脫繁瑣的基層運維工作,給大家整理了一套【2024最新運維資料高階運維工程師必備技能資料包(文末一鍵領取),內容有多詳實豐富看下圖!
共有 20 個模組
1.38張最全工程師技能圖譜
2.面試大禮包
3.Linux書籍
4.go書籍
······
6.自動化運維工具
18.訊息佇列合集
 以上所有資料獲取請掃碼
識別上方二維碼
備註:2024最新運維資料
100%免費領取
(是掃碼領取,不是在公眾號後臺回覆,別看錯了哦)


相關文章