コンテンツにスキップ

設定リファレンス

Yagra の設定は、すべて環境変数で行います。設定ファイルはありません。

バイナリは、プロセスを起動したときに一度だけ環境を読みます。ですから値を変えたら、該当する コンテナの再起動が必要です。

同梱の compose ファイルを使う場合は、compose ファイルの隣にある .env に変数を書きます。最初の セットアップは、インストールガイドを見てください。

このページに出てくる変数は、2 種類あります。

  • バイナリが読む変数(yagra-core、yagra-poller、またはその両方)。同梱の compose ファイルを 使うかどうかに関わらず、どのデプロイでも効きます。
  • compose 専用の変数。compose ファイルを展開するときに、Docker Compose か同梱の NATS サーバー 設定が使います。バイナリは一切読みません。末尾の専用セクションにまとめてあります。

シークレットは、値ではなくファイルで渡します。 シークレットを扱う変数は 3 つです。 YAGRA_KEK_FILE、YAGRA_SESSION_KEY_FILE、YAGRA_NATS_CALLOUT_SEED_FILE です。

これらが運ぶのは、マウントしたファイルへのパスです。シークレットそのものが環境変数の値に現れる ことは決してありません。ですから docker inspect やプロセスの環境から漏れることもありません。

真偽を表す変数(YAGRA_ENABLE_HA)は、1・ true・yes・on で真になります(大文字小文字は区別しません)。それ以外の値では偽で、未設定も 偽です。

既定でオンで、読み方が逆のものが 2 つあります。0・false・no・off でオフになり、それ以外 (未設定を含む)ではオンのままです。YAGRA_ENABLE_MCP(MCP の節を見てください)と YAGRA_STORE_FORWARD(store-and-forward の行を見てください)です。

以下の表で、既定の列にあるダッシュ(—)は、その変数に既定値が無いという意味です。未設定のときに 何が起きるかは、用途の欄に書いてあります。

yagra-core バイナリが読む変数 — オーケストレーション、スケジューリング、ノースバウンド REST API。

データは種類ごとに、それ専用のストアへ入ります(アーキテクチャ概要 を見てください)。

コアが実データを扱うモードで動くには、PostgreSQL・バス・VictoriaMetrics の 3 つが必要です。 それ以外のストアは任意です。

変数 既定 用途
YAGRA_DATABASE_URL — (required) メタデータストア用の PostgreSQL 接続 URL。起動時、接続は 2 秒間隔で 30 回リトライされます。
YAGRA_TSDB_URL — (required) VictoriaMetrics のベース URL — 時系列メトリクスストア。
YAGRA_REDIS_URL unset 揮発性のポーラー死活・割当ミラー用の Redis URL。未設定・空・到達不能 ⇒ コアは一度だけログを出して no-op ミラーに縮退します — 致命的にはなりません。ミラーは再構築可能なので、Redis を失っても安全です。
YAGRA_LOGS_URL unset VictoriaLogs のベース URL — 検索可能なパッシブイベントストア。未設定 ⇒ パッシブイベントはすべて PostgreSQL に留まります。
YAGRA_CLICKHOUSE_URL unset ClickHouse の HTTP URL — トラフィックフローストア。未設定 ⇒ フロー受信は無効になり、フロー API は 503 を返します。
YAGRA_PG_MAX_CONNECTIONS 20 コアプロセス全体の接続プール上限。高可用性を有効にすると、リーダーの advisory lock 用接続がこのプールに加えて 1 本増えます — PostgreSQL の max_connections はそれを見込んでサイジングしてください。
YAGRA_VM_WRITERS コアあたり 1 本、最大 4 VictoriaMetrics へメトリクスを書くタスクの本数です。サンプルはノード単位に振り分けられるので、1 ノードの系列の順序は崩れません。下の待ち行列はこの層の合計で、本数分に分割されます — タスクごとに増えるわけではありません。以前の版と同じ 1 本構成にするなら 1 を指定してください。4 を超える指定は 4 に丸められ、丸めたことがログに出ます。
YAGRA_RESULT_QUEUE_CAP 16384 VictoriaMetrics の書き込みが遅いあいだ、コアがポーリング結果を何件まで抱えられるかです。これを超えた分は捨てられます。これは設計どおりの動作です — メトリクスは best-effort の層で、次のポーリングが同じ値を埋め直します。ただしグラフには穴が空きます。大きさは自分のデプロイの yagra_vm_backlog_needed_high_water から決めてください。この指標は、上限の無い待ち行列ならどこまで伸びたかを示します。メモリは件数に比例し、24 ポートのノードで 1 件あたりおよそ 21 KB です。131072 を超える指定は 131072 に丸められ、丸めたことがログに出ます。
変数 既定 用途
YAGRA_API_ADDR 0.0.0.0:8080 REST API のバインドアドレス。コンテナのヘルスチェックも、プローブ先ポートを導くためにこれを読みます。
YAGRA_ADMIN_PASSWORD unset admin アカウントの初回起動パスワード。アカウントが最初にシードされるときにだけ参照されます。未設定または空 ⇒ コアが一度限りのランダムなブートストラップパスワードを生成してログに一度だけ出力します — 周知の既定パスワードは存在しません。
YAGRA_SESSION_KEY_FILE unset マウントした HMAC セッション署名鍵へのパス(16 進 64 文字または生の 32 バイト)。コアの再起動を越えて有効で、HA ペアをまたいで機能する、ステートレスな署名付きセッショントークンを有効化します。未設定 ⇒ プロセスごとの不透明トークン。
YAGRA_PAT_OIDC_IDLE_DAYS 30 SSO でプロビジョニングされたアカウントが所有する API トークンが、所有者がサインインしないまま生き延びる日数。IdP 側でのアカウント無効化は Yagra に通知されないため、所有者の沈黙が唯一の手がかりです。ローカル/サービスアカウントが所有するトークンは対象外。1〜365 にクランプされ、無効化はできません。
YAGRA_KEK_FILE unset 監視用認証情報を保存時にエンベロープ暗号化する、マウントしたマスタ鍵(KEK)へのパス。

