Loki動態展示linux本地日誌
背景
- 產品需要拆分微服務部署,直接使用K8S部署雖然比較規範但是部署時間較長.
- 本地文件系統部署簡潔快速一些, 但是不太好直接複用一些規範的產品.
- 本次處理方法就是基於Linux文件系統通過grafana展示微服務日誌的方法
- 本次涉及 grafana進行動態展示, loki顯示日誌 promtail 進行日誌歸集.
統一日誌存放
- 使用微服務部署方式將應用服務器存放於 /su 路徑下面進行分別存放.
- 使用腳本進行批量啓動
for i in `ls /su` ;
do
cd /su/$i/apppath/ && nohup ./startup.sh > /sulog/$i.log & ;
done
1. /su 路徑下面存放具體微服務的程序路徑. 並且帶單獨的啓動腳本
2. /sulog 用於整體存放微服務的日誌, 注意使用變量方式進行.便於查看.
鏡像與配置文件
docker pull grafana/grafana
docker pull grafana/loki
docker pull grafana/promtail
wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/cmd/loki/loki-local-config.yaml -O /grafana/loki-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/clients/cmd/promtail/promtail-docker-config.yaml -O /grafana/promtail-config.yaml
wget https://raw.githubusercontent.com/grafana/loki/v2.3.0/production/docker-compose.yaml -O /grafana/docker-compose.yaml
- 備註 Study From
https://www.jianshu.com/p/87bc8a39fbd5
修改配置文件
- loki的配置文件幾乎不需要修改
- promtail 配置文件需要如下修改
clients:
- url: http://10.110.x.x:3100/loki/api/v1/push
# 注意着一個地址需要與loki服務器指定, 並且建議打開防火牆
scrape_configs:
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: varlogs
__path__: /sulog/*log
# 注意這個路徑 需要與啓動服務的路徑保持一致.
修改docker-compose文件
version: "3"
networks:
loki:
services:
loki:
image: grafana/loki:latest
ports:
- "3100:3100"
command: -config.file=/grafana/loki-config.yaml
volumes:
- /grafana:/grafana
networks:
- loki
# 注意 loki 的配置文件需要通過 volumes 的方式進行掛載.
# 注意配置文件也是如此
promtail:
image: grafana/promtail:latest
volumes:
- /sulog:/sulog
- /grafana:/grafana
command: -config.file=/grafana/promtail-config.yaml
networks:
- loki
# 注意微服務的日誌和配置文件都需要進行掛載.
grafana:
image: grafana/grafana:latest
ports:
- "3000:3000"
networks:
- loki
# grafana 基本上不需要修改.
啓動服務
- 複製docker-compose 到 /usr/bin 目錄下並且設置權限
docker-compose up -d
# 啓動服務
docker ps -a
# 查看鏡像時會否正常
docker logs -f container_name
# 查看日誌進行分析處理.
界面化驗證
打開 ip:3000 地址, 默認密碼 admin/admin
第一次登錄需要修改密碼
進入grafana 打開數據源定義 添加 loki數據源
注意建議選擇 具體ip地址進行使用
localhost 可能是不通的.
界面化驗證
- 打開explore
- 選擇某一個文件,然後選擇showlogs 展示日誌
- 注意可以選擇 query log 並且定期刷新
- 可以手工修改 log 文件名的方式來展示不同微服務的日誌.
- 提供給其他人使用.