docker容器使用loki收集日誌

2022-01-14 09:25:58 字數 4404 閱讀 6185

loki進行日誌聚合處理  類似elk中的es

promtail是日誌收集,類似elk中的logstash filebeat等,如果是只收集docker容器的日誌則可以用loki的docker plugin替代

grafana是日誌顯示,類似elk中的kibana,可以通過各種標籤和表示式過濾顯示日誌

docker-compose.yml內容如下

version: "3"networks:

loki:

services:

loki:

image: grafana/loki

restart: always

environment:

- tz=asia/shanghai

- lang=zh_cn.utf-8ports:

- 3100:3100networks:

-loki

promtail:

image: grafana/promtail

restart: always

environment:

- tz=asia/shanghai

- lang=zh_cn.utf-8networks:

-loki

grafana:

image: grafana/grafana:master

restart: always

environment:

- tz=asia/shanghai

- lang=zh_cn.utf-8ports:

- 3000:3000networks:

- loki

如果只用docker plugin來收集日誌則可以把promtail部分刪除,已經有grafana的也可以直接復用

命令列執行

docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions
當有新版本時, 更新plugins

docker plugin disable loki --force

docker plugin upgrade loki grafana/loki-docker-driver:latest --grant-all-permissions

docker plugin enable loki

systemctl restart docker

對於loki的docker plugin有兩種使用方式。

編輯daemon.json。linux下預設路徑是/etc/docker/daemon.json (需要sudo), windows則預設是%userprofile%\.docker\daemon.json

:\d:\d \w\]'\n"},

"registry-mirrors": [""]

}

記得把your_ip換成loki所在主機的ip,一般都是本機的區域網位址,如果loki對映的埠換了記得這裡也需要換。映象倉庫位址也可以換成自己雲服務的。

其中max-size表示日誌檔案最大大小,max-file表示最多10個日誌檔案,都是對單個容器來說的,    multiline是配置多行識別(預設最多128行),轉為單行, firstline表示單條日誌的首行正規表示式

我的是 [03:00:32 info] 開頭這種格式,所以對應正則是^\[\d:\d:\d \w\]  按照你自己的日誌開頭編寫對應正則替換即可

然後重啟docker服務。

sudo systemctl restart docker
在此之後建立的容器預設都會把日誌傳送到loki。

如果不全域性配置,而只想特定的容器進行日誌收集,則根據啟動容器的方式,有兩種配置方法。

通過docker run啟動容器,可以通過--log-driver來指定為loki。示例如下

--log-driver=loki指定日誌驅動器為loki
--log-opt loki-url則指定了loki的url
--log-opt max-size日誌最大大小
--log-opt max-file日誌檔案最大數量

docker-compose 小於3.4可以對需要日誌輸出的配置新增配置如下

注意:max-size和max-file這裡需要加引號  multiline已經在上文解釋過了就不再贅述了

對於3.4極其以上版本可以通過定義模板來減少**量

&loki-logging表示定義模板

*loki-logging表示引用模板。對於多個服務就只需要對應加上一行 logging: *loki-logging 即可。相比之前的版本可謂是大大簡化了

一開始安裝的時候將grafana對映到了宿主機的3000埠,所以位址就為 http://your_ip:3000

grafana預設使用者名稱密碼是admin和admin

第一次進入需要修改admin的密碼

選擇loki。

因為一開始安裝grafana和loki是在乙個docker-compose裡,所以預設在同乙個子網下,因此可以url可以直接寫http://loki:3100。如果grafana和loki是分開的,則需要改為填loki所在的宿主機ip

點選  儲存和測試 。會提示鏈結成功。

左側選單欄選擇探索 

label裡有對應選項可以選擇。  compose_project就是docker-compose的專案名  compose_service就是其中的服務名   container_name就是容器名。這幾個基本就夠我們定位到具體的某個容器了。

然後是時間段選擇

注意:serilog預設日誌格式是  "[ ] "  其中日誌等級是3位,loki識別不到,最好是4位,所以需要把level:u3改為u4

後續應該是loki增加快取以優化查詢速度和集群配置(k8s)

Docker 容器使用

可以通過命令docker command help更深入的了解指定的 docker 命令使用方法。如果我們本地沒有 ubuntu 映象,我們可以使用 docker pull 命令來載入 ubuntu 映象 docker pull ubuntu以下命令使用 ubuntu 映象啟動乙個容器,引數為以命令...

Docker 容器使用

docker version 版本 systemctl status docker.service 狀態 1.檢視所有的容器命令 docker ps a2.啟動乙個已停止的容器 docker start 容器 id 3.停止容器的命令 docker stop 容器 id 4.停止的容器可以通過 do...

docker 容器使用

獲取映象 docker pull 命令來載入 ubuntu 映象 docker pull ubuntu 啟動容器 docker run it ubuntu bin bash 退出終端,直接輸入 exit 進入容器 docker attach 如果從這個容器退出,會導致容器的停止。exit docke...