WebUI は、既定で HTTPS で提供されます。

証明書の正本は PostgreSQL にあり、他のすべての秘密と同じ KEK で二重に暗号化されています。コアが それを、web コンテナの読むボリュームへ書き出します。全体像は セキュリティを見てください。

変数 既定 用途
YAGRA_TLS_DIR unset コアが証明書バンドルを実体化するディレクトリ(web コンテナの nginx が読みます)。未設定 ⇒ 何も書きません — TLS を別の場所で終端するデプロイの形です。同梱の compose ファイルは /var/lib/yagra/tls を設定します。
YAGRA_TLS_SELF_SIGNED_SANS unset ブートストラップの自己署名証明書が対象とする名前(カンマ区切り)。未設定 ⇒ ループバックとコンテナのホスト名。実際に入力されるアドレスをコンテナ内から知る術はないので、ここで指定するか設定 ▸ TLS 証明書で正しい名前を指定して再生成してください。
YAGRA_API_BIND unset(⇒ 0.0.0.0) コアの平文 API ポートを公開するホスト側インターフェース。コア自身も読みますが、それは設定 ▸ TLS 証明書が「このポートがまだ LAN から届くか」を報告するためだけで、コンテナ内でコアが bind する先は変わりません。Prometheus の scrape・webhook 送信元・API スクリプトを TLS エッジへ移した後に 127.0.0.1 を設定してください。

次の 4 つは web コンテナのエントリポイントが読みます(どちらの Rust バイナリも読みません):

変数 既定 用途
YAGRA_WEB_TLS on off / false / 0 にすると、コンテナの 8080 で平文 HTTP を配ります — 手前のリバースプロキシやロードバランサが既に HTTPS を終端している構成のための選択肢です。
YAGRA_WEB_TLS_CERT /etc/nginx/certs/server.pem web コンテナ内での、証明書チェーンと秘密鍵をまとめたバンドルのパス。1 ファイルに両方を収めているため、鍵と一致しない証明書が読まれる瞬間が生じません。
YAGRA_WEB_TLS_WAIT_SECS 90 エントリポイントがそのファイルを待つ秒数。タイムアウトはハードエラーです — TLS が要求された以上、黙って平文へ格下げするのではなく起動を拒否します。
YAGRA_WEB_TLS_RELOAD_SECS 15 取り込み・再生成された証明書を検知するためにバンドルをハッシュする周期。変更は nginx -s reload で適用され、しかも nginx -t が通った場合だけです — 不正な証明書は UI を落とさず、直前の設定が動き続けます。

スケジューリングとポーリングの既定値

Section titled “スケジューリングとポーリングの既定値”
変数 既定 用途
YAGRA_POLL_INTERVAL_SECS 300 初期の既定ポーリング間隔(秒)。10–3600 にクランプされます。初回起動のみ: この値は保存される設定を一度だけシードします。以後は WebUI の設定値が権威であり、この変数は無視されます。
YAGRA_SNMP_COMMUNITY unset 認証情報が紐付いていないノードに使うフォールバックの SNMP v2c コミュニティ。未設定または空 ⇒ フォールバックなし — 該当ノードには認証情報の割り当てが必要です。
YAGRA_MERAKI_POOL default Meraki クラウドポーリングのジョブを振り分けるポーラープール。

環境変数で設定する Webhook とメールのチャネルは、常に有効な既定のチャネルです。WebUI で設定した どの通知チャネルとも並行して発火します。

変数 既定 用途
YAGRA_WEBHOOK_URL unset 既定のアラート通知 Webhook — すべてのアラートで発火します。未設定または空 ⇒ 環境変数による Webhook チャネルなし。
YAGRA_SMTP_HOST unset 既定メールチャネル用の SMTP リレーホスト。チャネルは YAGRA_SMTP_HOST・YAGRA_SMTP_FROM・YAGRA_SMTP_TO がすべて設定されているときにだけ有効になります。
YAGRA_SMTP_PORT 465 SMTP ポート。既定は implicit TLS(SMTPS)です。
YAGRA_SMTP_FROM unset メールの From アドレス。有効なメールボックスとしてパースできなければチャネルは破棄されます。
YAGRA_SMTP_TO unset メールの To アドレス。有効なメールボックスとしてパースできる必要があります。
YAGRA_SMTP_USER unset SMTP 認証のユーザー名。認証情報が適用されるのは YAGRA_SMTP_USER と YAGRA_SMTP_PASS の両方が設定されているときだけです。
YAGRA_SMTP_PASS unset SMTP 認証のパスワード。
YAGRA_POOL_COVERAGE_ALERT_AFTER_SECS 300 ノードを抱えたままのポーラープールに生存ポーラーが 1 台も居ない状態が何秒続いたら、監視カバレッジそのものについて critical アラートを上げるか。ポーラーは終了時に自ら離脱を通知するため、通常のローリング再起動でも条件は即座に成立します — このデバウンスはそれで誰も呼び出さないためのものです。0 でアラートは無効。yagra_pools_without_live_poller と yagra_pool_nodes_without_live_poller のゲージはどちらの設定でも出力されます。

