這篇要來介紹 Log 儲存,基於 Time Series 的 Log 儲存系統,安裝在 K8s 上並且跟 Grafana 串起來。
今天會採用的是 Grafana Labs 開發的 Loki,這是基於 Time series 的 Log 儲存系統,會接上 Promtail 蒐集每個 Container 的 Log,傳送到 Loki 做儲存。
按照往常慣例先加入 Grafana 的 Repo:
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
加入好了以後,這次會使用 loki-stack
這個 Chart 2.8.3
版本,最基礎的蒐集 Log 也有在裡面了,loki-distributed
是微服務版本,需要去細分他們的 Write flow 跟 Read flow,有需求的可以讀文件。
那 loki-stack
就是 Monolithic mode 版本,不過小型這樣也夠了,有需要再去換成 loki-distributed
就好。
那就把 loki-stack
value 抓下來吧!
helm show values grafana/loki-stack --version 2.8.3 > values.yaml
vim values.yaml
看一下裡面的內容,確認 .loki.enabled
跟 .promtail.enabled
都是 true
就好,其他都是 false
,除非評估有需要用到 filebeat 或 logstash 服務,不然 Promtail 蒐集 Log 就很夠用了。
接下來就安裝進去吧:
kubectl create namespace loki
helm install -f values.yaml loki grafana/loki-stack -n loki
安裝完畢以後,就可以跟 Grafana 串接起來。
那就還看看 Loki 服務名稱,kubectl get service
一下
根據拿到的 Service 為 loki
,再加上因為是不同 Namespace 需要加上 loki
,可以知道等等要連線的地方就是 http://loki.loki:3100
那就進入到 Configuration > Data sources > Add data source
選擇 Loki
URL 就打上 http://loki.loki:3100
按下最下面的 Save & Test
只要顯示 Data source connected and labels found.
就代表連線成功了。
進到 Explore
,上面就可以切換 Datasource 為 Loki
,按一下 Log browser
,就可以根據以下的篩選條件來選擇你要的 Log。
這裡我會選擇找出 app=istiod
相關的 Log。
按下 Show logs
就會把相關條件的 Log 找出來。
還不錯吧!接下來就接上 Dashboard。
點到 Dashboards > New dashboard
就會來到這個畫面,點一下 Add a new panel
下方的 Query Datasource 改為 Loki
,填寫上剛剛想查詢的 Log 範圍,右側記得改為 Logs
,Title 設定為 Istio Daemon Logs
。
按下 Apply
就會套用了。
別忘記按下 Save Dashboard
。
其實 Loki 也可以跟 Syslog 做串接整合,不過這裡因為篇幅限制就沒有寫上來,如果有這樣需求教學,我會再跟 CNTUG 借 Infras 做實驗。
監控到這裡就暫告一個段落,下一篇就要來講程式碼版本管理 Server - GitLab,後面幾篇就來安裝、上傳程式碼、實作 CI/CD。
本系列內容也會同步貼到我的 Blog https://blog.yangjerry.tw 歡迎來我的 Blog 點一下 RSS 追蹤,那我們就下一篇文章見啦!