Pandora: Documentation ja: Server Management

From Pandora FMS Wiki
Jump to: navigation, search

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

Pandora FMS サーバ管理

データベース管理

Pandora FMS は、外部メンテナンスを必要としません。しかし、古いデータ削除や圧縮はとても重要です。Pandora FMS の上記処理を行うための重要なツールがあります。このツールは、夜間に一度だけ必ず実行する必要があります。複数の物理サーバがある場合は、そのうちの 1台で実行します。このツールは、Pandora FMS サーバが動作しているシステムで実行しなければなりません。もし、2つのサーバがあり、サーバとコンソールが別々のサーバで動作している場合は、Pandora FMS サーバが動作している方で動かします。このツールは以下の場所にあります。

/usr/share/pandora_server/util/pandora_db.pl

pandora_db.pl は、Pandora FMS サーバパッケージに含まれています。

このツールは、データベースの全てのメンテナンスを自動的に実行し、Pandora FMS の上記の機能を実現するのに重要です。そのため、正しく動作しているかどうかに注意してください。このツールの機能は次の通りです。

  • 古いデータの削除をします。
  • データの加工による圧縮をします。これにより、ディスクの使用量を押さえてグラフを描画できる状態にします。(これが Pandora FMS が古い情報を表示できる理由です)
  • 存在しないモジュールのデータベースでの整合性や、初期化されていないために利用されていないモジュール (これらのモジュールは、未初期化モジュールとして表示されます) をチェックします。
  • エージェントの一日の接続情報を削除します。Pandora FMS は、24時間を越えるエージェント接続情報は必要としません。もし、それが増えると、データベースのアクセス速度が低下します。
  • エンタープライズ版では、全ての古いデータをスタンバイデータベースに移動します。

この処理は、毎晩実行される必要があり、cron 処理として設定して実行することがとても重要です。インストール時に設定されますが、正しく設定できているかは確認してください。この章では、設定が正しくできているかどうかを確認できるように、手動で設定する方法を説明します。

標準的な Linux システムにこのツールをインストールするには、次の手順の実行をお勧めします。

  • /etc/cron.daily/pandora_db というファイルを新たに作成し、次の内容を記載します。
#!/bin/bash
/usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf
  • ファイルのパーミッションを次の通り設定します。
 chmod 750 /etc/cron.daily/pandora_db
  • オーナーを変更します。
 chmod root:root /etc/cron.daily/pandora_db
  • cron の設定を再読み込みします。
/etc/init.d/cron reload

これで有効になり、毎晩 Pandora FMS データベースのメンテナンスツールが実行されます。これにより、データベースは常に最適な状態に保たれます。

最後に、すべてが正しく設定できているかを確認するために、ツールのインストール後は、手動で以下のファイルを一度実行します。

/etc/cron.daily/pandora_db

実行すると、次のようなメッセージが表示されます。(Pandora FMS のログレベル設定により表示される情報は異なります)

Pandora FMS DB Tool 3.0-dev PS090930 Copyright (c) 2004-2008 Artica ST
This program is Free Software, licensed under the terms of GPL License v2
You can download latest versions and documentation at http://www.pandorafms.org
Pandora DB now initialized and running (PURGE=60 days, COMPACT=15 days, STEP=1) ... 

Starting at 2009/10/10 02:02:18
[PURGE] Deleting old event data (More than 60 days)... 
[PURGE] Deleting old data... 
[PURGE] Delete old data (string) ... 
[PURGE] Delete pending deleted modules (data table)...
[PURGE] Delete pending deleted modules (data string table)...
[PURGE] Delete pending deleted modules (data inc  table)...
[PURGE] Delete pending deleted modules (status, module table)...
[PURGE] Delete old session data 
[PURGE] Delete old data from SNMP Traps 
[PURGE] Deleting old access data (More than 24hr) 
[CHECKDB] Deleting non-init data... 
[CHECKDB] Checking database consistency (Missing status)... 
[CHECKDB] Checking database consistency (Missing module)... 
[CHECKDB] Deleting non-existing module 1189 in state table 
[CHECKDB] Deleting non-existing module 1190 in state table 
[COMPACT] Compacting data until 2009092502:02:18
Ending at 2009/10/10 02:02:31

