Fluent bit回顧
Log Agent - Fluent Bit 簡介
Log Agent - Fluent Bit 安裝與常見架構模式
Log Agent - Fluent Bit Service配置與內建 API
Log Agent - Fluent Bit Input元件 與 Tail淺談
Log Agent - Fluent Bit Parser元件
Log Agent - Fluent Bit Multiline Parsing
在Day20分布式可觀測性 Logging 淺談時,
我們曾提到Grafana家族有Grafana + Loki, 能用來存放與展示Log.
這兩個元件的介紹, 日後有機會在深入.
今天先來使用這兩個元件加上Fluent Bit收集到的Log, 來做展示跟搜尋.
先透過Docker Compose快速建立Grfana + Loki
version: '3'
services:
loki:
image: grafana/loki:2.3.0
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_USERS_ALLOW_SIGN_UP=false
執行啟動docker-compose up -d
登入Grafana後, 左邊菜單選擇Configuration->Data Sources->Add data source
然後在URL輸入http://loki:3100/
按下Save & Test
出現Data source connected and labels found.
表示Grafana成功連上Loki
Fluent Bit在Output上也提供非常多的Plugins,
能輸出到像是Prometheus、CloudWatch、Datadog,Elasticsearch...
這裡因為我們目標是把Fluent Bit收集到的Log, 寫到Loki做儲存
所以這裡選擇Loki這Output Plugin
加入Loki的Output進去
[OUTPUT]
name loki
match *
host loki
port 3100
labels job=demo
啟動FLuent BIt後
我們來到Grafana左邊選單的Explore這裡
左上角選擇Loki
來到Log browser會看到job有出現剛剛的demo
這label, 選擇demo, 然後選擇show logs
就會看到上一篇的Log出現在此了.
然後來簡單介紹一下Log搜尋語法 LogQL
LogQL => Log Query Language
LogQL也有類似Linux Pipe管線的概念|
command1 | command2 | command3
後面的command收到的輸入都是前一個command的輸出結果
也能來用反向來過濾!
剛剛的Pipe加上Filter就能達到過濾或比對的功能
符號就2種=
和~
=
用來表示包含該字串~
用來表示後面的字串其實是Regex pattern我們把兩者合併
|=
Log包含該字串!=
Log內不包含ㄍ字串|~
Log內能匹配到這Regex!~
Log的結果不包含這Regex所匹配到的還有很多玩法, 能參考LogQL官網
就是Fluent Bit + Loki + Grafana
真的是很強大的一套分布式可觀測性Log服務
加上現在SRE或運維其實也很多都用Grafana,
如果Log也能用同一套展示面板, 其實在管理設定與學習上就簡單多了.
不過Fluent Bit + Loki + Grafana相對於ELK來說可能沒那樣穩定, 畢竟才出來市場相對沒那麼久.
但這套相對於ELK所吃的記憶體就真的少很多了
Fluent Bit真的是很不錯的服務, K8S也有用這個在收集跟處理各容器的Log, 幾乎常見的場景都適用.
期待大家一起把玩, 一起分享與學習.
今年的鐵人賽挑戰到此完成了.
剛轉換工作, 很多還在適應與學習. 脫離了習慣已久的開發環境與工具.
今年到最後一天才決定開賽. 雖然每天都面離斷賽危機.
就每天硬著頭皮下班開始開官網學習, 並寫成文章.
這次很多部份不夠詳細與深入, 接著一年的時機要繼續深入學習.
感謝各位的閱讀.
明年再見
Viewer
權限的帳號如果想看到Expolre
工具, 需要在config開啟viewers_can_edit
configuration-viewers-can-edit