muninとZabbixで大規模サーバー群を監視

muninとは

muninはサーバーリソース管理ツールです。とにかく、ひたすらグラフ化、可視化、見える化するツールです。名前の由来は、北欧神話の神オーディンに世界中の情報を収集して伝達するワタリガラスです。RRDtoolとPerlで作られています。

こんなグラフを生成してサーバーのリソースをほぼリアルタイム(約5分おき)に伝えてくれます。

memory-month

私のサーバーのMuninは以下のアドレスで閲覧できます(自宅サーバーなので大規模ではないですが)。

自宅サーバー   http://www.testvps.info/munin/saito/geek.saito/index.html
さくらVPS(1GB  SSDプラン)  http://www.testvps.info/munin/saito/testvps.saito/index.html

Muninで監視できること

Muninは以下のようなものをグラフ化してくれます(代表的なものだけ列挙します)

  • メモリ使用状況
  • HTTPレスポンスタイム
  • Apache&Nginxリクエスト数(1秒間平均)
  • Apache&Nginx読み込み・書き込みコネクション数
  • ディスクI/O数   ディスクI/O遅延時間
  • ディスク使用量
  • ファイルシステムのinode使用率
  • MySQLクエリ数(秒間。select,update,delete,insert,cache_hit)
  • MySQLスロークエリ数
  • MySQLスループット
  • NICのネットワークトラフィック
  • パケットエラー
  • プロセス数・プロセスの種類
  • メールサーバースループット
  • メールキューの滞留状況
  • CPU使用率
  • メモリ使用率
  • ロードアベレージ
  • KVSメモリ使用状況
  • CPU温度・ファン回転数  etc…

muninサーバーのインストール

CentOS6の64ビットの場合

openSUSEの場合

YaSTまたはzypperで、コミュニティレポジトリのPackmanレポジトリを追加してからインストール

muninサーバーの設定

/etc/munin/munin.confを編集

htmldir以外はデフォルトで大丈夫です。。htmlディレクトリはドキュメントルートに合わせてください。外部公開サーバーでサーバーリソースを隠したい場合、BASIC認証またはDIGEST認証を掛けた場所を指定すると良いです。他に監視したいサーバーを追加します。

以上で設定は完了です。Deamonの起動は特にいりません。 標準状態で/etc/cron.d/muninというファイルができているので、cronから起動する形になります。ちなみにファイルの中身はこんな感じです。

munin-nodeのインストール(クライアント側)

CentOS6の64ビットの場合

クライアントサーバーには同じくepelレポジトリを設定して、munin-nodeをインストールします。

openSUSEの場合

YaSTまたはzypperで、コミュニティレポジトリのPackmanレポジトリを追加してからインストール

munin-nodeの設定

/etc/munin/munin-node.confを編集して、許可サーバーにmuninサーバーのIPアドレスを設定します。

munin-nodeを起動します。

pluginの追加(クライアント側)

/etc/munin/pluginsの中に、muninのプラグインが書かれてあるファイルにシンボリックリンクを貼ります。
有効なプラグインを探すのが面倒な方は、munin-node-configureというコマンドで自動的に有効なプラグインを登録してくれます。

CentOSの例

openSUSEの例

muninサーバーからmunin-nodeクライアントへの通信はデフォルトで4949ポートを使用します。iptablesなどファイアウォールで4949ポートが塞がっている場合は解放してください(ファイアウォールを解放してもmunin-node.confでAllow IPを設定しているので、それ以外のIPからの接続は遮断されますのでご安心ください)。

/etc/sysconfig/iptables設定例

iptablesを設定した場合は、iptablesを再起動してください。

以上でmuninの設定は完了です。次はZabbixの説明に移ります。

Zabbixとは