メンテナンスツールの手動実行

スクリプトを作成したら、メンテナンスツールを手動で実行することができます。使い方はとても簡単です。シェルコンソールから次のように実行します。

注意: 稼働中のシステムでは時間がかかる場合があります。プロセスはバックグラウンドでの実行をお勧めします。

/usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf

手動でメンテナンスツールをバックグラウンド実行するには、次のようにします。

nohup /usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server.conf

バックグラウンドでプロセスの実行には少々時間がかかります。プロセスの実行中でも、シェルこのソールを閉じることができます。

注意: インストールの状況によっては、ツールのディレクトリが変わります。ほとんどの場合は以下の通りです。

/usr/share/pandora_server/util/

Pandora FMS の以前のバージョンでは、以下にあります。

/usr/share/pandora/util/

現在のバージョンのツールを利用し、以前のバージョンのものは利用しないことが重要です。プログラムを引数無しで実行すると、ツールのバージョンを表示します。

データベースバックアップ

mysqldump コマンドで、データベースをダンプすることができます。データをリストアするには、オリジナルと同じ名前の空のデータベース (通常は pandora) が必要です。

バックアップの実行

mysqldump -u root -p pandora > /backup/pandoradb_backup.sql

バックアップからのリストア

mysql -u root -p
create database pandora;
use pandora;
source /backup/pandoradb_backup.sql

おそらく、ユーザの権限も以下のように設定する必要があります。

grant all privileges on pandora.* to [email protected] identified by 'mypassword';

システム全体のバックアップを行いたい場合は、エージェントとサーバの設定情報を保存するために、/etc/pandora ディレクトリ全体のバックアップも忘れないようにしてください。

上記は、データベースのみのバックアップとリストアであることに注意してください。

Pandora FMS のバックアップとリカバリ

Pandora FMS サーバの配布パッケージには、Pandora FMS 全体をバックアップ、リストアするのに便利なスクリプトがあります。このスクリプトは、サーバとコンソールがインストールされているサーバのコピーおよびリストアを行います。もし、それとは異なる環境の場合は、パラメータの調整か修正をして利用してください。

この処理を実行するには、スクリプトを root 権限で実行する必要があります。

スクリプトは以下にあります。

/usr/share/pandora_server/util/pandora_backup.sh 

引数無しで実行すると、ヘルプを表示します。

Pandora FMS Command line backup tool. http://www.pandorafms.org
(c) 2009 Sancho Lerena <[email protected]>, Artica Soluciones Tecnologicas

Syntax:
		-c Path to Pandora FMS console, p.e: /srv/www/htdocs/pandora_console
		-d Destination path for backup file. p.e: /tmp
		-s Source filename for backup restore. p.e: /tmp/pandorafms
		-f Restore also files
		-q Quiet. No output message (used for scripts/cron)
 		-b No database backup/restore


Please BE SURE TO USE RESTORE (-s) option. This will OVERWRITE ALL your
PandoraFMS install, including files, configuration and data. Please backup first!

このスクリプトは、次のコンポーネントのコピーとリストアをするように設計されています。

  • サーバ設定ファイル
  • 処理待ちのファイルおよび、エージェントのリモート設定ファイル
  • DB 全体
  • ウェブコンソール全体

コピー元とコピー先オプション

このスクリプトは、ウェブコンソールの設定ファイルに設定されている DB のアクセス情報を利用します。そのため、ウェブコンソールの設定ファイルのパスを -c オプションで指定する必要があります。 このパラメータは、ウェブコンソールのバックアップを取得するためにも利用されます。

パックアップは、-d オプションで指定します。バックアップファイルが pandorafms_backup_xxxxxxx.tar.gz というファイル名で圧縮されて置かれます。