アクティブ/パッシブ構成の完全な手順は高可用性ガイドを 参照してください。

変数 既定 用途
YAGRA_ENABLE_HA false PostgreSQL の advisory lock によるリーダー選出を使う、オプトインのアクティブ/パッシブコアペア。オフ ⇒ 単一のアクティブコアで、非 HA と同一の挙動です。
YAGRA_CORE_ID unset このコアインスタンスの人間可読な id。HA のログと診断に表示されます。未設定 ⇒ 汎用ラベル。

AI のクライアント向けに、既定で公開される MCP のツール群です。詳しくは MCP サーバーのページを見てください。

変数 既定 用途
YAGRA_ENABLE_MCP true /mcp に MCP のツール群をマウントします。false にすると外れ、/mcp へのリクエストは 404 を返します。/mcp の認証は、公開ダッシュボードが有効なときでも常に必須です。ですから有効であっても、API トークンを発行するまでは何も見えません。
YAGRA_MCP_ALLOWED_HOSTS unset /mcp の Host ヘッダーを固定する、カンマ区切りの host[:port] 許可リスト(任意。DNS リバインディング対策)。未設定または空 ⇒ 任意の Host を受理します。必須の Bearer 認証は引き続きゲートとして機能します。

トラブルシュートの分析ジョブと、AI 根本原因分析(RCA)の生成に対する上限です。RCA の生成は外部の LLM を呼び出します。ですから RCA の上限は、支出の上限も兼ねます。

変数 既定 用途
YAGRA_ANALYSIS_MAX_CONCURRENT 4 同時に実行できるトラブルシュート分析ジョブの上限。
YAGRA_ANALYSIS_RATE_PER_MIN 30 毎分受け付ける新規分析ジョブの上限(スライディング 60 秒ウィンドウ)。
YAGRA_RCA_MAX_CONCURRENT 2 同時に実行できる AI RCA 生成の上限。
YAGRA_RCA_RATE_PER_MIN 10 毎分受け付ける新規 RCA 生成の上限(スライディング 60 秒ウィンドウ)。
YAGRA_RCA_CACHE_SECS 900 RCA レポートのキャッシュ寿命(秒)。強制再生成はキャッシュを迂回しますが、レート上限は迂回しません。
YAGRA_RCA_MAX_TURNS 6 LLM 根本原因分析が回答に至るまでに使えるツール呼び出しのターン数上限。v0.1.23 以降、分析は読み取り専用の MCP ツールを自分で呼んで調べられます。1 にすると以前の単発動作に完全に戻ります — ツールは一切提示されず、プロバイダへ送られるリクエストは以前とバイト単位で同一です。
YAGRA_RCA_TASK_BUDGET_SECS 240 1 回の根本原因分析(ツール呼び出しを含む)の実時間上限(秒)。上限に達した場合はリクエストを失敗させず、モデルの最後の回答を返します。

トラフィックフローと IP→ASN 補完

Section titled “トラフィックフローと IP→ASN 補完”

フローストアへの接続そのものは、YAGRA_CLICKHOUSE_URL で設定します(上の「バックエンドストア」を 見てください)。

ここに挙げる変数は、保持期間と IP→ASN 補完の調整に使います。詳しくは トラフィックフロー機能のページにあります。

変数 既定 用途
YAGRA_FLOW_RETENTION_DAYS 30 フローレコードの保持期間(日数。ClickHouse の TTL として適用)。1–3650 にクランプされます。
YAGRA_CLICKHOUSE_SYSTEM_LOG_RETENTION_DAYS 7 ClickHouse 自身の system.*_log テーブルの保持期間(日数)。0–3650 にクランプされます。素の ClickHouse はこれらに TTL を与えないため、無制限に増え続けます。0 にすると system.* に手を触れません。YAGRA_CLICKHOUSE_URL がこのデプロイの持ち物でない ClickHouse を指している場合に使ってください。
YAGRA_IPASN_DB unset フローの IP→ASN 補完に使う、オフラインの iptoasn.com TSV データセットへのパス。未設定 ⇒ 補完は無効になり、エクスポーターが提供する AS 番号だけが使われます。ファイルが存在しない・読めない場合は警告をログに出して補完を無効化します — 致命的にはなりません。
YAGRA_IPASN_RELOAD_SECS 0 IP→ASN データセットを再起動なしでホットリロードする周期(秒)。0 ⇒ 起動時に一度だけ読み込み、リロードタスクなし。

