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 のログが収集できるようになった。

