Pandora FMS エンドポイントデプロイスクリプト

概要

Linux 用エンドポイントインストーラ。常に tarball からインストールを行い(RPMは使用しません)、ダウンロードした tarball が正規の Pandora FMS EndPoint であることを検証した上で、Pandora FMS サーバへ報告を行うようにエージェントを設定します。

  • スクリプト: `../pandora_agent_deploy.sh`
  • 対象: `packages.pandorafms.com` から取得します。
  • 対応OS: RHEL/Fedora (EL7/8/9/10)、SUSE/OpenSUSE、Debian/Ubuntu。
  • 対応アーキテクチャ: `x86_64` (バイナリ形式のエージェント)。x86armv7laarch64 は自動的に PERL_SOURCES (ソースからのビルド) に切り替わります。その他のアーキテクチャでは処理が中断されます。

クイックスタート

最小構成のインストール (GO エージェント、安定版チャネル):

export PANDORA_SERVER_IP='10.0.0.1'
curl -sSL https://pfms.me/agent-deploy | bash

完全自動(プロンプトなし):

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=GO \
       PANDORA_AGENT_RELEASE=STABLE \
       PANDORA_SKIP_CONFIRMATION=1
curl -sSL https://pfms.me/agent-deploy | bash

環境変数

要求事項

変数 説明
PANDORA_SERVER_IP 必須。エージェントのレポート先となる Pandora FMS サーバの IP アドレスまたはホスト名。 これが設定されていない場合、スクリプトは中止されます

パッケージ選択

変数 デフォルト 許容値
PANDORA_AGENT_PACKAGE
(PANDORA_AGENT_PACKAGE_TYPE
経由)
インストールする
エージェントの tarball を
選択します。
パッケージの選択
を参照してください。
GO GO,
PERL,
PERL_SOURCES,
または直接の
http(s):// URL
PANDORA_AGENT_PACKAGE_TYPE
PANDORA_AGENT_PACKAGE
が設定されていない
場合にのみ使用される
フォールバックタイプ。
デフォルトタイプを
使用しつつ、
直接 URL による
上書きも許可したい
場合に便利です。
GO GO,
PERL,
PERL_SOURCES
PANDORA_AGENT_RELEASE
リリースチャネル。
STABLE…/latest
から取得し、
BETA
…/nightlies
から取得します。
リリースチャネル
を参照してください。
STABLE STABLE,
BETA (大文字・小文字を区別しない)
PANDORA_SKIP_CONFIRMATION
1に設定すると、
対話型の確認
プロンプトをスキップ
します。CI/CDや
自動化パイプラインで
使用します。
確認
を参照してください。
未設定 1 / 未設定

エージェント設定 (オプション)

これらはすべて、インストール後に sed を使用して /etc/pandora/pandora_agent.conf に挿入されます。変数が設定されていない場合、対応する設定行は変更されずにそのまま残ります。

変数 影響を受ける設定キー 効果
PANDORA_REMOTE_CONFIG remote_config サーバからのリモート設定を
有効/無効にします。
PANDORA_GROUP group エージェントグループを設定します。
PANDORA_DEBUG debug デバッグモードを有効にします
(詳細なログ出力)。
PANDORA_AGENT_NAME agent_name エージェント名を設定します
(行のコメントを解除します)。
PANDORA_AGENT_ALIAS agent_alias エージェントの別名を設定します
(行のコメントを解除します)。
PANDORA_SECONDARY_GROUPS secondary_groups セカンダリグループを設定します
(行のコメントを解除します)。
PANDORA_AGENT_SSL server_ssl Tentacle 接続 の SSL を有効にします
(行のコメントを解除します)。
TIMEZONE シンボリックリンク /etc/localtime システムのタイムゾーンを設定します
(例: Europe/Madrid)。

OS 動作

変数 デフォルト 指定可能な値 説明
RHEL_CHECK_SUBSCRIPTION 1 0 / 1 1 に設定すると、RHEL (Oracle Linux ではない) 上で
インストール前に subscription-manager
ステータスを確認します。
サブスクリプションの確認をスキップするには
0 に設定します。
PANDORA_SKIP_DEPENDENCIES 未設定 1 / 未設定 1 に設定すると、OS 依存関係の
インストール (perllibnsl など) を
すべてスキップします。
依存関係を事前に手動で
インストールする場合に使用します。

