目標(biāo):最近開發(fā)人員時常需要查看各個環(huán)境項目中容器日志,而直接通過ssh終端使用docker logs命令查看日志不太安全,這會導(dǎo)致很多人員知道服務(wù)器的賬戶和密碼,有沒有一種可以收集所有容器日志的平臺系統(tǒng)。那么這套系統(tǒng)就是Loki+Grafana組合。
重要提醒:不要用于生產(chǎn)環(huán)境,否則loki容器日志過多導(dǎo)致服務(wù)器CPU占滿,生成環(huán)境會異常緩慢,博主在摸索過程中吃虧了,血淋淋的教訓(xùn)。
適用于生產(chǎn)環(huán)境的方法,移步至另一篇博客:http://t.csdn.cn/cOiqD
最終效果:與docker logs控制臺的信息一致,可實時顯示,也可以過濾。
文章來源地址http://www.zghlxwxcb.cn/news/detail-520615.html
需要的工具:Loki,loki-docker-driver,Grafana
通過安裝 docker loki plugin 直接采集docker容器日志,并推送至loki。不需要promtail應(yīng)用。
現(xiàn)在使用的環(huán)境和版本:grafana/loki:2.8.2
在安裝之前可以了解這個信息,docker容器控制臺包含了標(biāo)準(zhǔn)輸出和錯誤輸出,我在容器的log日志中只有少量的信息。通過logging driver驅(qū)動轉(zhuǎn)發(fā)給對應(yīng)的應(yīng)用。docker容器默認(rèn)是json-file。
1、在需要監(jiān)控的主機中,安裝容器grafana/loki:2.8.2
創(chuàng)建目錄:/home/apps/loki,
進入目錄:cd?/home/apps/loki,創(chuàng)建loki配置文件vi?loki-config.yaml,并給權(quán)限chmod 777 ./*,不需要修改。
auth_enabled: false
server:
http_listen_port: 3100
grpc_listen_port: 3110
grpc_server_max_recv_msg_size: 1073741824 #grpc最大接收消息值,默認(rèn)4m
grpc_server_max_send_msg_size: 1073741824 #grpc最大發(fā)送消息值,默認(rèn)4m
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
max_transfer_retries: 0
max_chunk_age: 20m #一個timeseries塊在內(nèi)存中的最大持續(xù)時間。如果timeseries運行的時間超過此時間,則當(dāng)前塊將刷新到存儲并創(chuàng)建一個新塊
schema_config:
configs:
- from: 2023-07-03
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /opt/loki/index #存儲索引地址
filesystem:
directory: /opt/loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
ingestion_rate_mb: 30 #修改每用戶攝入速率限制,即每秒樣本量,默認(rèn)值為4M
ingestion_burst_size_mb: 15 #修改每用戶攝入速率限制,即每秒樣本量,默認(rèn)值為6M
chunk_store_config:
#max_look_back_period: 168h #回看日志行的最大時間,只適用于即時日志
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false #日志保留周期開關(guān),默認(rèn)為false
retention_period: 0s #日志保留周期
創(chuàng)建容器grafana/loki:2.8.2,容器掛載卷-v不要刪除否則會報錯
docker run -d \
--name loki \
--privileged=true \
-v /home/apps/loki:/mnt/config \
-v /home/apps/loki/wal:/wal \
-v /home/apps/loki/index:/opt/loki/index \
-v /home/apps/loki/chunks:/opt/loki/chunks \
-p 3100:3100 \
-p 9096:9096 \
--restart=always \
grafana/loki:2.8.2 -config.file=/mnt/config/loki-config.yaml
這個時候容器會報錯重啟,因為報錯沒有權(quán)限
?解決:進入目錄cd?/home/apps/loki,授權(quán)chmod -R 777 *
刪除容器后再執(zhí)行創(chuàng)建。docker rm -f loki
2、安裝loki-docker-driver驅(qū)動
docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
3、安裝Grafana
docker run -d -p 3000:3000 --name=grafana -v /etc/localtime:/etc/localtime:ro grafana/grafana
本地防火墻開放3100,和3000端口
訪問http://主機IP:3000,用戶名默認(rèn)應(yīng)該是admin/admin
4、為單個容器添加日志驅(qū)動
先停止刪除原來你想監(jiān)控的容器。
再重新創(chuàng)建容器:
docker run --log-driver=loki \
--log-opt loki-url="http://你的主機IP:3100/loki/api/v1/push" \
--log-opt loki-retries=5 \
--log-opt loki-batch-size=400 \
--log-opt max-size=50m \
--log-opt max-file=3 \
--restart=always --name 你的容器名 鏡像名:鏡像版本
5、添加數(shù)據(jù)源
更改grafana為中文界面
左側(cè)點擊connections,連接?
添加連接,搜索Loki,選中數(shù)據(jù)源
添加URL,地址為http://主機IP:3100,下方點save/test即可?
添加成功?
點擊左側(cè)探索, 進入查看頁面。完成添加。文章來源:http://www.zghlxwxcb.cn/news/detail-520615.html
到了這里,關(guān)于Loki+Grafana監(jiān)控docker容器日志的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!