Zabbixとはサーバー、ネットワーク、アプリケーションを監視するためのソフトウェアです(Zabbix-JP Zabbixとは)。

  • サーバやネットワークに接続されたデバイスを監視する監視機能
  • 収集したデータをもとにグラフ化、ネットワークマップの作成を行うグラフィカル表示機能
  • 収集したデータに閾値を設定し、障害/復旧時に管理者に通知を行う障害検知/通知機能

上記の監視・通知をすべてWEB上で管理することができ、Nagiosなどの他のサーバー監視アプリケーションと比べて、インストールの容易性、標準状態での設定項目の豊富さと設定追加の簡易さが特徴です。

(↓Zabbixダッシュボードの画面)

dash

Zabbixサーバーのインストール

Zabbix 1.8の場合

Zabbix-JPでYUMレポジトリを公開しているので、Zabbix1.8系はこのレポジトリを追加(CentOSの場合は/etc/yum.repos.d/に追加)することで、YUMインストールが可能です。

Zabbix 2.0の場合

現状の最新版は2.0ですが、こちらはZABBIX SIA社の公開ディレクトリSIAのnon supportedディレクトリからダウンロードできます。まず、non supportedディレクトリから以下のパッケージをインストールします。

次にZabbix2.0のYUMレポジトリ追加RPMをインストールし、YUMインストールでZabbix2.0のパッケージをインストールします。

#zabbix-agentはzabbix-serverのlocalhostを監視する場合に入れます

openSUSEの場合

openSUSEの場合は対応RPMが公開されていないので、ソースからコンパイルしてインストールになります。

ZabbixのDB作成

/etc/my.cnfに以下の設定を追加します

MySQLを起動して、zabbixという名前のデータベースを作成し、Zabbix専用のユーザーを作成します(DBやユーザー名やパスワードは任意のものでもかまいません)。

Zabbixの初期データベースのインポート

Zabbixの初期DBスキーマとデータをインポートします。以下、2.0の場合です。

Zabbixサーバーの起動

/etc/zabbix/zabbix-server.confにDB接続情報を入力します。

あとはzabbix-serverとhttpdをスタートさせると/zabbix でZabbixの管理画面にアクセスできます。

ソースからインストールした場合は、zabbix-serverコマンドとzabbix-agentコマンドで起動します。

Zabbix管理画面ログイン

zabbix-20-installer

途中でDB接続情報などを入力します。その後、ログイン画面になりますが、初期設定ではユーザ名は「Admin」、パスワードは「zabbix」でログインできます。

Zabbixサーバーは標準で10051ポートを使用します。ダッシュボードまで到着できたら、Zabbixサーバーのインストールは完了です。

zabbix-agentのインストール(クライアント)

クライアントはzabbix-agentのインストールのみ必要となります。

Zabbix2.0の場合は以下です。

ソースインストールの場合は以下のコマンドになります

zabbix-agentの設定(クライアント側)

/etc/zabbix/zabbix_agentd.conf(ソースインストールの場合は/usr/local/etc/zabbix/zabbix_agentd.conf)を編集して、Zabbixサーバーのアドレスを許可します。

ZabbixサーバーからZabbixエージェントへの通信には10050ポートが使われます。ファイアウォールを設定している場合は、10050ポートを許可します。

/etc/sysconfig/iptablesの設定

これでzabbix-serverとzabbix-agentが疎通できるようになります。zabbix-agentを起動させます。

ソースインストールの場合はzabbix-agentdコマンドで立ち上がります。

Zabbixの監視設定

Zabbixの監視設定はWEBインターフェースになるため今回は省略しますが、基本的には、テンプレートをインポートして、ホストを作成して、ホストにテンプレートを割り当て、トリガーを設定する形になります。詳しくはまた今度、詳述いたします。

(↓トリガーの設定画面)

trigger

 

今度は、このZabbixの詳細設定について採り上げていきたいと思います。

追記

当初、Zabbix2.0のYUMレポジトリはないという書き方をしていましたが、@atanaka7さんからご指摘を頂き、訂正しました。ご指摘ありがとうございます!