Netdataのdbengineと専用ログによるディスク肥大化を解消・制限する方法

Netdataのキャッシュ・ログとかでディスクが肥大化する

RHEL9系のRocky Linux9の環境において、Netdata(v2系以降)をデフォルト設定のまま低スペックのクラウドで運用しています。
気がつくとディスク容量の空きがすごくすくなっていました。どのディレクトリが圧迫しているか調べるとNetdataのメトリックデータ(dbengine)と独立した専用ログ(journald@netdata)の2箇所が原因でディスクが容量が圧迫して肥大化しているようです。

本記事では、これらを適切な容量に制限し、自動で古いデータからローテーション(削除)させる恒久対策手順をまとめます。

※設定したのはサーバーはディスク容量は20Gくらいの低スペックのサーバーです


メトリックデータ(dbengine)の容量制限

Netdata では、データベース設定を [global] ではなく [db] セクションに記述する必要があります。デフォルトで有効化されている3つのデータ階層(Tier 0〜2)すべてに上限を設定します。

設定ファイルの修正

/etc/netdata/netdata.conf を開き、古い page cache size などの記述を削除またはコメントアウトした上で、以下の [db] セクションを追記します。

$ sudo vim /etc/netdata/netdata.conf
[db]
    mode = dbengine
    storage tiers = 3

    # Tier 0(毎秒データ)のディスク上限(例: 256MB)
    dbengine tier 0 disk space MB = 256

    # Tier 1(毎分データ)のディスク上限(例: 128MB)
    dbengine tier 1 disk space MB = 128

    # Tier 2(毎時データ)のディスク上限(例: 64MB)
    dbengine tier 2 disk space MB = 64

    # ページキャッシュサイズ
    dbengine page cache size MB = 32

反映と既存データのクリーンアップ

Netdataは既存の巨大なファイルを自動縮小するのが苦手なため、一度サービスを停止して過去データを削除してから再起動します。

# サービス停止
$ sudo systemctl stop netdata

# 肥大化した3つの階層の過去データを一括削除
$ sudo rm -rf /var/cache/netdata/dbengine/*
$ sudo rm -rf /var/cache/netdata/dbengine-tier1/*
$ sudo rm -rf /var/cache/netdata/dbengine-tier2/*

# サービス起動(新しい制限値内でクリーンに記録が開始されます)
$ sudo systemctl start netdata


Netdata専用ログ(systemdジャーナル)の容量制限

RHEL9のNetdataは、システムログを汚さないよう「ジャーナル名前空間(Journal Namespace)」を使用し、journald@netdata という独立したエリアにログを出力します。
これは通常の /etc/systemd/journald.conf を編集しても連動して制限されないため、専用の設定ファイル(ドロップインファイル)を作成する必要があります。

応急処置(今すぐ古いログを消す場合)

設定前に、すでに溜まっている専用ログを50MBまで即座に縮小(vacuum)できます。

$ sudo journalctl --namespace=netdata --vacuum-size=50M

恒久対策(自動ローテーションの設定)

Netdata専用ログのディレクトリを作成し、最大容量を50MBに固定する設定ファイルを新規配置します。

# 1. Netdata専用ログ用の設定ディレクトリを作成
$ sudo mkdir -p /etc/systemd/journald@netdata.conf.d

# 2. 上限を50MBに制限する設定ファイルを新規作成
$ sudo tee /etc/systemd/journald@netdata.conf.d/override.conf << 'EOF'
[Journal]
SystemMaxUse=50M
EOF

# 3. ログ管理サービスを再起動して設定を反映
$ sudo systemctl restart systemd-journald

設定の確認

以下のコマンドを実行し、現在のNetdataログの合計サイズが指定した制限値(50MB以下)に収まっているか確認します。

$ journalctl --namespace=netdata --disk-usage

まとめ

以上の設定を行うことで、Netdata関連のデータ・ログともに上限値が固定され、ディスクフルになるリスクを根本から防ぐことができます。


\ 最新情報をチェック /

コメントを残す

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