在 Kibana 中創建儀表板以監控日誌

在 Kibana 中創建儀表板以監控日誌

大家好,我叫尤金,是 Citymobil 的 B2B 團隊負責人。 我們團隊的任務之一是支持從合作夥伴處訂購出租車的集成,為了確保穩定的服務,我們必須始終了解微服務中發生的情況。 為此,您需要不斷監控日誌。

在 Citymobil 中,我們使用 ELK 堆棧(ElasticSearch、Logstash、Kibana)來處理日誌,並且那裡的數據量非常巨大。 在部署新代碼後可能出現的大量請求中查找問題是相當困難的。 為了進行視覺識別,Kibana 有一個儀表板部分。

關於 Habré 有不少文章提供瞭如何設置 ELK 堆棧來接收和存儲數據的示例,但沒有關於創建 Dashboard 的相關材料。 因此,我想展示如何根據 Kibana 中的傳入日誌創建數據的可視化表示。

調整

為了更清楚地說明,我使用 ELK 和 Filebeat 創建了一個 Docker 鏡像。 並放入一個小容器中 該計劃 在 Go 中,對於我們的示例,它將生成測試日誌。 我不會詳細描述ELK的配置,Habré上已經寫得足夠多了。

克隆配置存儲庫 docker-compose 和 ELK 設置,並使用命令啟動它 docker-compose up。 故意不添加密鑰 -d查看ELK堆棧的進度。

git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up

如果一切配置正確,那麼我們將在日誌中看到一個條目(可能不會立即看到,啟動具有整個堆棧的容器的過程可能需要幾分鐘):

{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}

按地址 localhost:5061 Kibana 應該打開。

在 Kibana 中創建儀表板以監控日誌
在 Kibana 中創建儀表板以監控日誌
我們唯一需要配置的是為 Kibana 創建一個索引模式,其中包含有關要顯示哪些數據的信息。 為此,我們將執行一個curl請求或在圖形界面中執行一系列操作。

$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
    -H 'Content-Type: application/json'
    -H 'kbn-xsrf: true'
    -d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'

通過 GUI 創建索引模式
要進行配置,請選擇左側菜單中的“發現”部分,然後進入“索引模式創建”頁面。

在 Kibana 中創建儀表板以監控日誌
通過點擊“創建索引模式”按鈕,我們進入索引創建頁面。 在“索引模式名稱”字段中,輸入“logstash-*”。 如果一切配置正確,Kibana 下面將顯示符合該規則的索引。

在 Kibana 中創建儀表板以監控日誌
在下一頁上,選擇帶有時間戳的關鍵字段,在我們的例子中是 @timestamp.

在 Kibana 中創建儀表板以監控日誌
這將打開索引設置頁面,但目前不需要我們採取進一步的操作。

在 Kibana 中創建儀表板以監控日誌

現在我們可以再次轉到“發現”部分,我們將在其中看到日誌條目。

在 Kibana 中創建儀表板以監控日誌

我的帳戶

在左側菜單中,單擊儀表板創建部分並進入相應頁面。

在 Kibana 中創建儀表板以監控日誌
點擊“創建新儀表板”,進入向儀表板添加對象的頁面。

在 Kibana 中創建儀表板以監控日誌
點擊“新建”按鈕,系統會提示您選擇數據顯示類型。 Kibana 有很多,但我們將著眼於創建“垂直條”的圖形表示和表格“數據表”。 其他類型的演示也以類似的方式配置。 
在 Kibana 中創建儀表板以監控日誌
一些可用對像被標記為 B 和 E,這意味著該格式是實驗性的或處於 Beta 測試階段。 隨著時間的推移,該格式可能會發生變化或從 Kibana 中完全消失。

豎條

對於“垂直條”示例,讓我們創建一個表示服務成功和不成功響應狀態比率的直方圖。 設置結束後,我們得到下圖:

在 Kibana 中創建儀表板以監控日誌
我們將響應狀態 < 400 的所有請求分類為成功,將 >= 400 分類為有問題。

要創建“垂直條形”圖表,我們需要選擇一個數據源。 選擇我們之前創建的索引模式。

在 Kibana 中創建儀表板以監控日誌
默認情況下,選擇數據源後將出現單個實體圖。 我們來設置一下吧。