オリジナルのリストア先は、このツールで生成されたバックアップファイルに保存された、名前とパスになります。

ファイルのおよびデータのリストア

-f オプションを指定することにより、ファイルおよびデータベースのデータをリストアすることができます。(同じファイルは上書きされます) ファイルが上書きされるため、問題が発生する可能性があります。-f オプションの利用は、Pandora の全ファイル (コンソールおよびサーバ) のバックアップからのリストアの時にのみ利用してください。

ファイルのリストア

上記のオプションと同じですが、ファイルのみをリストアします。データはリストアしません。この場合は、-b オプションを利用します。

データのリストア

デフォルトのオプションです。これを行うには、-b および -f オプション共に指定しないでください。

利用例

バックアップの作成

root で以下を実行します。

/usr/share/pandora_server/util/pandora_backup.sh -c /var/www/pandora3 -d /tmp/ 

次のようなメッセージが表示されます。

Backup completed and placed in /tmp//pandorafms_backup_2009-10-10-01-35-31.tar.gz

これは、バックアップが /tmp//pandorafms_backup_2009-10-10-01-35-31.tar.gz にできたことを意味します。

バックアップからのリストア

自動でバックアップからリストアするために、コマンドラインからデータベースへアクセスできる権限が設定されていると仮定します。

root 権限で次のように実行します。

/usr/share/pandora_server/util/pandora_backup.sh -c /var/www/pandora3 -d /tmp/ 

次のような表示がされます。

Detected Pandora FMS backup at /tmp/pandorafms_backup_2009-10-10-01-35-31.tar.gz, please wait...
Dropping current database
Restoring backup database
Restoring files and configuration
Done. Backup in /tmp/pandorafms_backup_2009-10-10-01-35-31.tar.gz restored

障害時におけるバックアップからのリストア

Pandora FMS コンソールが障害により異常状態になった場合、このツールでバックアップを取得していれば、コンソールをリストアすることができます。そのためには、次のようにバックアップファイルを手動で展開します。

cd /tmp
tar xvzf pandorafms_backup_2009-10-10-0

これより、ウェブコンソールのファイルが /tmp ディレクトリに展開されます。上記の例のバックアップの場合、次のようなディレクトリが作成されます。

/tmp/var/www/pandora3/

このディレクトリ内の全てのファイルをウェブコンソールのディレクトリ (利用しているディストリビューションにより異なります) にコピーしてください。

cp -R var/www/pandora3 /var/www

以上でバックアップからリストアされ使えるようになります。

Pandora FMS サーバの手動起動・停止

Pandora FMS サーバの手動での起動・停止は、コマンドラインから次のように実行します。

デーモンの停止:

/etc/init.d/pandora_server stop

デーモンの起動:

/etc/init.d/pandora_server start

デーモンの再起動:

/etc/init.d/pandora_server restart

Pandora FMS の Watchdog 実装

リポジトリには、"watchdog" として使える小さなスクリプトがあります。このスクリプトは Pandora をモニタリングします。Pandora がダウンした場合、それを起動させ、通知することができます。

/usr/bin/pandora_watchdog

#!/bin/bash
# Copyright (c) 2005-2012 Artica ST
# Author: Sancho Lerena <[email protected]> 2009
# Licence: GPL2
#
# daemon_watchdog
#
# Generic watchdog to detect if a daemon is running. If cannot restart, execute
# a custom-user defined command to notify daemon is down and continues in
# standby (without notifying / checking) until daemon is alive again.

# Default configuration is for Pandora FMS Server daemon

# =====================================================================
# Configuration begins here. Please use "" if data contain blank spaces

export DAEMON_WATCHDOG=pandora_watchdog.sh
# DAEMON_WATCHDOG: Name of this script. Used to check if its running already

export DAEMON_CHECK="/usr/bin/pandora_server /etc/pandora/pandora_server.conf"
# DAEMON_CHECK: Daemon monitored, please use full path and parameters like
#               are shown doing a ps aux of ps -Alf

