iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
DevOps

玩耍開源k8s30天系列 第 9

day9 : logging集中(下)

  • 分享至 

  • xImage
  •  

昨天完成k8s log的來源設定,但是查找log如果都要到vector查說實在有點麻煩,因此今天就來完成最後一哩路,把log收到網頁介面上,log集中的專案非常的多,為了統一管理,就用grafana loki來統一。

grafana loki架構複雜度相當的高,機制上會運用到以下元件

  1. 提供log讀寫的nginx介面。
  2. 查詢使用的frontend元件。
  3. 做為緩存功能的redis。
  4. 作為index資料查詢的nosql資料庫(like cassanfra)。
  5. 保存集群狀態的kv資料庫(like etcd or consul)。
  6. 真實儲存空間(like minio)。
  7. 負責資料一制性的loki 元件Distributor。
  8. 處理chunk的loki 元件Ingester。
  9. 與frontend做資料匹配的loki 元件Querier。

依據元件,可以得到以下的架構圖
https://ithelp.ithome.com.tw/upload/images/20210909/20139661P7H4BDRUDX.png
但是這樣的架構中要考慮到loki的分散運算性質,所以無狀態的Distributor、frontend、Querier會有很多個,負責讀寫資料的Ingester也可以有好多個,要能夠駕馭這樣的分布式運算就要有良好的load balnce管理讀寫的流量,然後藉由高可用又輕量的管理服務(like key-valueDB)管理loki元件的資訊,以及高可用的儲存空間和database,看起來難度高又複雜。

因此我簡化了大部分的元件,調整成下圖
https://ithelp.ithome.com.tw/upload/images/20210909/20139661w6nowoPttl.png
不將元件拆開全部放在loki之中,由member list處理loki狀態,儲存放在minio以及boltdb-shipper,同樣透過gateway入口以及redis做cache。

我這邊在內部元件上參考了git文章https://github.com/CloudXiaobai/loki-cluster-deploy 做部署,運用其中的installation.sh並配置足夠的pv即可輕鬆安裝完成,因為我儲存空間使用minio所以s3的部分要改寫為minio的,sed就直接mark起來,調整於loki-system/loki-system/configmap.yaml內的s3: s3://minioadmin:minioadmin@minio_ip:9000/logchunks ,loki完成後就可以在grafana的datasource上選擇loki加入,之後再調整vector使用loki為sink的目標,範例如下

[sinks.out]
type = "loki" 
inputs = ["in"] 
endpoint = "http://localhost:3100"

labels.key = "value" 
labels.key = "{{ event_field }}" 

就可以正常丟到loki並且開始查詢log囉。


上一篇
day8 : logging集中(中)
下一篇
day10 : 追蹤服務
系列文
玩耍開源k8s30天31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言