搭建ELK全紀(jì)實(shí) elasticsearch logstash kibana

前言

隨著業(yè)務(wù)的擴(kuò)張,跑web機(jī)器越來越多,傳統(tǒng)方式如果想看網(wǎng)站的分析報(bào)告,需要從各個web機(jī)器獲取日志,然后通過awk等命令行進(jìn)行輸出。

而目前的主流方式是使用elk的方式對日志集中獲取并展示

  • elasticsearch 一個Nosql數(shù)據(jù)庫,專門存儲日志信息,暫時可以理解成Mysql。對比資料
  • logstash 一個可以通過各種方式獲取日志的開源軟件
  • kibana 將數(shù)據(jù)從數(shù)據(jù)庫中查詢出來并通過圖表展示

數(shù)據(jù)流向

數(shù)據(jù)流向圖
  1. 安裝在各個web服務(wù)器的logstash收集日志數(shù)據(jù)
  2. logstash將日志數(shù)據(jù)發(fā)送給elasticsearch數(shù)據(jù)庫
  3. kibana查詢elasticsearch數(shù)據(jù)庫并展示數(shù)據(jù)

大致的系統(tǒng)性認(rèn)知

視頻介紹elk

這個視頻有5集,全程可以2倍速度觀看,大致可以了解各個軟件是干什么的,怎么運(yùn)行的。以及學(xué)習(xí)python使用logstash傳送數(shù)據(jù)

手把手搭建一個elk

超級簡易搭建elk

# 簡直不要太簡單
git clone https://github.com/deviantony/docker-elk.git
cd docker-elk
docker-compose up -d

等docker拉取鏡像并啟動之后。。。

[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看看如何使用的,順便推幾個數(shù)據(jù)上去練練手。

到目前為止,可以對elk有個稍微清晰的認(rèn)知。但是如果要自己搭建一個真正的elk,肯定要學(xué)會logstash是如何使用的,以下介紹logstash是如何使用的

安裝logstash

由于剛剛logstash的鏡像操作有些不方便,所以我在另一個虛擬機(jī)安裝一個logstash,然后發(fā)送數(shù)據(jù)到本地的elasticsearch端口上

安裝步驟

安裝logstash

使用logstash

logstash官網(wǎng)說明

非常詳細(xì)的logstash中文使用說明(有些配置新版的logstash不兼容,請以官方文檔為準(zhǔn))

使用心得

使用logstash一般只需配置兩個文件

  • logstash.yml是全局的logstash配置文件,啟動logstash時加載的
  • test.conf單個logstash監(jiān)聽配置,放在任何地方口可以

配置任何logstash任務(wù)只需跟這兩個文件有關(guān)

參考示例

將控制臺輸入的數(shù)據(jù)推送到遠(yuǎn)端elasticsearch中,我們將全部配置只放在單個配置中

/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

接著在鍵盤上隨便敲,就會將數(shù)據(jù)發(fā)給elasticsearch,接著在kibana上呈現(xiàn)

kibana數(shù)據(jù)呈現(xiàn)

單個傳入的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á)式

視頻學(xué)習(xí)grok匹配模板

grok測試工具 注意工具中預(yù)制的可能已經(jīng)啟用,請謹(jǐn)慎使用

常用grok匹配模板

參考文檔

The ELK stack powered by Docker and Compose

CentOS7 安裝 Logstash

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容