Grafana + Loki + Promtail 淺談小玩

1k 詞

前言

今天要安裝的是一套Grafana LAB出產、針對Logging的解決方案Grafana Loki,是一個主打著lightweight的解決方案(比較對象常常是ELK/EFK)。

簡單補充一下官方 loki 架構
Imgur

其中agent的選擇有

  • Promtail
  • Docker Driver
  • Fluentd
  • Fluent Bit
  • Logstash
  • Lambda Promtail

雖然我自己也有在使用ELK,但就想玩玩看LOKI可以做到些甚麼,目前看起來絕得還不錯但詳細的使用我想還得再花點時間觀察。主要是我覺得ELK很醜

心動不如行動,想做不如就做 (≧∀≦)ゞ

因為我用的是 Centos 7 所以就直接抓下來 unzip就可以了

我也是有想做K8S…但那也是題外話了,有機會以後再聊

進入正題

Loki安裝

  • https://github.com/grafana/loki/releases 找你要的本版下載即可

    1
    wget https://github.com/grafana/loki/releases/download/v2.8.4/loki-linux-amd64.zip
  • 解壓縮

    1
    unzip loki-linux-amd64.zip
  • 調整權限

    1
    chmod a+x loki-linux-amd64
  • 設定loki.yaml

    vim ~/source/loki/loki.yaml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    auth_enabled: false

    server:

    http_listen_port: 3100
    grpc_listen_port: 39095 #grpc监听端口,默认为9095
    grpc_server_max_recv_msg_size: 15728640 #grpc最大接收消息值,默认4m
    grpc_server_max_send_msg_size: 15728640 #grpc最大发送消息值,默认4m

    ingester:
    lifecycler:
    address: 127.0.0.1
    ring:
    kvstore:
    store: inmemory
    replication_factor: 1
    final_sleep: 0s
    chunk_idle_period: 5m
    chunk_retain_period: 30s
    max_transfer_retries: 0
    max_chunk_age: 20m #一個timeseries在記憶體中最大的持續時間,如果timeseries超過此時間,則會重新刷新

    schema_config:
    configs:
    - from: 2018-04-15
    store: boltdb
    object_store: filesystem
    schema: v11
    index:
    prefix: index_
    period: 168h

    storage_config:
    boltdb:
    directory: /loki/index #連線網址

    filesystem:
    directory: /loki/chunks

    limits_config:
    enforce_metric_name: false
    reject_old_samples: true
    reject_old_samples_max_age: 168h
    ingestion_rate_mb: 30 #修改每用戶涉入速率限制,即每秒樣本量,預設4M
    ingestion_burst_size_mb: 15 #修改每用戶涉入速率限制,即每秒樣本量,預設6M

    chunk_store_config:
    max_look_back_period: 168h #回看日志行的最大时间,只适用于即时日志

    table_manager:
    retention_deletes_enabled: true #日誌刪除排程,預設為false
    retention_period: 168h #日誌保留的長度
  • 啟動

    1
    nohup ./loki-linux-amd64 -config.file=loki.yaml &
  • 檢查

    1
    2
    ps -ef |grep loki
    root 26441 13201 0 14:51 pts/3 00:00:00 ./loki-linux-amd64 -config.file=loki.yaml

    以上到目前為止,Loki已經安裝完成囉~ (っ´ω`c)

緊接著我們來安裝Promtail吧

Promtail安裝


因為我這次要用的是windows的主機,要在主機上裝agent來回傳資訊

  • 下載windows用的 promtail

    1
    https://github.com/grafana/loki/releases/download/v2.7.1/promtail-windows-amd64.exe.zip
  • 解壓縮後放到想要的位置 例如:C:\promtail

  • 在C槽下建立 promtail

  • 將解壓縮後的檔案放到資料夾中,並新建設定檔 promtail-local-config.yaml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    server:
    http_listen_port: 9080
    grpc_listen_port: 0

    positions:
    filename: "./positions.yaml"

    clients:
    - url: http://192.168.1.100:3100/loki/api/v1/push

    scrape_configs:
    - job_name: windows
    windows_events:
    use_incoming_timestamp: false
    bookmark_path: "./bookmark.xml"
    eventlog_name: "Application"
    xpath_query: '*'
    labels:
    job: windows
    relabel_configs:
    - source_labels: ['computer']
    target_label: 'host'

    可以再調整抓取需求的內容

  • 啟動commandline (系統管理員)

    1
    2
    C: promtail
    .\promtail-windows-amd64.exe --config.file=promtail-local-config.yaml

    Imgur

  • 之後再返回grafana上建立loki資料源
    Imgur
    Imgur
    Imgur

  • 再去explore上就可以查詢資料了

至此Loki的安裝與Promtail的設定都完成了~

如果你想知道Loki有沒有設置正確可以透過這個網址來確認

1
http://localhost:3100/ready

如果回你ready就代表OK啦~ 灑花

後話


每次要使用,都’必須‘用commandline開啟,並且卡一個視窗,實在是太蠢了,你說是吧?

所以我們再去下載nssm.cmd

官方網址

. Windows Commandline

1
2
cd C:\promtail
nssm install "Promtail Agent"
1
2
Application Path 選擇 C:\promtail\promtail-windows-amd64.exe
Application Arguments 輸入 --config.file=promtail-local-config.yaml

Imgur

接著再去服務把他設定成開機啟動 如下圖:
Imgur
這樣就可以透過開機自動啟動啦~

注意

可執行檔所在路徑為 C:\promtail\nssm.exe,如果 nssm.exe 被移動到其他位置服務將無法啟動。

也可抓取特定LOG來做分析
例:

1
2
3
4
5
6
7
- job_name: system
static_configs:
- targets:
- localhost
labels:
job: steam #自定義 job labels
__path__: D:\steam\log\*.log #log路徑

廢話

雖說除了單純討厭ELK的版面以外,更多的只是,我想簡單找到我要的,不想太麻煩

所以才會去配置了一個Loki自己用,當然更多時候使用的還是ELK。

但我自己應該會比較常用的是Loki吧 (・∀・)