超輕量級(jí)日志系統(tǒng) Loki,真香!!!
?? 歡迎準(zhǔn)備 Java 面試以及學(xué)習(xí) Java 的同學(xué)加入我的? 知識(shí)星球 ?,干貨很多!收費(fèi)雖然是白菜價(jià),但星球里的內(nèi)容或許比你參加上萬的培訓(xùn)班質(zhì)量還要高。
??? 《Java 面試指北》 ?來啦!這是一份教你如何更高效地準(zhǔn)備面試的小冊(cè),涵蓋常見八股文(系統(tǒng)設(shè)計(jì)、常見框架、分布式、高并發(fā) ......)、優(yōu)質(zhì)面經(jīng)等內(nèi)容。
Java面試指南網(wǎng)站:javaguide.cn
最近,在對(duì)公司容器云的日志方案進(jìn)行設(shè)計(jì)的時(shí)候,發(fā)現(xiàn)主流的 ELK 或者 EFK 比較重,再加上現(xiàn)階段對(duì)于 ES 復(fù)雜的搜索功能很多都用不上最終選擇了 Grafana 開源的 Loki 日志系統(tǒng),
Loki 簡(jiǎn)介
Loki 的第一個(gè)穩(wěn)定版本于 2019 年 11 月 19 日發(fā)布,是 Grafana Labs 團(tuán)隊(duì)最新的開源項(xiàng)目,是一個(gè)水平可擴(kuò)展,高可用性,多租戶的日志聚合系統(tǒng)。Loki 是專門用于聚集日志數(shù)據(jù),重點(diǎn)是高可用性和可伸縮性。與競(jìng)爭(zhēng)對(duì)手不同的是,它確實(shí)易于安裝且資源效率極高。
項(xiàng)目地址:https://github.com/grafana/loki/ 。

與其他日志聚合系統(tǒng)相比,Loki 具有下面的一些特性:
- 不對(duì)日志進(jìn)行全文索引。通過存儲(chǔ)壓縮非結(jié)構(gòu)化日志和僅索引元數(shù)據(jù),Loki 操作起來會(huì)更簡(jiǎn)單,更省成本。
- 通過使用與 Prometheus 相同的標(biāo)簽記錄流對(duì)日志進(jìn)行索引和分組,這使得日志的擴(kuò)展和操作效率更高,能對(duì)接 alertmanager。
- 特別適合儲(chǔ)存 Kubernetes Pod 日志;諸如 Pod 標(biāo)簽之類的元數(shù)據(jù)會(huì)被自動(dòng)刪除和編入索引。
- 受 Grafana 原生支持,避免 kibana 和 grafana 來回切換。
我們來簡(jiǎn)單總結(jié)一下 Loki 的優(yōu)缺點(diǎn)。
優(yōu)點(diǎn) :
- Loki 的架構(gòu)非常簡(jiǎn)單,使用了和 Prometheus 一樣的標(biāo)簽來作為索引,通過這些標(biāo)簽既可以查詢?nèi)罩镜膬?nèi)容也可以查詢到監(jiān)控的數(shù)據(jù),不但減少了兩種查詢之間的切換成本,也極大地降低了日志索引的存儲(chǔ)。
- 與 ELK 相比,消耗的成本更低,具有成本效益。
- 在日志的收集以及可視化上可以連用 Grafana,實(shí)現(xiàn)在日志上的篩選以及查看上下行的功能。
缺點(diǎn) :
- 技術(shù)比較新穎,相對(duì)應(yīng)的論壇不是非?;钴S。
- 功能單一,只針對(duì)日志的查看,篩選有好的表現(xiàn),對(duì)于數(shù)據(jù)的處理以及清洗沒有 ELK 強(qiáng)大,同時(shí)與 ELK 相比,對(duì)于后期,ELK 可以連用各種技術(shù)進(jìn)行日志的大數(shù)據(jù)處理,但是 loki 不行。
Loki 架構(gòu)
Loki 的架構(gòu)如下:

不難看出,Loki 的架構(gòu)非常簡(jiǎn)單,使用了和 Prometheus 一樣的標(biāo)簽來作為索引,也就是說,你通過這些標(biāo)簽既可以查詢?nèi)罩镜膬?nèi)容也可以查詢到監(jiān)控的數(shù)據(jù),不但減少了兩種查詢之間的切換成本,也極大地降低了日志索引的存儲(chǔ)。Loki 將使用與 Prometheus 相同的服務(wù)發(fā)現(xiàn)和標(biāo)簽重新標(biāo)記庫,編寫了 pormtail,在 Kubernetes 中 promtail 以 DaemonSet 方式運(yùn)行在每個(gè)節(jié)點(diǎn)中,通過 Kubernetes API 等到日志的正確元數(shù)據(jù),并將它們發(fā)送到 Loki。下面是日志的存儲(chǔ)架構(gòu):

