初探Loki,我決定把ELK替掉!
哈嘍哈嘍大家好,初探Loki之后,我決定把ELK下掉!
Loki開源日志解決方案已經開源有一段時間了,對標EFK/ELK,由于其輕量的設計,備受歡迎
Loki相比EFK/ELK,它不對原始日志進行索引,只對日志的標簽進行索引,而日志通過壓縮進行存儲,通常是文件系統(tǒng)存儲,所以其操作成本更低,數量級效率更高
由于Loki的存儲都是基于文件系統(tǒng)的,所以它的日志搜索時基于內容即日志行中的文本,所以它的查詢支持LogQL,在搜索窗口中通過過濾標簽的方式進行搜索和查詢
Loki分兩部分,Loki是日志引擎部分,Promtail是收集日志端,然后通過Grafana進行展示
Loki的官方文檔很全
https://grafana.com/docs/loki/latest/installation
Loki·安裝
從官方文檔看,Loki支持源碼安裝、Docker、Helm、Local、Tanka
我選擇local,就是編譯好的二進制可執(zhí)行文件
安裝步驟:
下載:https://github.com/grafana/loki/releases/
curl -O -L
"https://github.com/grafana/loki/releases/download/v2.2.1/loki-linux-amd64.zip"
通過unzip解壓得到可執(zhí)行文件
下載配置文件
wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml
Loki·配置
Loki的配置文件是loki-local-config.yaml,支持YAML語法
loki提供http和grpc兩種接口,在配置文件中可以看到對應端口,分別是3100和9096,啟動后,就可以通過http接口看到數據
配置完成后,就可以啟動loki了,二進制可執(zhí)行文件,通過--config.file指定配置文件啟動即可
promtail·安裝
Promtail安裝也很簡單
下載可執(zhí)行文件
- curl -O -L https://github.com/grafana/loki/releases/download/v2.2.1/promtail-linux-amd64.zip
通過unzip解壓得到可執(zhí)行文件即可
同樣下載配置文件
- wget https://raw.githubusercontent.com/grafana/loki/main/clients/cmd/promtail/promtail-local-config.yaml
之后,就可以直接可執(zhí)行文件指定配置文件啟動了
promtail·配置
promtail也是YAML語法,配置很簡單
前面三部分很簡單,server部分定義監(jiān)聽端口,positions定義讀取的文件偏移量存儲位置,clients定義loki接口地址,最后一部分scrape_configs是重點部分
- promtail通過scrape_configs部分配置收集日志的相關信息,以測試配置文件為例:
- job_name 用來區(qū)分日志組
- static_configs 收集日志的靜態(tài)配置
- targets 收集日志的節(jié)點,這個參數其實是在自動發(fā)現的時候使用的
- labels 定義一個要收集的日志文件和一組可選的附加標簽
- job 標簽名稱,在grafana索引的時候用到的標簽名稱
- __path__ 定義日志收集的文件或路徑,支持正則
配置文件修改完成后,就可以啟動promtail了,和loki啟動方法一樣,通過--config.file指定配置文件啟動
promtail,類似于tail,它只監(jiān)聽新增日志,不會像filebeat一樣,讀取日志所有內容,這是和filebeat的一個區(qū)別
Grafana·展示
好了,promtail和Loki都配置好了,需要展示,6.0以上版本的grafana就支持loki的展示了,我這邊直接用docker啟動grafana
grafana配置很簡單,登錄后,在設置——數據源中,選擇添加數據源,下來列表中直接選擇Loki即可
接著配置數據源,只需要修改URL即可,其他可以根據自己的需要
因為我的loki是沒有做認證的,所以這里不需要認證配置,直接填寫loki的地址即可,完成后保存
保存完成后,在Explore中查看日志
這里支持LogQL語法,默認情況下,如果不添加規(guī)則,是沒有日志展示的,在Log browser中添加query,根據在promtail中定義的label,比如我的promtail的job是nginx,我這里填寫{job="nginx"},然后run query
就可以看到nginx的日志
日志界面很清爽,保留了日志原有的樣子,通過顏色區(qū)分日志級別,這里info是綠色,error是紅色,可以很直觀的看到日志的類別,也可以通過點擊日志級別,只展示該級別的日志
總結:
相對于EFK/ELK,專為日志而生的Loki,結合Grafana生態(tài),對于中小企業(yè),或者說只是作為日志系統(tǒng)而言,我更傾向于選擇Loki代替EFK/ELK
本文轉載自微信公眾號「運維研習社」,可以通過以下二維碼關注。轉載本文請聯(lián)系運維研習社公眾號。