VictoriaLogs に journal のログを送信してみた

概要

VictoriaLogs は時系列ログデータ用のデータベースです。
Loki, Elasticsearch などのログプラットフォームよりも高効率で単一バイナリで動作します。

経緯

以前は Loki を利用していて Promtail で journal のログを収集していました。そのままの設定 でVictoriaLogs に送信していたのですが上手くいきませんでした。
調べてみると VictoriaLogs では journal 用の API エンドポイントに送信する必要ありました。
systemd-journal-upload を使って VictoriaLogs の jornal の API エンドポイントへ送信する方法が公式で紹介されています。
https://docs.victoriametrics.com/victorialogs/data-ingestion/journald/

モチベーション

  • Journal のログ監視

Ansible で systemd-journal-upload を設定

Ingress で設定する方法もあると思いますが metallb で vip を設定する方法にしました。
ポート番号については HA モードとシングルモードでは異なる場合があるので確認が必要です。

victorialogs_vip: "192.168.1.80"
victorialogs_port: "9481"

- name: Ensure systemd-journal-upload is installed
  ansible.builtin.package:
    name: systemd-journal-remote
    state: present
  tags:
    - journal_upload

- name: Configure journal-upload for VictoriaLogs
  ansible.builtin.blockinfile:
    path: /etc/systemd/journal-upload.conf
    create: true
    block: |
      [Upload]
      URL=http://{{ victorialogs_vip }}:{{ victorialogs_port }}/insert/journald
      #Compression=zstd:3 lz4:1
      #Header=AccountID: 1
      #Header=ProjectID: example
    owner: root
    group: root
    mode: '0644'
  tags:
    - journal_upload

- name: Enable and start journal-upload service
  ansible.builtin.systemd:
    name: systemd-journal-upload
    enabled: true
    state: started
  tags:
    - journal_upload

- name: Ensure journald service is reloaded
  ansible.builtin.systemd:
    name: systemd-journald
    state: restarted
  tags:
    - journal_upload

Helm の設定

kustomize の helmChart を使ってデプロイします。
values.yaml については、ほぼデフォルトのままで良いと思います。
私の環境では vlinsert の service に metallb の annotations 設定して vip を指定した Loadbalancer で動作せています。

helmCharts:
  - name: victoria-logs-cluster
    repo: https://victoriametrics.github.io/helm-charts/
    version: "0.0.18"
    releaseName: victoria-logs-cluster
    namespace: monitoring
    valuesFile: values.yaml
vlstorage:
  persistentVolume:
    accessModes:
      - ReadWriteMany
    storageClassName: "nfs"
vlinsert:
  service:
    annotations: 
      metallb.universe.tf/address-pool: vlinsert
    type: LoadBalancer

Journal のログが収集できるようになった。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です