Loki 組成
- Loki 是主服務(wù)器,負(fù)責(zé)存儲(chǔ)日志和處理查詢。
- Promtail 是代理,負(fù)責(zé)收集日志并將其發(fā)送給 Loki 。
- Grafana 用于 UI 展示。
Loki 實(shí)戰(zhàn)
本次安裝使用 Docker 部署
1.0 安裝 docker-compose
curl?-L?"https://github.com/docker/compose/releases/download/1.28.3/docker-compose-$(uname?-s)-$(uname?-m)"?-o?/usr/local/bin/docker-compose
chmod?+x?/usr/local/bin/docker-compose
2.0 下載 yaml 文件
wget https://raw.githubusercontent.com/grafana/loki/v2.2.0/production/docker-compose.yaml -O docker-compose.yaml
version: "3"
networks:
loki:
services:
loki:
image: grafana/loki:2.0.0
ports:
- "3100:3100"
command: -config.file=/etc/loki/local-config.yaml
networks:
- loki
promtail:
image: grafana/promtail:2.0.0
volumes:
- /var/log:/var/log
command: -config.file=/etc/promtail/config.yml
networks:
- loki
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki
3.0 啟動(dòng)服務(wù)
docker-compose?-f?docker-compose.yaml?up
4.0 檢查服務(wù)

5.0 配置服務(wù)
http://192.168.106.202:3000/
默認(rèn) Granfna 密碼 admin/admin
5.1 配置數(shù)據(jù)源

配置 ip 和默認(rèn)數(shù)據(jù)源,配置完成點(diǎn)擊測(cè)試/保存

5.2 配置數(shù)據(jù)源
explore 查詢樣例

5.3 輸出匹配日志信息

至此一次樣例日志查詢完成
6.0 promtail 配置詳解
promtail 容器為日志采集容器,配置文件在 promtail 容器/etc/promtail/config.yml,將該容器部署在需要采集日志的服務(wù)器上就能正常采集日志傳回 loki 服務(wù)收集整理
root@2a0cc144dd58:/#??cat??/etc/promtail/config.yml
server:
??http_listen_port:?9080
??grpc_listen_port:?0
positions:
??filename:?/tmp/positions.yaml
clients:
??-?url:?http://loki:3100/loki/api/v1/push?????#這里配置的地址為loki服務(wù)器日志收集的信息
scrape_configs:
-?job_name:?system
??static_configs:
??-?targets:
??????-?localhost
????labels:
??????job:?varlogs???????????????????????#這里為剛才選擇job下子標(biāo)簽
??????__path__:?/var/log/*log????????????#將采集的日志放在/var/log/*log下自動(dòng)發(fā)現(xiàn)
7.0 增加一臺(tái)服務(wù)器日志采集
7.1 編寫 promtail 的配置文件 config.yml
mkdir??/root/promtail??&&cd??/root/promtail
[root@node2?promtail]#?cat?config.yml
server:
??http_listen_port:?9080
??grpc_listen_port:?0
positions:
??filename:?/tmp/positions.yaml
clients:
??-?url:?http://192.168.106.202:3100/loki/api/v1/push?????#這里配置的地址為loki服務(wù)器日志收集的信息
scrape_configs:
-?job_name:?mysql
??static_configs:
??-?targets:
??????-?localhost
????labels:
??????job:?mysql?????????????????????????#這里為剛才選擇job下子標(biāo)簽
??????__path__:?/var/log/*log????????????#將采集的日志放在/var/log/*log下自動(dòng)發(fā)現(xiàn)
7.2 編寫 docker-compose.yaml 配置文件
[root@node2?promtail]#?cat??docker-compose.yaml
version:?"v1"
services:
??promtail:
????image:?grafana/promtail:2.0.0???????????????#拉去鏡像
????container_name:?promtail-node??????????????#鏡像名稱
????volumes:
??????-?/root/promtail/config.yml:/etc/promtail/config.yml????#掛載目錄
??????-?/var/log:/var/log
????network_mode:?'host'
7.3 啟動(dòng)
docker-compose?up?-d
8.0 去 loki 上查看檢索



可以根據(jù)數(shù)據(jù)查詢到相應(yīng)日志信息。
·········? END? ··············
?? 歡迎準(zhǔn)備 Java 面試以及學(xué)習(xí) Java 的同學(xué)加入我的 知識(shí)星球 ,干貨很多!收費(fèi)雖然是白菜價(jià),但星球里的內(nèi)容或許比你參加上萬的培訓(xùn)班質(zhì)量還要高。
??? 《Java 面試指北》 來啦!這是一份教你如何更高效地準(zhǔn)備面試的小冊(cè),涵蓋常見八股文(系統(tǒng)設(shè)計(jì)、常見框架、分布式、高并發(fā) ......)、優(yōu)質(zhì)面經(jīng)等內(nèi)容。
近期文章精選?:
- 《JavaGuide 面試突擊版》 5.0 最新版下載
- 2023 秋招補(bǔ)錄&春招信息匯總,再?zèng)_一把!
- 31.2k!這是我見過最強(qiáng)的后臺(tái)管理系統(tǒng) ?。?/span>
- 面試 30 家公司,終于拿到 Offer !!
- 為什么說程序員是一個(gè)極度勞累的工作?
??如果本文對(duì)你有幫助的話,歡迎?點(diǎn)贊&在看&分享?,這對(duì)我繼續(xù)分享&創(chuàng)作優(yōu)質(zhì)文章非常重要。非常感謝!