バスをリモートポーラーへ公開する場合、コアを NATS の Auth Callout サービスとして動かせます。すると ポーラーごとに、そのポーラーが必要とするサブジェクトだけに絞ったバスの認証情報を発行できます。

v0.3.2 以降、設定する物はありません。「Accept remote pollers」を有効にすると、これも一緒に 有効になります。署名鍵は初回起動時に生成されてデータベースに封じられ、公開鍵のほうは、バスの 残りの設定を書くのと同じ 1 回の実行でバス自身の設定に書き込まれます。

変数 既定 用途
YAGRA_NATS_POLLER_PASSWORD unset 自分のトークンを持たないポーラーが名乗る共有のブートストラップシークレットであり、callout を動かすかどうかを決める変数でもあります。未設定 ⇒ レスポンダは起動せず、NATS は静的なアカウントに戻ります。リモートポーラーのスイッチがこれを書き込みます。同梱の NATS サーバー設定も同じ値を消費します(compose 専用の変数を参照)。
YAGRA_NATS_CALLOUT_ACCOUNT $G 発行したポーラーユーザーを配置する NATS アカウント。バスの生成された callout.conf が名乗るアカウントと一致している必要がありますが、そのファイルはこの同じ値から書かれます。ブローカーのアカウントを独自に変えていない限り、触らないでください。
YAGRA_NATS_CALLOUT_SEED_FILE unset 旧経路。 マウントした NATS アカウント nkey シードファイルへのパス。設定すると、core が自分で生成した鍵より優先されます。未設定(通常の状態)なら保存された鍵を使います。v0.3.2 より前に手で設定していた環境のためだけに残っています。

バスの証明書は、上の認証情報とは別のものです。Yagra が生成し、PostgreSQL が正本になります。WebUI 自身の証明書と同じ扱いです。bus-cert-init という一発サービスが、バスの起動前にそれをボリュームへ 書き出します。NATS サーバーはそこから読みます。

通常この 2 つを手で設定することはありません。設定 ▸ ポーラー ▸ リモートポーラーを受け入れるが、 TLS と認証を 1 回の変更で有効にするのと合わせて設定します。

変数 既定 用途
YAGRA_BUS_TLS_SANS unset バス証明書に載せる追加の subject alternative name。カンマ区切りで、リモート拠点が接続する宛先を書きます。nats / localhost / 127.0.0.1 は、この変数を設定した場合でも常に含まれます。nats が抜けると、TLS を有効にした瞬間に同居するコアとポーラーが自分のバスに届かなくなるからです。
YAGRA_BUS_TLS_DIR unset bus-cert の一発サービスが証明書と NATS サーバー設定を書き出す先。運用者ではなく compose が設定します。未設定の場合、この一発サービスは非ゼロで終了します。

Settings ▸ Upgrade(v0.2.2 以降)の画面を出すのはコアです。しかし実際の作業を行うのは、Docker ソケットを持つ yagra-updater サイドカーです。コアはソケットを持ちません。

ここに挙げる 2 つが、コア側の設定です。サイドカー自身の設定は、後述の compose 専用の変数にあります。

変数 既定値 用途
YAGRA_UPGRADE_DIR 未設定 コアとサイドカーが要求を受け渡すディレクトリ — 共有ボリュームで、deploy 構成では /data/upgrade。未設定=サイドカー未配備で、画面は「今動いているもの」と「移行できる先」は答え、実行側は利用不可と表示します。このディレクトリの中身が実行されることは一切ありません — 要求ファイル・ハートビート・アップロードされたアーカイブだけを置きます。
YAGRA_UPGRADE_BUNDLE_MAX_BYTES 4294967296(4 GiB) アップロードされるイメージアーカイブの上限。到着したバイト単位で判定します。リリース 3 イメージをまとめて save してもおよそ 1 GB なので、これは運用上の制限ではなく、別のファイルをブラウザにドラッグしてしまったときに PostgreSQL と同じファイルシステムを埋める前に止めるための値です。

yagra-poller のバイナリが読む変数です。ポーラーは状態を持たないポーリングのワーカーで、パッシブ イベントとトラフィックフローの受信リスナーも抱えています。