パッケージ選択

PANDORA_AGENT_PACKAGE は、タイプセレクター または 直接 URL の2種類の値を受け付けます。

タイプセレクター

ダウンロードするtarball (安定版) 説明
GO pandorafms_one_agent_linux-latest.go.tar.gz Go エージェント (バイナリ)。
デフォルト。
PERL pandorafms_one_agent_linux-latest.tar.gz Perl エージェント
(コンパイル済みバイナリ tarball)。
PERL_SOURCES pandorafms_one_agent_linux-latest.src.tar.gz ソースからの Perl エージェント
(対象マシンに Perl が必要)。
  • セレクターは大文字と小文字を区別しません('go'、'Go'、'GO' のいずれも有効です)。
  • 'PERL_SOURCES' は、エイリアスである PERLSOURCESPERL_SRCPERLSRC も受け付けます。

直接 URL

値が http:// または https:// で始まる場合、その値がそのまま使用され、デフォルトバージョンを決定するロジックはスキップされます。その際、黄色い警告が表示されます。

PANDORA_AGENT_PACKAGE is a direct URL,
default version logic (GO/PERL/PERL_SOURCES) is skipped.

インストール前には依然として tarball の検証が行われるため(Tarballの検証 を参照)、誤った URL を指定しても、不正なデータがインストールされることなく、即座に失敗します。

export PANDORA_SERVER_IP='10.0.0.1' \ 
PANDORA_AGENT_PACKAGE='https://my-ci.example.com/builds/agent-1234.tar.gz'

不正な値

PANDORA_AGENT_PACKAGE にタイプセレクターでも URL でもない値が設定されている場合、スクリプトは赤色のエラーを表示して停止します。

アーキテクチャの上書き

バイナリ形式のエージェント(GOPERL)は、x86_64 でのみ動作します。スクリプトが x86armv7l、または aarch64 を検出すると、パッケージタイプを自動的にPERL_SOURCES(ソースビルド)に上書きし、黄色の警告メッセージを表示します。

Arch: armv7l is not supported by the binary agent,
switching to PERL_SOURCES (source build).
Overriding PANDORA_AGENT_PACKAGE from GO to
PERL_SOURCES for arch armv7l.

以下の場合は、この上書き設定は適用されません。

  • ユーザが既に PERL_SOURCES を選択している場合(変更は不要です)。
  • ユーザが直接 URL を指定した場合(その指定は尊重されますが、当該アーキテクチャではソースからのビルドが必要であることを示す黄色の警告が表示されます)。

リリースチャネル

PANDORA_AGENT_RELEASE は、安定版(stable)とベータ版(nightly)のビルドのいずれかを選択します。

ベースURL
STABLE
Tarball のサフィックス
latest
https://packages.pandorafms.com/pandorafms/latest
BETA
Tarball のサフィックス
nightlies
https://packages.pandorafms.com/pandorafms/nightlies

したがって、PANDORA_AGENT_RELEASE=BETA PANDORA_AGENT_PACKAGE=GO を指定した場合、ダウンロードされる tarball は以下のようになります。

https://packages.pandorafms.com/pandorafms/nightlies/pandorafms_one_agent_linux-nightlies.go.tar.gz.

値は大文字に正規化されるため、betaBetaBETA はいずれも有効です。無効な値を指定すると、赤色でエラーが表示され、処理が中断されます。

BETA 警告

PANDORA_AGENT_RELEASE=BETA の場合、nightly 版の URL を示す黄色の警告が表示されます。
PANDORA_SKIP_CONFIRMATION の設定に応じて、スクリプトは確認を求めるか、あるいは自動的に処理を続行します(確認 を参照)。

確認

confirm() 関数は、処理を続行するためにユーザに Y または y の入力を求めます。/dev/tty から読み取りを行うため、スクリプトがパイプ経由で実行される場合(curl … | bash など)でも動作します。

PANDORA_SKIP_CONFIRMATION PANDORA_AGENT_RELEASE 動作
未設定 / 1 以外 BETA 黄色の警告を表示し、続行するかどうか「Y/y」の入力を求めます。それ以外の入力では処理を中断します。
1 BETA 黄色の警告のみを表示し、入力を求めずに続行します。
任意の値 STABLE 確認のプロンプトは表示されません(STABLE版では不要なため)。