export DAEMON_RESTART="/etc/init.d/pandora_server restart"
# DAEMON_RESTART: Command to try to restart the daemon

export DAEMON_DEADWAIT=90
# DAEMON_DEADWAIT: Time this script checks after detect that
#                  daemon is down before to consider is really down. 

export DAEMON_ALERT="/usr/bin/pandora_alert"
# DAEMON_ALERT: Command/Script executed if after detecting daemon is down,
#               and waiting DAEMON_DEADWAIT, and daemon continues down.

export DAEMON_LOOP=7
# DAEMON_LOOP: Interval within daemon_wathdog checks if daemon is alive.
#              DO NOT use values under 3-5 seconds or could be CPU consuming.
#              NEVER NEVER NEVER use 0 value or gets 100% CPU!.

# Configuration stop here
# =====================================================================

# Check if another instance of this script

RUNNING_CHECK=`ps aux | grep "$DAEMON_WATCHDOG" | grep -v grep |wc -l`
if [ $RUNNING_CHECK -gt 2 ]
then
        echo "Aborting, seems that there are more '$DAEMON_WATCHDOG' running in this system"
        logger $DAEMON_WATCHDOG aborted execution because another watchdog seems to be running
        exit -1
fi


# This value always must be 0 at start. Do not alter
export DAEMON_STANDBY=0

# This function replace pidof, not working in the same way in different linux distros
function pidof_daemon () (
        # This sets COLUMNS to XXX chars, because if command is run
        # in a "strech" term, ps aux don't report more than COLUMNS
        # characters and this will not work.
        COLUMNS=300
        DAEMON_PID=`ps aux | grep "$DAEMON_CHECK" | grep -v grep | tail -1 | awk '{ print $2 }'`
        echo $DAEMON_PID
)

# Main script

if [ ! -f `echo $DAEMON_CHECK | awk '{ print $1 }'` ]
then
        echo "Daemon you want to check is not present in the system. Aborting watchdog"
        exit
fi

while [ 1 ]
do

        DAEMON_PID=`pidof_daemon`
        if [ -z "$DAEMON_PID" ]
        then

echo "Checkpoint #1 $DAEMON_PID "

                if [ $DAEMON_STANDBY == 0 ]
                then

                        # Daemon down, first detection
                        # Restart it !

                        logger $DAEMON_WATCHDOG restarting $DAEMON_CHECK
                        $DAEMON_RESTART 2> /dev/null > /dev/null

                        # Just WAIT another DAEMON_DEADWAIT before consider it DEAD

echo "Going to DAEMON_DEADEWAIT"

                        sleep $DAEMON_DEADWAIT
                        DAEMON_PID=`pidof_daemon`

                        if [ -z "$DAEMON_PID" ]
                        then

                                # Is dead and can't be restarted properly. Execute alert

echo "I cannot startup again the process"

                                logger $DAEMON_WATCHDOG $DAEMON_CHECK is dead, alerting !
                                $DAEMON_ALERT  2> /dev/null > /dev/null

                                # Watchdog process puts in STANDBY mode until process get alive again
                                logger $DAEMON_WATCHDOG "Entering in Stabdby mode"

                                DAEMON_STANDBY=1
                        fi
                fi
        else

echo "Checkpoint #1B $DAEMON_PID "

                DAEMON_STANDBY=0
        fi

        sleep $DAEMON_LOOP
done

/usr/bin/pandora_alert

このスクリプトは、watchdog プロセスがモニタリングしているプロセス (pandora) を起動できなかった場合に実行されます。我々の場合、SMS でアラートを発信し Tentacle を停止するようにしています。

パーミッションは、chmod 750 /usr/bin/pandora_alert のように設定します。

#!/bin/bash
sendsms +34458474843 "Pandora FMS Server stopped and can't be started"
/etc/init.d/tentacle_serverd stop

Watchdog 起動

nohup /usr/bin/pandora_watchdog &

注意点