変数 既定 用途
YAGRA_POLLER_ID 配布 compose では local、それ以外はホスト名 ハートビート・作業セット割当・設定 ▸ ポーラーページで使われる、安定したポーラー識別子。v0.3.2 から docker-compose.deploy.yml は中央デプロイ内のポーラーに local を渡します。コンテナのホスト名は Compose がコンテナを作り直すたびに変わり、アップグレードのたびに死んだ行を残していたためです。core にも同じ値が渡るので、両者が別のポーラーを指すことはありません。単体で何も設定せずに動かした場合は従来どおりマシンのホスト名で、それも解決できなければランダムな poller- id です。A–Z a–z 0–9 _ - にサニタイズされます。
YAGRA_POLLER_POOL default このポーラーが最初に所属するプール —— core が初めてこのポーラーを見たときに名乗る値です(分散ポーリングを参照)。v0.3.4 以降、その後の所属は core が持ちます。Settings ▸ Pollers で移動すると次のワーキングセットでポーラーに伝わり、稼働中のポーラーが購読先をその場で張り替えるため、この値を書き換えてコンテナを作り直しても移動は戻りません。未設定の場合、このポーラーが受信したパッシブイベントとフローには default ではなくプールなしのタグが付きます。
YAGRA_POLLER_QUEUE pollers レガシーのジョブ単位ファンアウト経路用の NATS キューグループ名。
YAGRA_BUS_CA_FILE unset tls:// のバス URL(リモートポーラー)で NATS サーバー証明書をピン留めするための CA/サーバー証明書ファイル。未設定または空 ⇒ ピン留めなし — 平文の単一ノード経路です。
YAGRA_BUS_AUTH_CALLOUT 未設定 ⇒ 無効 ポーラーのみ。1 または true にすると、ポーラーは バスのユーザー名として自分の YAGRA_POLLER_ID を名乗ります。Auth Callout はこの名前で権限を絞ります。無効のまま(既定であり、リモートポーラーのスイッチが設定する状態)なら、YAGRA_BUS_URL に書かれた ユーザー名 —— 共有の静的アカウント —— を名乗ります。callout を有効にした環境でのみ ON にしてください。callout が無効な状態で自分の id を名乗ると、どの静的アカウントにも一致せずバスに拒否されます。
変数 既定 用途
YAGRA_MAX_CONCURRENT_POLLS 256 同時実行プローブ総数の上限。各デバイスはさらに、同時に 1 つのインフライトプローブに制限されます。これは速さの上限ではなく「同時に何本走らせるか」で、同じ枠で SNMP のテーブル取得も走るため、小さな拠点では下げてください。
YAGRA_ADOPT_RATE_PER_SEC 200 このポーラーが他のポーラーから作業を引き継ぐとき(再起動・障害・ローリングアップグレード・スケールイン)に、ジッタ窓の幅を決めるレート(チェック数/秒)。窓は 引き継いだ数 ÷ レート で、そのチェック自身の間隔で頭打ちになります。50 件の引き継ぎなら 1 秒未満で開始し、完全なコールドスタートは従来どおり間隔全体に広がります。0 にすると以前の挙動(常に間隔全体でジッタ)に戻ります。

syslog と SNMP トラップの受信です(パッシブイベントを見て ください)。各リスナーは、バインドアドレスを設定するまで無効のままです。

2 つの YAGRA_LISTENER_* 変数は、すべての受信リスナーに効きます。次の節のトラフィックフローの リスナーも含みます。

変数 既定 用途
YAGRA_SYSLOG_BIND unset syslog リスナーの UDP バインドアドレス(例 0.0.0.0:1514)。未設定または空 ⇒ リスナー無効。バインド失敗はログに出してそのリスナーをスキップします — 致命的にはなりません。
YAGRA_TRAP_BIND unset SNMP トラップリスナーの UDP バインドアドレス(例 0.0.0.0:1162)— v1/v2c のトラップと inform。未設定または空 ⇒ リスナー無効。
YAGRA_TRAP_COMMUNITY unset コミュニティ文字列が一致しないトラップを破棄します。未設定または空 ⇒ コミュニティフィルタなし — すべてのトラップを受理します。値は決してログに出しません。
YAGRA_EVENT_RATE_PER_SOURCE 200 syslog + トラップ受信の、送信元 IP ごとの毎秒イベント数上限(送信元ごとに 1 つの共有トークンバケット。実効レートの下限は 0.1)。
YAGRA_EVENT_RATE_GLOBAL 5000 syslog + トラップ受信の、全送信元合計の毎秒イベント数上限。
YAGRA_LISTENER_WORKERS auto (1–4) エッジリスナーごとの並列読み取りソケット数。既定はホストの利用可能な並列度を 1–4 にクランプした値。SO_REUSEPORT のないプラットフォームでは常に 1 ソケットです。
YAGRA_LISTENER_RCVBUF_BYTES 4194304 リスナーソケットごとの受信バッファ(SO_RCVBUF)サイズ — 既定は 4 MiB。

NetFlow・IPFIX・sFlow の受信です。フローのデータグラムには、syslog やトラップとは別の枠があります。

変数 既定 用途
YAGRA_FLOW_BIND unset NetFlow v5/v9 と IPFIX の UDP バインドアドレス(例 0.0.0.0:2055)。未設定または空 ⇒ リスナー無効。
YAGRA_SFLOW_BIND unset sFlow v5 の UDP バインドアドレス(例 0.0.0.0:6343)。レートリミッタ・アグリゲータ・フラッシャは NetFlow リスナーと共有します。
YAGRA_FLOW_RATE_PER_SOURCE 1000 送信元ごとの毎秒データグラム数上限(フローレコード数ではありません)。
YAGRA_FLOW_RATE_GLOBAL 20000 全エクスポーター合計のフローデータグラム上限。
YAGRA_FLOW_TOP_N 500 バケット×エクスポーターごとに保持する上位フロー数(バイト数順)— フローストアの主たるカーディナリティ制御です。
YAGRA_FLOW_BUCKET_SECS 60 フロー集約バケットの幅(秒)。

リモートポーラーは、ネットワークが切れている間も結果をためます。まずメモリに、あふれたらディスクへ 書き出します。そしてリンクが戻ったときに送り直します。詳しくは 分散ポーリングを見てください。

