Windows服務(wù)器安裝Elasticsearch、Logstash、Kibana

一:概念

ELK是Elasticsearch、Logstash、Kibana三大開源框架首字母大寫簡(jiǎn)稱,具體這三個(gè)工具的詳細(xì)介紹,百度都解釋的很詳細(xì),今天我主要分享一下我實(shí)際中使用的問題和難點(diǎn)。

二:目的

簡(jiǎn)單來說就是快速查看項(xiàng)目錯(cuò)誤日志,快速鎖定問題。由于項(xiàng)目的使用用戶日益劇增,一臺(tái)服務(wù)器已經(jīng)扛不住上萬人的訪問系統(tǒng),導(dǎo)致系統(tǒng)訪問慢,超時(shí)等問題。所以團(tuán)隊(duì)開始提出負(fù)載均衡以及集群的一個(gè)搭建,下個(gè)文章我會(huì)分享我在負(fù)載均衡以及配置nginx等詳細(xì)文章,這里就不多介紹了。集群搭建好了就出現(xiàn)一個(gè)問題--日志。由于我們?nèi)罩疚募际窃诿總€(gè)集群服務(wù)器,導(dǎo)致系統(tǒng)異常,我們無法快速追蹤到具體出錯(cuò)日志在哪臺(tái)服務(wù)器,所以就開始在網(wǎng)上查找具體解決方案,這才看到ELK,了解了他們之間的原理后,我就開始在測(cè)試環(huán)境部署,下面是我根據(jù)自己的理解畫的部署以及原理圖。

image

三:安裝環(huán)境

服務(wù)器系統(tǒng):Windows server 2012 r2
Elasticsearch版本:elasticsearch-7.7.0-windows-x86_64
Logstash版本:logstash-7.7.0
Kibana版本:kibana-7.7.0-windows-x86_64
(為了產(chǎn)生不必要的麻煩,最好這三個(gè)版本一致。官網(wǎng)下載比較慢,可以去華為開源鏡像站:https://mirrors.huaweicloud.com/ 下載)

四:安裝步驟

將Elasticsearch、Logstash和Kibana下載后,解壓。目錄不要帶中文。安裝順序:先安裝Elasticsearch,再安裝Logstash,最后安裝Kibana

1、Elasticsearch的安裝與配置

找到根目錄的config文件夾,elasticsearch.yml進(jìn)行編輯,直接添加以下內(nèi)容,或者你可以找到對(duì)應(yīng)的字段,將注釋放開。默認(rèn)是本機(jī)可以訪問,因?yàn)槲乙渌麅膳_(tái)也能給**Elasticsearch傳輸數(shù)據(jù),所以network.host我設(shè)置為 0.0.0.0。

    node.name: nodes
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    network.host: 0.0.0.0
    http.port: 9200
    cluster.initial_master_nodes: ["nodes"]

到這里Elasticsearch的配置就已經(jīng)完工了,然后就是啟動(dòng),根目錄下bin文件下的elasticsearch.bat,以管理員身份運(yùn)行就可以啟動(dòng)elasticsearch,啟動(dòng)成功后瀏覽器訪問http://127.0.0.1:9200/,看到如下界面代表啟動(dòng)成功

image

2、Logstash的安裝與配置

首先說明,它主要負(fù)責(zé)讀取日志文件,然后傳輸給Elasticsearch,所以我們就要配置Logstash的輸入(input)和輸出(output),整個(gè)配置文件分為三部分:input,filter,output。下來我們就開始以這三個(gè)參數(shù)在實(shí)際應(yīng)用是如何配置的。在配置的前提,我們需要?jiǎng)?chuàng)建一個(gè)logstash.conf文件,創(chuàng)建地址為根目錄的confIg下面(或者復(fù)制logstash-sample.conf,進(jìn)行名稱修改)

a、input參數(shù)配置

        input {
            file {
                type => "d_52"
                start_position => "beginning"
                path => "D:/_projectLog/projectWeb/debug.log"
                codec => plain{charset=>"GBK"}
                }
            }
        input {
            file {
                type => "e_52"
                start_position => "beginning"
                path => "D:/_projectLog/projectWeb/error.log"
                codec => plain{charset=>"GBK"}
            }
        }

