ここでは、Windows、Linux、Unixといった複数のシステムに同時に Pandora FMS のエージェントをインストールする処理を自動で行う手法について説明します。 ここで利用するツールは Puppet です。

Puppet は、サーバの自動処理を行う新たな世代のオープンソースのソリューションです。

システムの設定を表現するために使われる宣言型言語、配布のためのクライアントサーバモデル、そして、設定を実行するためのライブラリから成っています。

その様々な機能により、マシン上のさまざまなサービスの実行、設定ファイルの集中制御、インストールパッケージの管理、可用性管理とマウントポイントの存在、ユーザーとグループの管理、マシンデプロイを制御することができます。

pandora_puppet1

この記事では、エージェントをデプロイするネットで利用する Puppet (Puppet のモジュール) 内で設定される言語を示します。Puppet のサーバとクライアントは別のコンピュータにすでにインストールされているものとします。

上記の通り、Puppet はマニフェストを通してデプロイを実行します。 このマニフェストは、Puppet 自体のコードで書かれ、Puppet クライアントに対して処理を完了するために渡されます。ここでの処理は、エージェントのインストール、設定、および起動です。

Puppet のメインフォルダは、デフォルトでは /etc/puppet です。 このフォルダは、Puppet のインストールパスに依存します。

/etc/puppet 以下には、クライアントに送信される静的なファイルがあります。クライアントにデプロイするために必要なファイルを説明します。エージェントのデプロイに必要なファイルを設定します。

  • ソフトウエアエージェント linux または windows 用 (tar.gz フォーマット)
  • エージェント設定ファイル 設定を含んだファイルです。 最も重要な設定としては、サーバの IP アドレスおよびモジュールの定義があります。Windows と Linux の両方のエージェントをデプロイする場合は、モジュールの定義が異なるためそれぞれのOS用に別の設定ファイルが必要です。

/etc/puppet/manifests フォルダには、リソースを作成します。エージェントのデプロイで Puppet が実行するステップを定義します。

最初に、/etc/puppet/manifests 内に init.pp ファイルを作成します。このファイルは、モジュールのリソースを含みます。

Unix エージェントのデプロイでは、init.pp ファイルの内容は次のようになります。

class install_agent_unix {

File [‘pandorafms_agent_unix-5.1.tar.gz file’] → Exec [‘Extract tar’] → Exec [ ‘Instalar Pandora Agent’] → File [‘pandora_agent.conf file’] → Service [‘pandora_agent_daemon service’]

file { ‘pandorafms_agent_unix-5.1.tar.gz file’:

owner => root,
group => root,
mode => 777,
source => “puppet:///files/pandorafms_agent_unix-5.1.tar.gz”,
path => “/tmp/pandorafms_agent_unix-5.1.tar.gz”

}

exec { ‘Extract tar’:

path => “/bin:/usr/bin”,
Unless => “find /tmp/pandorafms_agent_unix-5.1”,
Command => “tar -xzf /tmp/pandorafms_agent_unix-5.1.tar.gz”,

}

exec { ‘Instalar Pandora Agent’:

Command => “/tmp/pandorafms_agent_unix-5.1/pandora_agent_installer –install,

}

file { ‘pandora_agent.conf file’:

owner => root,
group => root,
mode => 644,
source => “puppet:///files/pandora_agent.conf”,
path => “/etc/pandora/pandora_agent.conf”,

}

service { ‘pandora_agent_daemon service’:

ensure => running,
name => “pandora_agent_daemon”,
enable => true,

}

}

最後にやることは、このファイルを送信、unzip し、インストールを実行、そして設定ファイルを送り Pandora エージェントを起動することです。

Windows エージェントのデプロイでは、ファイルは次のようになります。

class install_agent_wdos {

File [‘PandoraFMS_windows_agent_v5.1.setup.exe file’] → Exec [ ‘Instalar Pandora Agent’] → File [‘pandora_agent.conf file’] → Service [‘pandora_agent service’]file { ‘pandorafms_agent_unix-5.1.setup.exe file’:

owner => root,
group => root,
mode => 777,
source => “puppet:///modules/pandorafms/pandorafms_agent_unix-5.1.setup.exe”,
path => “C:\PandoraFMS_windows_agent_v5.1.setup.exe”

}

exec { ‘Instalar Pandora Agent’:

Command => “C:\PandoraFMS_windows_agent_v5.1.setup.exe /mode Silent /prefix c:\agente_pandora,

}

file { ‘pandora_agent.conf file’:

owner => root,
group => root,
mode => 644,
source => “puppet:///modules/pandorafms/pandora_agent.conf”,
path => “c:\agente_pandora\pandora_agent.conf”,

}

service { ‘pandora_agent_daemon service’:

ensure => running,
name => “pandora_agent_daemon”,
enable => true,

}

}

Windows の Puppet エージェントは、公式には Windows Server バージョン 2003、2008 がサポート対象であることに注意してください。他のバージョンはサポートされていませんが、動作すると思います。

マニフェストを設定したら、あとはエージェントをインストールしたいすべてのノードまたはシステムに対して、このマニフェストを適用することです。

/etc/puppet/manifests/site.pp