CI/CD / 自動化での利用: スクリプトが入力待ちで停止することがないよう、常に PANDORA_SKIP_CONFIRMATION=1 を設定してください。

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_RELEASE=BETA \
       PANDORA_SKIP_CONFIRMATION=1

Tarball 検証

スクリプトはダウンロード後、インストール前に tarball を検証します。2つの層があります:

  1. 構造(Structural)tar tzf を使用して内容を一覧表示し、以下のエントリが存在することを確認します。
    • unix/pandora_agent_installer
    • unix/pandora_agent
    • unix/tentacle_client
  2. フィンガープリント(Fingerprint)unix/pandora_agent_installer を標準出力(STDOUT)に展開し、文字列 Pandora FMS Agent Installer for Unix が含まれているかを確認します。

いずれかの層で処理に失敗した場合、スクリプトはダウンロードした URL を含むエラーを赤色で表示し、一時ディレクトリをクリーンアップして終了します。これにより、Pandora FMS エージェントではない tarball(例:コンソールやサーバのパッケージを指す誤った URL など)がインストールされるのを防ぎます。

インストールフロー

  1. PANDORA_SERVER_IP が設定されているか確認します。
  2. grepsedcurl が利用可能か確認します。
  3. /etc/os-release (ID_LIKE / ID) から OS を検出します。RHEL/Fedora/SUSE/Debian 以外の場合は処理を中断します。
  4. root 権限を確認します。
  5. packages.pandorafms.com への接続性を確認します。
  6. アーキテクチャを確認します。x86_64 の場合は選択されたパッケージで処理を続行します。x86armv7laarch64 の場合は自動的に PERL_SOURCES に切り替わります(これらのアーキテクチャではバイナリエージェントは動作しないため)。その他のアーキテクチャでは処理を中断します。
  7. PANDORA_AGENT_PACKAGE(タイプ選択または直接 URL)および PANDORA_AGENT_RELEASE(stable/beta)を決定します。BETA の場合は確認を求められることがあります。
  8. 一時作業ディレクトリ $HOME/pandora_deploy_tmp を作成します。
  9. 依存関係をインストールします(PANDORA_SKIP_DEPENDENCIES=1 の場合はスキップ)。依存関係はエージェントタイプによって異なります:
    • GO: perl tar (+ Debian では procps)。
    • PERL: perl perl-Sys-Syslog unzip tar (+ RHEL: libnsl/libxcrypt, SUSE: なし, Debian: procps)。
    • PERL_SOURCES: 完全なセット(perl-Scalar-List-Utilsperl-IO-Socket-SSLperl-Digest-MD5perl-threadsperl-Thread-Semaphorelibnsl (RHEL);perl-YAML-Tinyperl-IO-Socket-SSLlibnsl3 (SUSE);libsys-syslog-perllibyaml-tiny-perllibio-socket-ssl-perllibscalar-list-utils-perl (Debian) を含む)。
  10. curl を使用して tarball をダウンロードします。
  11. tarball を検証します(構造およびフィンガープリント)。 - install_tarball を使用してインストールします: tar xvzf + cd unix && ./pandora_agent_installer –install
  12. PANDORA_* 変数を使用して /etc/pandora/pandora_agent.conf を設定します。
  13. Docker/systemd への対応: systemctl status が失敗した場合は、pandora_agent_daemon/etc/init.d/ にコピーし、そこで再起動します。
  14. pandora_agent_daemon を再起動し、プロセスが実行中であることを確認します(1秒間隔で最大5回再試行)。
  15. $HOME/pandora_deploy_tmp を削除(クリーンアップ)します。
  16. 緑色で成功メッセージを表示します。

ログ

すべてのコマンド出力は /tmp/pandora-agent-deploy-YYYY-MM-DD.log に書き込まれます。失敗した場合は、スクリプトがログのパスを表示します。

GO エージェント、安定版、エージェント名とグループ指定

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=GO \
       PANDORA_AGENT_NAME='web-01' \
       PANDORA_GROUP='Web'
curl -sSL https://pfms.me/agent-deploy | bash

