2014年11月20日木曜日

NewRelicを使ってZabbixサーバ自信を監視してみた

概要

Zabbixにはzabbix_server自信を監視する機能がない(というか無理)なので
外部の監視システム(今回はNewRelic)を使ってZabbix自体を監視してみました

環境

  • CentOS 6.3 64bit
  • Zabbix 2.0.3
  • NewRelic 2014/11/20時点

準備

まずはNewRelicでアカウント登録

基本は無料で登録使用できます
http://newrelic.com/
にアクセスして「Sign Up for New Relic」からアカウント登録できます
regist_newrelic.png

アカウント登録画面では全部の内容を入力します
内容に不備がある場合は登録しようとしてもエラーになります
内容に不備がある部分は赤字で怒られます
regist_account.png

注意するところは特にないですが
監視するサーバのプラットフォームを選択する部分があるので「PHP」を選択してください
会社名を入力する部分がありますない方は適当でもいいかもしれません(自分は一応所属する会社名を入力しました)

設定

エージェントインストール

NewRelicで監視するサーバにエージェントをインストールします
これがないと監視することができません

まずはNewRelicが提供するレポジトリをインストールします

rpm -Uvh http://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm

リポジトリがインストールできたらyumコマンドで必要なパッケージをインストールしていきます

yum install newrelic-php5
  • newrelic-php5
  • newrelic-daemon
  • newrelic-php5-common

がインストールされます
インストール時にGPG keyをインポートしますと言われるのでyesにします

Importing GPG key 0x548C16BF:
Userid : New Relic <support@newrelic.com>
Package: newrelic-repo-5-3.noarch (installed)
From   : /etc/pki/rpm-gpg/RPM-GPG-KEY-NewRelic
Is this ok [y/N]: y

エージェントをインストールする準備が整ったのでエージェントをインストールしていきます

newrelic-install install

インタラクティブモードでインストールすることになります
必要な内容を入力しながらインストールしていきます

ライセンスキーの入力

おそらくしょっぱなで入力することになります
以下が表示されたらライセンスキーを入力します

Enter New Relic license key (or leave blank):

ライセンスキーはNewRelicのARM(Application Performance Management)で取得することができます
get_license_key.png

たぶん設定するのはこれだけです
入力後にインストールが完了された旨の英語が出てくればインストール完了です

あとついでにchkconfigをONにしておきます

chkconfig newrelic-daemon on

監視状態の確認

エージェントがインストールできたら一旦zabbix_serverとhttpdを再起動します

service httpd restart
service zabbix-server restart

これで5分後くらいにARMを見ると監視が開始されていることを確認できると思います
watch_php_app.png

成功していると上図のような感じになります
Nameのリンクをクリックすると監視しているサーバの詳細な情報をグラフで確認できます
何の設定もしていないですが、Zabbixで使っているMySQLの監視も勝手にできているっぽいです

うまくいかない場合は/var/log/newrelic/newrelic-daemon.logというログを見てください
何か手がかりがあるかもしれません

ZabbixServerがダウンしたら通知するように設定

さてここからが本題です
ZabbixServerがダウンしたらメールで通知するようにしてみます

サイトの監視

所謂、80番ポート監視してみます
ARMで対象のアプリケーションを開いて左メニューから

Event -> Alerts -> Edit alert policy

を確認してみます、するとすでにアラートが設定されておりこれ利用することでサイトの監視をしてみます default_alerts.png

このアラートを見ると「1 application is missing a ping URL」という警告が出ていて、これが出ているとサイト監視ができていないことになります

左メニューから

SETTINGS -> Availability monitoring -> URL to monitor

にZabbixのURLを記載します
regist_zabbix_host.png

入力してから「Save your changes」とすれば設定完了です
再度Application alert policiesを見ると先ほどの警告が出ていないと思います
それでもアラートが出る場合はここに記載されているIPからの80番ポートアクセスをFWやiptablesに許可してみてください

この状態で試しにサーバを停止してみたらアカウント登録時に設定したメールアドレスにちゃんとサーバ死んだよメールが届きました
起動すれば復旧メールも届きます

一応これでサーバ自体がダウンした場合と80番でLISTENできなくなった場合はNewRelicから監視することができるようになりました

が、たとえばzabbix-serverのプロセス自体が死んだ場合やZabbixが使っているMySQLが死んだ場合は検知できない状態です
本当はそこまで監視したかったんですが、プラグインを作ったりしないといけなさそうだったのと自分のNewRelic力がなさすぎて今回はギブしました
時間があったらやってみようかな

参考サイト

1 件のコメント: