loki進行日誌聚合處理 類似elk中的es
promtail是日誌收集,類似elk中的logstash filebeat等,如果是只收集docker容器的日誌則可以用loki的docker plugin替代
grafana是日誌顯示,類似elk中的kibana,可以通過各種標籤和表示式過濾顯示日誌
docker-compose.yml內容如下
version: "3"networks:如果只用docker plugin來收集日誌則可以把promtail部分刪除,已經有grafana的也可以直接復用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 install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions當有新版本時, 更新plugins
docker plugin disable loki --force對於loki的docker plugin有兩種使用方式。docker plugin upgrade loki grafana/loki-docker-driver:latest --grant-all-permissions
docker plugin enable loki
systemctl restart docker
編輯daemon.json。linux下預設路徑是/etc/docker/daemon.json (需要sudo), windows則預設是%userprofile%\.docker\daemon.json
:\d:\d \w\]'\n"},記得把your_ip換成loki所在主機的ip,一般都是本機的區域網位址,如果loki對映的埠換了記得這裡也需要換。映象倉庫位址也可以換成自己雲服務的。"registry-mirrors": [""]
}
其中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...