iT邦幫忙

2023 iThome 鐵人賽

DAY 21
1

Loki 是啥

Loki 是拿來集中存放 Log 且能夠以近似 Prometheus 的格式來查看
還提供了 Log-based Metrics(基於 Log 的 Metric) 提供給 Prometheus 抓取再給 Grafana 監控

Loki Install

那就來安裝吧 這邊安裝在 Prometheus 上
因為 Prometheus 的 Server 上並沒有 Grafana 的 APT Source 所以這邊在敲一次昨天新增的指令

apt-get install -y apt-transport-https software-properties-common wget
mkdir -p /etc/apt/keyrings/
wget -q -O - https://apt.grafana.com/gpg.key | gpg --dearmor | tee /etc/apt/keyrings/grafana.gpg > /dev/null
echo "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main" | tee -a /etc/apt/sources.list.d/grafana.list
apt-get update

搞定 APT 醬汁後就來安裝 Loki 和 Promtail(Agent)

apt-get update
apt-get install loki promtail -y

理論上這樣就可以了 接著來改 Loki 的設定檔

vim /etc/loki/config.yml

調整 Listen 的 Address

common:
  instance_addr: 10.0.0.5

接著重啟 Loki

service loki restart

重開好後到 Grafana 上先加入 Data Source
在主頁面左側選單點開後 Connection -> Data Sources
https://ithelp.ithome.com.tw/upload/images/20231006/20162773MlsEV5KVIx.png
接著填入 Loki 的 DNS / IP 之後到下方 Save & Test
https://ithelp.ithome.com.tw/upload/images/20231006/20162773LjpdhT5NdY.png
也是要看到這個成功的訊息後才能安心離開
https://ithelp.ithome.com.tw/upload/images/20231006/20162773hzFc2a0rKz.png
接下來設定 Promtail 準備集中 Log 到 Loki 上

Deploy Promtail

摁 這邊也是要做大量部署的 所以把之前部署 Node-Exporter 的 Ansible 搬出來改吧

---
- name: Deploy_promtail
  hosts: target
  tasks:
    - name: update apt package list before install prerequiresite
      ansible.builtin.apt:
        update_cache: yes
    - name: Install prerequisite packages for Promtail
      ansible.builtin.apt:
        name:
        - apt-transport-https
        - software-properties-common
        - wget
    - name: Ensure directory for keyrings exists
      ansible.builtin.file:
        path: /etc/apt/keyrings/
        state: directory
    - name: Fetch and store Grafana GPG key
      ansible.builtin.get_url:
        url: https://apt.grafana.com/gpg.key
        dest: /tmp/grafana.gpg.key
    - name: Dearmor the Grafana GPG key
      ansible.builtin.command:
        cmd: gpg --dearmor -o /etc/apt/keyrings/grafana.gpg /tmp/grafana.gpg.key
        creates: /etc/apt/keyrings/grafana.gpg exists
    - name: Add Grafana APT repository
      ansible.builtin.lineinfile:
        path: /etc/apt/sources.list.d/grafana.list
        line: "deb [signed-by=/etc/apt/keyrings/grafana.gpg] https://apt.grafana.com stable main"
        create: yes
        state: present
    - name: update apt package list before install promtail
      ansible.builtin.apt:
        update_cache: yes
    - name: Install promtail
      ansible.builtin.apt:
        name: promtail
        state: present
    - name: Replace loki server endpoint
      ansible.builtin.replace:
        path: /etc/promtail/config.yml
        regexp: 'http://localhost'
        replace: 'http://loki.ironman.test'
    - name: Make sure a service unit is running and startup when booting
      ansible.builtin.systemd_service:
        name: promtail
        state: restarted
        enabled: true

接著來 play 看看

ansible-playbook Inst-promtail.yaml

https://ithelp.ithome.com.tw/upload/images/20231006/20162773EwJqIEF0lQ.png
出來的成果應該會跟這個數字差不多

Grafana 的主機因為原本就有 GPG dearmor 過了
在這邊重新 de 一次有機會出錯 可以考慮 Grafana 的 Promtail 手動安裝或寫出更好的 Ansible 來防止意外

最後就到 Grafana 的 Loki 頁面上看看吧
https://ithelp.ithome.com.tw/upload/images/20231006/20162773lY6mQzjf8l.png
看起來有了 很棒
但是現在翻 Log 會發現根本不知道這個 Log 是來自哪裡的
明天來解決這個問題


上一篇
Day 20 Grafana(一) 安裝 + 連上 Prometheus
下一篇
Day22 Promtail(一) 清楚的標記 Log 並送到 Loki 上吧
系列文
地端建置大雜燴-下從網路線上到Grafana的建置之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言