watchdog が動作している場合は、それが動いているということを認識しておく必要があります。例えば、Pandora をメンテナンスのために停止したい場合でも、停止すると watchdog が自動的に再起動してしまいます。そのため、このような時は watchdog を先に停止しておく必要があります。

ヒストリデータベース

ヒストリデータベースは、メインの Pandora FMS データベースの応答を良くするために、そこから古いモジュールデータを移動させ保存しておくためのものです。データは、レポートやモジュールグラフの参照時に Pandora FMS コンソールでシームレスに利用できます。

ヒストリデータベースの設定

ヒストリデータベースを設定するには、以下の手順を実行します。

  • 新たなヒストリデータベースを作成します。
  • 新たなデータベースに必要なテーブルを作成します。Pandora FMS コンソールと共に提供されている pandoradb.sql スクリプトが利用できます。
cat pandoradb.sql | mysql -u user -p -D history_db
  • Pandora FMS コンソールにて、設定(setup) -> ヒストリデータベース(History database) を選択し、データベースのホスト名、ポート番号、データベース名、ユーザ名、パスワードを入力します。
History db conf.png

Days に指定した日より古いデータを、Step に指定した行ブロックごとにヒストリデータベースに移動します。高負荷になることを防ぐために、一つのブロックを処理したあとは、次の処理までに Delay に指定した時間待ちます。

Info.png

これは、Enterprise 版の機能です。

 


ヒストリデータベースの削除と圧縮設定

ヒストリデータベースは、"過去の全データ" を保存することを想定しています。しかし、古いデータを削除したり圧縮したい場合は、pandora_db スクリプトを通常の DB に対する動作に見せかけて実行する必要があります。そのためには、ヒストリデータベースに何らかのデータが入っている必要があります。

最初に、pandora_db ツールによって利用できるように、tconfig テーブルを適切な値を入れた状態で用意する必要があります。pandora_db の実行に必要な最小限の設定を行うために、ヒストリデータベースに対して以下の SQL を実行します。まずは、mysql の CLI を利用して、データベースに接続する必要があります。

以下が例です。値は必要に応じて書き換えてください。(ただし、history_db_enabled は 0 にしてください)

INSERT INTO `tconfig` VALUES (1,'days_purge','180');
INSERT INTO `tconfig` VALUES (2,'history_db_enabled','0');
INSERT INTO `tconfig` VALUES (3,'days_compact','120');
INSERT INTO `tconfig` VALUES (4,'step_compact','1');

これは、ヒストリデータベースに(現在からさかのぼること) 6ヶ月間データを保存し、4ヶ月前のデータを圧縮することを意味します。メインのデータベースに 1ヶ月間のデータがあるとしても、トータルで 6ヶ月間のデータとなります。なぜなら、直近 1ヶ月のデータはメインデータベースから読まれ、それ以外はヒストリデータベースから読まれるためです。これらには任意の値を設定できます。ヒストリデータベースにはデータ量の上限はありません。ただし、ヒストリデータベースは、メインデータベースおよび Pandora FMS サーバやコンソールが動作しているマシンとは物理的に異なるマシンに配置しなければいけないことを理解してください。

次に、追加の pandora_server.conf ファイルを作成する必要があります。以下に示す簡単な例を利用して(各値は実際のヒストリデータベースに合わせて書き換えてください) /etc/pandora/pandora_server_history_db.conf として作成してください。

dbengine mysql
dbname pandora4_history
dbuser pandora4_history
dbpass 1234
dbhost 192.168.50.23
log_file /var/log/pandora/pandora_db_history.log


以上で、通常の DB に対する処理に見せかけた設定を使って pandora_db を実行することができます。

/usr/share/pandora_server/util/pandora_db.pl /etc/pandora/pandora_server_history_db.conf

この処理は、メインのデータベースには影響しません。なぜなら、異なるサーバの異なるデータベースに対して行っているためです。ただし、ヒストリデータベースにおいて大量のデータ処理をしようとしている場合には、通常よりも応答が遅くなる可能性があります。