ソースでの Perl エージェント、beta 版、自動

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=PERL_SOURCES \
       PANDORA_AGENT_RELEASE=BETA \
       PANDORA_SKIP_CONFIRMATION=1
curl -sSL https://pfms.me/agent-deploy | bash

直接 URL (カスタムビルド)、自動

export PANDORA_SERVER_IP='10.0.0.1' \
 PANDORA_AGENT_PACKAGE=\
'https://ci.internal/builds/pandorafms_one_agent_linux-999.go.tar.gz' \
 PANDORA_SKIP_CONFIRMATION=1 \
curl -sSL https://pfms.me/agent-deploy | bash

RHEL でサブスクリプションチェックなし

export PANDORA_SERVER_IP='10.0.0.1' \
       RHEL_CHECK_SUBSCRIPTION=0
curl -sSL https://pfms.me/agent-deploy | bash

SUSE / OpenSUSE (GO エージェント)

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_AGENT_PACKAGE=GO
curl -sSL https://pfms.me/agent-deploy | bash

依存ファイルのインストールなし (事前にインストールされたシステム)

export PANDORA_SERVER_IP='10.0.0.1' \
       PANDORA_SKIP_DEPENDENCIES=1
curl -sSL https://pfms.me/agent-deploy | bash

対応 OS マトリックス

OS バージョン パッケージマネージャー 備考
RHEL / CentOS / Rocky / Alma 7 yum
RHEL / CentOS / Rocky / Alma 8 dnf PERL用に libnsl が必要
RHEL / Rocky / Alma 9 dnf PERL用に libnsl libxcrypt-compat が必要
RHEL / Rocky / Alma 10 dnf PERL用に libnsl libxcrypt-compat が必要
SUSE / OpenSUSE Tumbleweed / Leap zypper 追加の perl サブパッケージは不要 (すべて perl に含まれる)。PERL_SOURCES 用に libnsl3 が必要。
Debian / Ubuntu 22.04+ apt すべてのタイプで procps が必要。

テスト結果

以下の結果は、BETA チャネル(PANDORA_AGENT_RELEASE=BETA)を使用したコンテナ化テストによるものです。

対応 OS(完全サポート)

OS GO PERL PERL_SOURCES
Rocky Linux 8 🆗 🆗 🆗
Rocky Linux 9 🆗 🆗 🆗
Rocky Linux 10 🆗 🆗 🆗
Ubuntu 22.04 🆗 🆗 🆗
Ubuntu 24.04 🆗 🆗 🆗
Ubuntu 26.04 🆗 🆗 🆗
openSUSE
Tumbleweed
🆗 インストール失敗、
起動せず —
SUSEに libnsl.so.1
存在しないため
(バイナリがこれを必要とする)
🆗

追加テスト OS

OS GO PERL PERL_SOURCES
Debian 12 🆗 🆗 🆗
Debian 13 🆗 🆗 🆗
Fedora 43 🆗 失敗: libnsl + libxcrypt-compat が必要
(デフォルトでは未インストール)
🆗
AlmaLinux 9 🆗 🆗 🆗
AlmaLinux 10 🆗 🆗 🆗
CentOS Stream 9 🆗 🆗 🆗
CentOS Stream 10 🆗 🆗 🆗

パイプラインに関するメモ

  • BETA チャネルを非 TTY 環境(コンテナや CI/CD など)で使用する場合、PANDORA_SKIP_CONFIRMATION=1 の設定が必要です。
  • PANDORA_SKIP_DEPENDENCIES=1 を指定すると、OS パッケージのインストールがスキップされます。このオプションは、必要な依存関係が既に導入されている場合にのみ使用してください(スクリプトおよび Go エージェントの pandora_agent_installer は、いずれも perltar を必要とします)。
  • Oracle Linux はサポート対象外です。これは、同 OS のベースリポジトリに perl が含まれていないためです。ol8_codeready_builder や EPEL を有効にすることで解決できる可能性がありますが、それらの設定は本スクリプトの対象範囲外となります。
  • Alpine Linuxには bash が含まれておらず、代わりに busybox ash が使用されていますが、これは本スクリプトで使用されている bash 構文をサポートしていません。

Pandora FMS ドキュメント一覧に戻る