input的解釋說明:我寫了兩個(gè)input,因?yàn)槲乙褍蓚€(gè)日志文件分別輸出,所以這塊的配置是讀取多個(gè)文件。type:是我定義這個(gè)文件的類型,具體用途就是對(duì)應(yīng)指定的tag。start_position 檢查時(shí)間戳。path 監(jiān)聽文件路徑。codec 主要是防止亂碼,當(dāng)然input中有很多屬性,根據(jù)具體情況指定吧。
filter的解釋說明:作用是過濾匹配。我是為了過濾tag,在output中輸出到哪個(gè)索引中。

filter {
    grok {
        match => {
            "message" => '%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:verb} %{DATA:request} HTTP/%{NUMBER:httpversion}" %{NUMBER:response:int} (?:-|%{NUMBER:bytes:int}) %{QS:referrer} %{QS:agent}'
        }
    }
    if[type] == "d_52" {
        mutate {
            add_tag => ["d_52"]
        }
    }
    if [type] == "e_52" {
        mutate {
            add_tag => ["e_52"]
        }
    }
}

output的解釋說明:根據(jù)tag推送到具體elasticsearch 的索引庫(kù)中。

output { 
    if "d_52" in [tags] {
        elasticsearch {
            hosts => "http://elasticsearch的ip:9200"
            index => "project_debug_log-%{+YYYY.MM.dd}"
            codec => plain{charset=>"GBK"}
          }
    }
    if "e_52" in [tags] {
        elasticsearch {
            hosts => "http://**elasticsearch的ip**:9200"
            index => "project_error_log-%{+YYYY.MM.dd}"
            codec => plain{charset=>"GBK"}
          }
    }
    stdout {
        codec => json_lines
    }
}

到這里,配置文件就完成了,然后我們啟動(dòng),具體啟動(dòng)命令為logstash.bat -f ../config/logstash.conf(根目錄的bin下執(zhí)行),或者創(chuàng)建bat文件,把文件名改為bat,放在bin下,雙擊執(zhí)行,就可以看到控制臺(tái)讀取的數(shù)據(jù)內(nèi)容了。其他兩臺(tái)服務(wù)器,就只需要裝Logstash,配置文件改一下path路徑,type和tag也都改一下,標(biāo)記清除是哪個(gè)臺(tái)服務(wù)器的就行,為了在Kibana可以看到日志來源。

3、Kibana的安裝與配置

Kibana主要是讀取elasticsearch 的數(shù)據(jù),那我們就在配置文件中配置elasticsearch 的地址就可以了,具體操作如下:
Kibana的根目錄config下的kibana.yml文件,添加下列配置

server.port: 5601  #Kibana的訪問端口
server.host: X.X.X.X   #Kibana的訪問ip(內(nèi)網(wǎng)ip),最好不要寫127.0.0.1或者localhost,其他服務(wù)器就不能訪問了
elasticsearch.hosts: http://elasticsearch的ip:9200
i18n.locale: "zh-CN"   #設(shè)置為中文

Kibana也就配置完了,bin目錄啟動(dòng)kibana.bat,啟動(dòng)好了,瀏覽器訪問http://配置的ip:5601,就可以了。

image
image

按照指引創(chuàng)建成功后,看日志

image

整體沒有問題了,下來我們需要把Kibana和nginx結(jié)合起來,通過互聯(lián)網(wǎng)ip訪問。由于Kibana沒有登錄界面,我們就得借助nginx實(shí)現(xiàn)它的登錄,配置截圖如下

image
location / {
            auth_basic "kibana login auth";
            auth_basic_user_file D:/nginx/conf/passwd;# 存放密碼文件路徑
            proxy_pass http://192.168.1.1:5601;# 轉(zhuǎn)發(fā)到 kibana
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }

ok,外網(wǎng)訪問也沒有問題了。結(jié)束了兩天的探索,也是第一次接觸ELK,從了解到實(shí)踐,有點(diǎn)意思。

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

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