簡介
- Loki日志框架是一個輕量級日志收集框架,分為3個服務(wù):
- Loki 是主服務(wù)器,負責(zé)存儲日志和處理查詢。
- Promtail 是代理,負責(zé)收集日志并將其發(fā)送給 Loki (不是必須的)。
- Grafana 用于 UI 展示。
安裝
- 以docker-compose安裝為例,進行示范:
docker-compose 是docker的功能組件,需要自行安裝docker-compose 是docker的功能組件,需要自行安裝。
- 編寫docker-compose的配置文件 config.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
2.啟動 docker-compose -f config.yaml up,此時,服務(wù)loki和grafana就已經(jīng)啟動了,現(xiàn)在需要將grafana查詢服務(wù)和loki存儲服務(wù)關(guān)聯(lián)起來。
配置服務(wù)
- 訪問
http://127.0.0.1:3000訪問查詢服務(wù) admin/admin,
選擇配置數(shù)據(jù)源,可以看到grafana支持多種數(shù)據(jù)源類型,選擇Loki。

圖例1
- 設(shè)置數(shù)據(jù)源信息

圖例2
- 點擊Save&Test,連接成功后就會

圖例3
查詢數(shù)據(jù)
- Loki日志收集可以分為兩種方式:
- 通過log4j日志系統(tǒng)直接將日志發(fā)送到Loki存儲服務(wù)。
- 使用Promtail讀取日志信息,并將日志發(fā)送至Loki存儲服務(wù)。
通過log4j日志系統(tǒng)收集
- 項目pom中加入依賴
<dependency>
<groupId>com.github.loki4j</groupId>
<artifactId>loki-logback-appender-jdk8</artifactId>
<version>1.4.2</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.14</version>
</dependency>
- 設(shè)置logback.xml
<appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender">
<http class="com.github.loki4j.logback.ApacheHttpSender">
<url>http://127.0.0.1:3100/loki/api/v1/push</url>
</http>
<format>
<label>
<pattern>app=my-app,host=${HOSTNAME},level=%level</pattern>
</label>
<message>
<pattern>l=%level h=${HOSTNAME} c=%logger{20} t=%thread | %msg %ex</pattern>
</message>
<sortByTime>true</sortByTime>
</format>
</appender>
<root level="info">
<appender-ref ref="LOKI" />
</root>
其中app、host、level都會成為查詢標(biāo)簽
http://127.0.0.1:3100/loki/api/v1/push 為推送地址,ip是Loki存儲服務(wù)所在的機器地址
使用Promtail讀取日志信息
在每臺需要收集日志的機器上部署Promtail,部署方式有多種如本地部署、docker部署等,其他部署方案,請查看
其他客戶端可以訪問 這里下載。
設(shè)置配置文件 promtail-config.yaml
server:
http_listen_port: 9080
grpc_listen_port: 0
#Loki存儲服務(wù)請求地址
clients:
- url: http://localhost:3100/loki/api/v1/push
scrape_configs:
#任務(wù)名,可在標(biāo)簽中分組查詢
- job_name: nginx
#管道設(shè)置,可以過濾或重新設(shè)置log格式
pipeline_stages:
- replace:
expression: '(?:[0-9]{1,3}\.){3}([0-9]{1,3})'
replace: '***'
static_configs:
- targets:
- localhost
labels:
job: nginx_access_log
host: expatsxxxxs
agent: promtail
#log所在目錄
__path__: \local\*.log
啟動 promtail -config.file=promtail-config.yaml
具體任務(wù),標(biāo)簽等查詢屬性請查看這里