前言
隨著業(yè)務(wù)的擴(kuò)張瓮孙,跑web機(jī)器越來越多宣旱,傳統(tǒng)方式如果想看網(wǎng)站的分析報(bào)告在张,需要從各個(gè)web機(jī)器獲取日志至会,然后通過awk
等命令行進(jìn)行輸出离咐。
而目前的主流方式是使用elk
的方式對(duì)日志集中獲取并展示
- elasticsearch 一個(gè)
Nosql
數(shù)據(jù)庫,專門存儲(chǔ)日志信息奉件,暫時(shí)可以理解成Mysql
宵蛀。對(duì)比資料 - logstash 一個(gè)可以通過各種方式獲取日志的開源軟件
- kibana 將數(shù)據(jù)從數(shù)據(jù)庫中查詢出來并通過圖表展示
數(shù)據(jù)流向
- 安裝在各個(gè)web服務(wù)器的
logstash
收集日志數(shù)據(jù) -
logstash
將日志數(shù)據(jù)發(fā)送給elasticsearch
數(shù)據(jù)庫 -
kibana
查詢elasticsearch
數(shù)據(jù)庫并展示數(shù)據(jù)
大致的系統(tǒng)性認(rèn)知
這個(gè)視頻有5集,全程可以2倍速度觀看县貌,大致可以了解各個(gè)軟件是干什么的术陶,怎么運(yùn)行的。以及學(xué)習(xí)python
使用logstash
傳送數(shù)據(jù)
手把手搭建一個(gè)elk
# 簡直不要太簡單
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
docker-compose up -d
等docker拉取鏡像并啟動(dòng)之后煤痕。梧宫。。
[kui.xiong@xm11-112 docker-elk]$ dc ps
Name Command State Ports
-----------------------------------------------------------------------------------------------------------------------------------------
homekuixiongdockerelk_elasticsearch_1 /usr/local/bin/docker-entr ... Up 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp
homekuixiongdockerelk_kibana_1 /usr/local/bin/kibana-docker Up 0.0.0.0:5601->5601/tcp
homekuixiongdockerelk_logstash_1 /usr/local/bin/docker-entr ... Up 0.0.0.0:5000->5000/tcp, 5044/tcp, 0.0.0.0:9600->9600/tcp
稍微等kibana
加載完摆碉,進(jìn)入http://localhost:5601
即可看到kibana
界面
如果碰到需要輸入賬戶密碼的情況祟敛,可參照readme的修改密碼教程修改密碼
搭建完成后,可以試著進(jìn)入搭建的kibana
看看如何使用的兆解,順便推幾個(gè)數(shù)據(jù)上去練練手馆铁。
到目前為止,可以對(duì)elk
有個(gè)稍微清晰的認(rèn)知锅睛。但是如果要自己搭建一個(gè)真正的elk
埠巨,肯定要學(xué)會(huì)logstash是如何使用的,以下介紹logstash
是如何使用的
安裝logstash
由于剛剛logstash
的鏡像操作有些不方便现拒,所以我在另一個(gè)虛擬機(jī)安裝一個(gè)logstash
辣垒,然后發(fā)送數(shù)據(jù)到本地的elasticsearch
端口上
安裝步驟
使用logstash
非常詳細(xì)的logstash中文使用說明(有些配置新版的logstash
不兼容,請(qǐng)以官方文檔為準(zhǔn))
使用心得
使用logstash
一般只需配置兩個(gè)文件
-
logstash.yml
是全局的logstash
配置文件印蔬,啟動(dòng)logstash時(shí)加載的 -
test.conf
單個(gè)logstash監(jiān)聽配置勋桶,放在任何地方口可以
配置任何logstash
任務(wù)只需跟這兩個(gè)文件有關(guān)
參考示例
將控制臺(tái)輸入的數(shù)據(jù)推送到遠(yuǎn)端elasticsearch
中,我們將全部配置只放在單個(gè)配置中
/tmp/config/test.conf
input {
stdin {
add_field => {"key" => "value"}
codec => "plain"
tags => ["add"]
type => "std"
}
}
output {
elasticsearch {
hosts => "eshost:9200"
user => "elastic"
password => "password"
}
}
運(yùn)行命令
logstash -f /tmp/config/test.conf
接著在鍵盤上隨便敲,就會(huì)將數(shù)據(jù)發(fā)給elasticsearch
例驹,接著在kibana
上呈現(xiàn)
單個(gè)傳入的json數(shù)據(jù)
{
"_index": "logstash-2019.07.30-000001",
"_type": "_doc",
"_id": "kSI0RmwBEDGCNjTu4LWH",
"_version": 1,
"_score": null,
"_source": {
"message": "example\n",
"@version": "1",
"@timestamp": "2019-07-31T04:06:06.091Z",
"host": "hostname",
"key": "value",
"type": "std",
"tags": [
"add"
]
},
"fields": {
"@timestamp": [
"2019-07-31T04:06:06.091Z"
]
},
"sort": [
1564545966091
]
}
grok介紹
你可以用grok插件將日志的數(shù)據(jù)提取出來插入進(jìn)elasticsearch
中捐韩,主要使用了正則表達(dá)式
grok測(cè)試工具 注意工具中預(yù)制的可能已經(jīng)啟用,請(qǐng)謹(jǐn)慎使用