在 Kibana 中創建儀表板以監控日誌
在“Buckets”塊中,按“Add”按鈕,選擇“X-asis”並設置X軸。讓我們在日誌中留出接收條目的時間戳。 在“Aggregation”字段中選擇“Date Histogram”,在“Field”中選擇“@timestamp”,表示時間字段。 讓我們將“最小間隔”保留為“自動”狀態,它會自動調整以適應我們的顯示。 

在 Kibana 中創建儀表板以監控日誌
單擊“更新”按鈕,我們將看到一個圖表,其中顯示每 30 秒的請求數。

在 Kibana 中創建儀表板以監控日誌
現在讓我們設置 Y 軸上的列。現在我們將顯示所選時間間隔內的請求總數。

在 Kibana 中創建儀表板以監控日誌
讓我們將“Aggregation”值更改為“Sum Bucket”,這將允許我們合併成功和不成功請求的數據。 在 Bucket -> Aggregation 塊中,選擇“Filters”進行聚合,並按“statusCode >= 400”設置過濾。 在“自定義標籤”字段中,我們指示了指標名稱,以便在圖表上的圖例和常規列表中更易於理解地顯示。

在 Kibana 中創建儀表板以監控日誌
通過單擊設置塊下的“更新”按鈕,我們將獲得包含問題請求的圖表。

在 Kibana 中創建儀表板以監控日誌
如果單擊圖例旁邊的圓圈,將出現一個窗口,您可以在其中更改列的顏色。

在 Kibana 中創建儀表板以監控日誌
現在讓我們將成功請求的數據添加到圖表中。 在“指標”部分中,單擊“添加”按鈕並選擇“Y 軸”。

在 Kibana 中創建儀表板以監控日誌
在創建的指標中,我們對錯誤請求進行相同的設置。 僅在過濾器中我們指定“statusCode < 400”。

在 Kibana 中創建儀表板以監控日誌
通過更改新列的顏色,我們可以顯示有問題的請求和成功的請求的比率。

在 Kibana 中創建儀表板以監控日誌
通過單擊屏幕頂部的“保存”按鈕並指定名稱,我們將在儀表板上看到第一個圖表。

在 Kibana 中創建儀表板以監控日誌

數據表

現在考慮表格視圖“數據表”。 讓我們創建一個表,其中包含所請求的所有 URL 以及這些請求的數量。 與垂直條示例一樣,我們首先選擇一個數據源。

在 Kibana 中創建儀表板以監控日誌
之後,屏幕上將顯示一個一列的表格,其中顯示所選時間間隔內的請求總數。

在 Kibana 中創建儀表板以監控日誌
我們只會更改“Buckets”塊。 單擊“添加”按鈕並選擇“拆分行”。

在 Kibana 中創建儀表板以監控日誌
在“聚合”字段中,選擇“術語”。 並在出現的字段“Field”中選擇“url.keyword”。

在 Kibana 中創建儀表板以監控日誌
通過在“自定義標籤”字段中指定“Url”值並單擊“更新”,我們將獲得所需的表格,其中包含所選時間段內每個 URL 的請求數。

在 Kibana 中創建儀表板以監控日誌
在屏幕頂部,再次單擊“保存”按鈕並指定表的名稱,例如“Urls”。 讓我們返回儀表板並查看創建的兩個視圖。

在 Kibana 中創建儀表板以監控日誌

使用儀表板

創建儀表板時,我們僅在顯示對象設置中設置主視圖參數。 在對像中指定過濾器的數據是沒有意義的,例如“日期範圍”、“按用戶代理過濾”、“按請求國家/地區過濾”等。 在位於對像上方的查詢面板中指定所需的時間段或設置必要的過濾要方便得多。

在 Kibana 中創建儀表板以監控日誌
此面板上添加的過濾器將應用於整個 Dashboard,所有顯示對象將根據實際過濾後的數據重新構建。

結論

Kibana 是一個功能強大的工具,可讓您以便捷的方式可視化任何數據。 我試圖展示兩種主要類型的顯示設置。 但其他類型的配置方式類似。 我在“幕後”留下的大量設置將允許您非常靈活地自定義圖表以滿足您的需求。

來源: www.habr.com

添加評論