全ノードに適用する設定例は次の通りです。

node unix_agent {

include install_agent_unix

}

node windows_agent {

include install_agent_wdows

}

Puppet ノードにクラスを関連付けるには、さまざまな方法があります。Puppet の管理者は、実際のインストール状況と互換性を持たせて違う方法をとることもできます。 あなたの設定に合わせて、このマニフェストは利用できます。

Pandora FMS による Puppet エージェント監視

Puppet エージェントの監視には、pandorafms.com のモジュールライブラリにプラグインがあります。 http://pandorafms.com/index.php?sec=Library&sec2=repository&lng=ja&action=view_PUI&id_PUI=600 これは、Puppet エージェントから以下の情報を収集します。

  • Last run

  • Time since last run

  • Is out of sync? → If it’s out of synchronization

  • Resources changed/failed/failed to restart/restarted/scheduled/skipped

  • Events failed/succeeded

  • Total changes

プラグインは、Ruby で書かれています。そのため、システムに Ruby がインストールされている必要があります。

プラグインの実行には、last_run_summary.yaml ファイルが必要です。ここには、 Puppet エージェントが最新の実行時間を記録します。ファイル構造は次のようになっています。

time:

group: 0.001692
last_run: 1317804488
class: 0.003929
yumrepo: 0.020103
service: 9.017434
schedule: 0.004151
cron: 0.010546
config_retrieval: 15.0572321414948
total: 34.9742621414947
package: 0.588751
filebucket: 0.000687
file: 8.895422
exec: 1.361625
user: 0.01269

resources:

total: 194
changed: 0
failed: 0
failed_to_restart: 0
out_of_sync: 0
scheduled: 0
skipped: 0

events:

total: 0

changes:

total: 0

デフォルトでは、このファイルは /var/lib/puppet/state/last_run_summary.yaml にあります。 そのため、プラグインの実行は次のようにします。

module_plugin <ruby_path> /etc/pandora/plugins/pandora_puppet.rb –summary-file /var/lib/puppet/state/last_run_summary.yaml

Windows では、 last_run_summary.yaml は、C:\ProgramData\PuppetLabs\puppet\var\state にあります。

pandora_puppet2

Pandora FMS での Puppet サーバ監視

Puppet サーバを監視するには、Puppet サーバに Pandora エージェントがインストールされている必要があります。

以下に、Pandora のエージェント設定ファイルでのモジュールの設定方法を示します。

1.- Puppetmaster と puppetdb の状態

puppet サーバが動作しているかどうかを示す Boolean タイプのモジュールです。動作していれば 1、そうでなければ 0 を返します。

module_begin
module_name Status puppetmaster
module_type generic_proc
module_exec /etc/init.d/puppetmaster status | grep running | wc -l
module_description Status puppermaster
module_end

module_begin
module_name Status puppetdb
module_type generic_proc
module_exec /etc/init.d/puppetdb status | grep running | wc -l
module_description Status puppetdb
module_end

2.- Puppet のマニフェスト設定状態

Puppet サーバには、マニフェストの状態をチェックするためのツールがあります。 マニフェストのあるディレクトリを選択すると、それをチェックすることができます。

これを監視するには二通りの方法があります。一つ目は、正常かどうかの表示、もう一つはエラーがあった場合のその情報の収集です。

module_begin
module_name Status manifests
module_type generic_proc
module_exec puppet parser validate /etc/puppet/manifests/ | wc -l
module_critical_inverse 1
module_description Status manifest
module_end

module_begin
module_name Manifests errors
module_type async_string
module_exec puppet parser validate /etc/puppet/manifests/
module_description Status manifest
module_end

3.- 全 Puppet エージェントを認識しているかの監視

次に示すモジュールでは、Puppet サーバがすべてのエージェントを認識しているか、またエージェントが動作しているかどうかをチェックします。

module_begin
module_name Puppet agents certs status
module_type generic_proc
module_exec puppet cert –list | wc -l
module_critical_inverse 1
module_description Status Puppet agents certs
module_end

4.- Puppetmaster と puppetdb の CPU の RAM 使用量

puppet サービスの CPU の使用率と RAM 使用量を表示します。

module_begin
module_name Cpu Use % Puppetmaster
module_type generic_data
module_exec ps aux | grep puppetmaster | grep -v grep | gawk ‘{print $3}’
module_description Cpu Use % Puppetmaster
module_end

module_begin
module_name RAM Use % Puppetmaster
module_type generic_data
module_exec ps aux | grep puppetmaster | grep -v grep | gawk ‘{print $4}’
module_description RAM Use % Puppetmaster
module_end

module_begin
module_name Cpu Use Tot % puppetdb
module_type generic_data
module_exec ps aux | grep puppetdb | grep -v grep | awk ‘{sum += $3} END {print sum}’
module_description Cpu Use % Puppetdb
module_end

module_begin
module_name RAM Use Total % Puppetdb
module_type generic_data
module_exec ps aux | grep puppetdb | grep -v grep | awk ‘{sum += $4} END {print sum}’
module_description RAM Use Total % Puppetdb
module_end

pandora_puppet3

Shares