変数 既定 用途
YAGRA_STORE_FORWARD on 結果バッファのマスタースイッチ。off・false・0・no(大文字小文字を区別しない)で無効化します。それ以外の値 — 未設定を含む — はオンを意味します。オフ ⇒ 純粋なパススルー: 結果はライブで発行され、失敗時は破棄されます。
YAGRA_STORE_FORWARD_DIR /var/lib/yagra/buffer ディスク退避先のディレクトリ。同梱の compose ファイルはここに名前付きボリュームをマウントします。ディレクトリを作成・走査できない場合、ポーラーはメモリのみのバッファリングに縮退します — クラッシュすることはありません。
YAGRA_STORE_FORWARD_MEM_MAX 20000 最も古い結果がディスクへ退避され始めるまでの、メモリ内リングのサイズ(結果件数)。
YAGRA_STORE_FORWARD_DISK_MAX_MB 512 ディスク退避の合計上限(MB)。最も古いセグメントを丸ごと破棄することで強制されます。
YAGRA_STORE_FORWARD_MAX_AGE_SECS 86400 これより古い(既定 24 時間)バッファ済み結果は再送時に破棄されます。
YAGRA_STORE_FORWARD_DISK_FREE_FLOOR_MB 1024 ファイルシステムの空き容量がこの MB 数を下回ったら退避を停止します — ホストディスクの安全床です。
YAGRA_STORE_FORWARD_SEGMENT_MB 16 退避セグメントのロールサイズ(MB)— ディスク上限の粒度です。0 やパースできない値は組み込みの 16 MiB にフォールバックします。
変数 既定 用途
YAGRA_BUS_URL — NATS バスの URL — nats://host:4222、リモート拠点なら tls://user:pass@host:4222。コアはライブモードに必須です(上のスケルトンモードを参照)。これがないポーラーは警告をログに出してアイドルします。どちらのバイナリも接続を 2 秒間隔で 30 回リトライします。
変数 既定 用途
YAGRA_DISK_WATCH_PATHS /=root path または path=alias エントリのカンマ区切りリスト — ホスト自己メトリクスが容量を報告するファイルシステムです。alias はメトリクスの mount ラベルになります(省略時はパスの最終セグメントから導出)。読めないパスはサンプルから黙って除外されます。
変数 既定 用途
YAGRA_OTEL_ENDPOINT unset OpenTelemetry の span 送出先となる OTLP/HTTP エンドポイント(例 http://jaeger:4318)。未設定または空 ⇒ span は送出されません — 構造化ログのみ。不正なエンドポイントは警告を出してログのみへフォールバックし、起動を中断することは決してありません。
OTEL_EXPORTER_OTLP_ENDPOINT unset OpenTelemetry 標準のフォールバックエンドポイント。YAGRA_OTEL_ENDPOINT が未設定のときにだけ参照されます。
OTEL_TRACES_SAMPLER parentbased_always_on トレースサンプラ。認識される値: always_on・always_off・traceidratio・parentbased_always_off・parentbased_traceidratio。それ以外は既定(すべてサンプリング)にフォールバックします。大規模環境では parentbased_traceidratio を推奨します。
OTEL_TRACES_SAMPLER_ARG 1.0 比率ベースのサンプラに使うサンプリング比率。0.0–1.0 にクランプされます。
YAGRA_LOG_DIR unset 1 時間ごとにローテートする JSON Lines ログの出力先ディレクトリ。stdout の代わりではなく追加で書きます。docker logs に手が届かない環境のための機能で、そうした環境ではパニックや OOM の痕跡が一切残りません。サポートバンドルはこのファイルを HTTP 経由で読み戻すため、復旧後に取得したバンドルにも落ちた実行のログが含まれます。未設定 ⇒ stdout のみ。書き込みはノンブロッキングで、ポーリングループを止めるくらいならログを落とします。ディレクトリが書けない場合も起動失敗ではなく、警告のうえ stdout のみに縮退します。

ポーラーではこの変数が「そのポーラーがサポートバンドルに載るかどうか」を決めるスイッチでもあります。 同梱の compose は意図的に 2 通りに設定しています。コアと同じホストにいるポーラーには /var/log/yagra/pollers — コアのログボリュームのサブディレクトリで、コアがディスクから読み戻すため、既に停止したポーラーのログにも届きます。リモート拠点のポーラーには自分専用ボリューム上の /var/log/yagra で、コアから要求されたときに一定期間分をバス経由で送ります。未設定のままだとポーラーは log-ship 能力を宣言しないので、バンドルはその拠点を待たずに「未収録」と記録します。
YAGRA_LOG_RETAIN_HOURS 48 YAGRA_LOG_DIR に保持する時間別ログファイルの本数。自動的に刈られるので、無人環境が自分のログでボリュームを埋め尽くすことはありません。
RUST_LOG info 標準の tracing EnvFilter 構文による構造化ログのフィルタ — 素のレベル(debug)またはモジュール別ディレクティブ。

次の変数は、compose ファイルを展開するときに Docker Compose(または同梱の NATS サーバー設定)が 使います。バイナリは一切読みません。設定する場所は、実行する compose ファイルの隣の .env です。

使用箇所の列は、次の略記を使います。

  • deploy = docker-compose.deploy.yml(取得のみで動くサーバー構成)
  • poller = docker-compose.poller.yml(単体で動くリモート拠点のポーラー)
  • single-node = docker-compose.yml
  • nats = docker/nats/nats-server.conf
変数 既定 使用箇所 用途
YAGRA_IMAGE_TAG latest deploy, poller 取得する、公開されている 3 つの ghcr.io/horryworks/yagra-* イメージのタグ。latest は最新の安定リリースです。本番では固定の v<version> タグを使ってください。
YAGRA_IMAGE_REPO ghcr.io/horryworks deploy, poller 3 つのイメージを取得するレジストリの名前空間。自前のミラーから配る場合にのみ変更してください。
YAGRA_UPGRADE_REPO ghcr.io/horryworks deploy yagra-updater サイドカーがリリースを探しに行く先。YAGRA_IMAGE_REPO とは意図的に別の変数です — リリースの所在は、この環境が現在のイメージを取得した場所とは限らず、private ミラーから取得している環境では、リリースを 1 つも持たないレジストリを選択画面が見に行ってしまうためです。いずれにせよホスト側で固定されるので、API 要求がレジストリを指定することはできません。
YAGRA_UPGRADE_CHECK_SECS 86400 deploy サイドカーがリリース一覧を更新する間隔 — 1 日 1 回。一覧は選択画面を埋めるだけなので、頻繁に見に行っても得るものはありません。WebUI で機構を停止すると、この通信自体が止まります。
YAGRA_UPGRADE_ALLOW_BUNDLE 0 deploy 到達できるレジストリが無い環境向けに、アップロードされた docker save アーカイブからの導入を許可します。Yagra の Admin ロールからホスト root への経路が広がります — docker load は構成が名指しする 3 イメージだけでなく、アーカイブに入っているものを何でも導入するためです。だからこそホスト側の設定で、WebUI からは有効にできません。load 以降は通常経路と同一です — 同じバックアップ、同じ構成の差し替え、同じ provenance 検証を行い、アーカイブが操作者の名乗ったタグを含むことも照合します。
YAGRA_UPGRADE_MIN_FREE_BYTES 3221225472(3 GiB) deploy アップグレードが何かを書き込む前に要求する空き容量。事前バックアップ(PostgreSQL のフルダンプと VictoriaMetrics のスナップショット)はリリースイメージの取得より前に走ります。この確認が無いと、既に満杯のホストにまず数百 MB を書き足してから pull に失敗することになります。Docker のストレージとデプロイディレクトリのうち少ないほうを見ます。どちらも測れないホストは、何も確認しなかった旨を記録した上で続行します。0 で確認を無効化します。バイト数として読めない値は既定値に戻すので、確認は有効なままです。
YAGRA_UPGRADE_KEEP_RELEASES 1 deploy 導入するリリースの1 つ前まで、いくつ残すか。対象はこのプロジェクトの 3 イメージと、デプロイディレクトリ内の yagra-backup-* ディレクトリだけで、ホスト上の他のものには触れません。後片付けは新しい版が健全だと確認できた後にのみ走り、後片付けの失敗が成功したアップグレードを失敗に変えることはありません。既定が 1 なのは、WebUI が用意する「戻る」が直前のリリースへの 1 ホップだけで、そのホップに再ダウンロードを必要とさせてはならないからです。再取得ができない閉じたネットワークでは増やしてください。0 は導入したリリースだけを残しますが、バックアップは必ず 1 つ残ります —— 最新のものは、このアップグレード自身が取ったものだからです。
YAGRA_DOCKER_GID 0 deploy yagra-updater サイドカーの実行グループ。uid を 0 以外にする場合にのみ意味を持ちます(root は gid に関わらず Docker ソケットに届きます)。
POSTGRES_PASSWORD yagra deploy PostgreSQL のパスワード — postgres コンテナとコアの YAGRA_DATABASE_URL の両方に展開されます。本番では変更してください。🚨 URL に使える文字だけにしてください。 接続 URL に埋め込まれ、そこで percent-encode はできないため、/ @ : ? # を含むパスワードは URL をそこで終わらせ、コアは起動を拒否します。openssl rand -hex 16 はこれらを生成しませんが、openssl rand -base64 は高い確率で / を生成します。
YAGRA_API_PORT 8080 deploy コアの API ポートにマップするホストポート。
YAGRA_WEB_PORT 443 deploy WebUI コンテナにマップするホストポート — HTTPS。ソースからビルドする単一ノード構成では既定が 8443 で、評価用スタックが特権ポートを必要としないようにしています。
YAGRA_SYSLOG_PORT 514 deploy ポーラーの syslog リスナーにマップするホスト UDP ポート(コンテナポート 1514)。
YAGRA_TRAP_PORT 162 deploy SNMP トラップリスナーにマップするホスト UDP ポート(コンテナポート 1162)。
YAGRA_FLOW_PORT 2055 deploy NetFlow/IPFIX リスナーにマップするホスト UDP ポート。
YAGRA_SFLOW_PORT 6343 deploy sFlow リスナーにマップするホスト UDP ポート。
YAGRA_NATS_PORT 4222 deploy NATS バスを公開するホストポート。バスを公開するのは TLS + 認証を有効にした場合だけにしてください。それを決めるのが次の YAGRA_NATS_BIND です。
YAGRA_PULL_POLICY always deploy スタック起動のたびに Compose が 3 つのイメージを再取得するかどうか。既定は従来どおりなので、既存のデプロイは何も変わりません。イメージがレジストリ由来でないホストでは missing にします — サーバ移転は 3 つのイメージを新ホストへ直接読み込むので、その後は元のマシンでしか応答しないレジストリに手を伸ばさずに自力で起動できなければなりません。
YAGRA_BACKUP_SKIP_METRICS 0 deploy 1 にすると VictoriaMetrics のスナップショットをバックアップから外し、到達できないストアと同じ扱いで「省いた」ことをマニフェストに記録します。メトリクスのチェックを外して移転したときに設定されます。アップグレード経路がこれを設定することはありません。
YAGRA_NATS_BIND 127.0.0.1 deploy バスのポートを公開するアドレス。既定ではホストのループバックに閉じるので、同居するコアとポーラー以外からは届きません。設定 ▸ ポーラー ▸ リモートポーラーを受け入れるがこれを 0.0.0.0 にしますが、その際 TLS と認証も同時に有効化します。バスにはデバイスの認証情報が平文で流れるため、この 2 つは 1 つの変更にまとめる必要があります。
YAGRA_NATS_ARGS -js deploy NATS サーバの起動引数。バスを TLS にすると -c /etc/nats/nats-server.conf が付きます。この設定ファイルは bus-cert-init の一発サービスが書き出します。
YAGRA_CORE_BUS_URL nats://nats:4222 deploy コアが接続するバスの URL。バスを TLS に切り替えると tls://core:<パスワード>@nats:4222 になります。サーバ全体を TLS にすると平文のポートが残らないため、同居するコアも同じ変更で移る必要があります。
YAGRA_POLLER_BUS_URL nats://nats:4222 deploy 同居するポーラーが接続するバスの URL。理由は YAGRA_CORE_BUS_URL と同じで、poller アカウントのパスワードを使います。リモートポーラーの URL は、設定 ▸ ポーラーが発行するアーカイブに入っているので、このファイルからは取りません。
YAGRA_CERT_DIR ./certs deploy, poller NATS サーバー証明書(サーバー側)とポーラーの CA 証明書(リモート側。YAGRA_BUS_CA_FILE と対)のためにバインドマウントされるホストディレクトリ。
YAGRA_NATS_CORE_PASSWORD — (required) deploy, nats NATS 静的認証設定の core ユーザーのパスワード。参照されているのに未設定だと NATS サーバーは起動時に終了します — fail-closed で、黙って既定値になることはありません。
YAGRA_CALLOUT_SEED_DIR ./callout deploy 旧経路。 account.seed を置くホストディレクトリ。コアに読み取り専用でマウントされます。YAGRA_NATS_CALLOUT_SEED_FILE と対になりますが、v0.3.2 以降これを必要とするものはありません。
YAGRA_SESSION_KEY_DIR ./session deploy session.key を置くホストディレクトリ。コアコンテナ(複数可)に読み取り専用でマウントされます。YAGRA_SESSION_KEY_FILE と対になります。
YAGRA_POLLER_LOG_DIR /var/log/yagra/pollers deploy 同居しているポーラーに YAGRA_LOG_DIR として渡す値です。コアが読み戻すログボリュームのサブディレクトリであり、これがそのポーラーのログをサポートバンドルに載せる経路になります。空にすると、そのポーラーは stdout のみに出力します。
YAGRA_IPASN_URL https://iptoasn.com/data/ip2asn-combined.tsv.gz deploy, single-node ipasn-updater サイドカーが取得するデータセットの URL — AS 補完のために外向き通信を必要とする唯一のコンテナです。
YAGRA_IPASN_REFRESH_SECS 604800 deploy, single-node ipasn-updater サイドカーの取得周期 — 既定は 7 日です。
COMPOSE_PROFILES 未設定(発行されたキットでは self-upgrade) poller Docker 自身の変数で、監視拠点では「その拠点がリリースを導入できるか」を決めるスイッチです。self-upgrade が入っていると Compose が yagra-poller-updater サイドカーを起動し、ポーラーが self-upgrade を名乗り、Settings ▸ Upgrade から入れ替えられるようになります。値を空にすれば、その拠点で Docker ソケットを持つコンテナは 1 つも動きません。キット(Settings ▸ Pollers ▸「Issue token & download」)が既定で書き込みます。切り替えは compose ではなくここで行ってください。アップグレードは compose を入れ替えますが .env には触れないからです。
変数 既定 用途
VITE_API_BASE empty WebUI の API クライアントと SSE クライアントが呼ぶ API のオリジン — スキーム + ホスト + ポートで、パスは決して含みません。Vite によってビルド時に焼き込まれるため、ビルド済みイメージでは変更できません。空 ⇒ 同一オリジン: 本番イメージは同梱の nginx の背後で WebUI を配信し、nginx が /api をコアへプロキシします。別ホストのコアに対して WebUI を自分でビルドする場合にだけ設定してください。