Loki日志收集框架

簡介

  • Loki日志框架是一個輕量級日志收集框架,分為3個服務(wù):
  1. Loki 是主服務(wù)器,負責(zé)存儲日志和處理查詢。
  2. Promtail 是代理,負責(zé)收集日志并將其發(fā)送給 Loki (不是必須的)。
  3. Grafana 用于 UI 展示。

安裝

  • 以docker-compose安裝為例,進行示范:

docker-compose 是docker的功能組件,需要自行安裝docker-compose 是docker的功能組件,需要自行安裝。

  1. 編寫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ù)

  1. 訪問 http://127.0.0.1:3000訪問查詢服務(wù) admin/admin
    選擇配置數(shù)據(jù)源,可以看到grafana支持多種數(shù)據(jù)源類型,選擇Loki。
圖例1
  1. 設(shè)置數(shù)據(jù)源信息
圖例2
  1. 點擊Save&Test,連接成功后就會
圖例3

查詢數(shù)據(jù)

  • Loki日志收集可以分為兩種方式:
  1. 通過log4j日志系統(tǒng)直接將日志發(fā)送到Loki存儲服務(wù)。
  2. 使用Promtail讀取日志信息,并將日志發(fā)送至Loki存儲服務(wù)。

通過log4j日志系統(tǒng)收集

參考資料

  1. 項目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>
  1. 設(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>

其中apphost、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)簽等查詢屬性請查看這里

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容