今回も失敗しましたけれども、記録として残しときます><
環境
- Zabbix で自分自身を監視
- サーバの IP アドレス 192.168.56.111
- CentOS 5.10
- Zabbix server v2.0.9
- Zabbix agent v2.0.9
- Apache/2.2.3
ちなみに、それぞれの確認コマンドは、「cat /etc/redhat-release」「zabbix_server –version」「zabbix_agent –version」「httpd -v」ですわ。
Apache の mods_status モジュール設定
すでにインストールされていることを、コマンド「httpd -M」の結果に「status_module (shared)」があることで確認いたしました。
このモジュールをオンにします。
vim /etc/httpd/conf/httpd.conf
Apache 設定ファイルを開き、下記のように2ヵ所編集しました。
ExtendedStatus On
もう1箇所は URL の設定などです。ここで接続を制限して、外部からウェブブラウザでは表示できないようにしています。あまり詳しくないのでテキトーですけれども><。
#<Location /server-status> # SetHandler server-status # Order deny,allow # Deny from all # Allow from .example.com #</Location>
↓
<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from 192.168.56.111 </Location>
再起動して反映させます。
/etc/init.d/httpd restart
動作を確認します。コマンド「curl http://192.168.56.111/server-status」で自分自身から確認できることをチェックします。
[root@localhost ~]# curl http://192.168.56.111/server-status <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html><head> <title>Apache Status</title> </head><body> <h1>Apache Server Status for 192.168.56.111</h1> <dl><dt>Server Version: Apache</dt> …略… </table> </body></html> [root@localhost ~]#
続いて、外部からウェブブラウザで「http://192.168.56.111/server-status」にアクセスし確認できないことをチェックします。
Forbidden You don't have permission to access /server-status on this server.
OK です♪
監視スクリプトのダウンロード、配置、設定、確認
監視スクリプト
Apache の mods_status が出力する情報を Python の監視スクリプトで定期的に取得し、Zabbix サーバへと送るプログラムと理解しています。それを、これから導入します。
まずは配置場所です。前回の MySQL 監視導入時に作成した /var/lib/zabbix ディレクトリに置くこととします。そうと決まりましたら早速ダウンロードです。
cd /var/lib/zabbix/ wget https://raw.github.com/gpmidi/zabbix-apache-stats/master/bin/fetch.py mv fetch.py zabbixApacheUpdater.py
次に、所有者、パーミッション設定です。
chown zabbix:zabbix zabbixApacheUpdater.py chmod 500 fetch.py
監視スクリプトの動作確認をいたします。
python zabbixApacheUpdater.py --help
次の用にヘルプが表示されましたら OK ですわ。
[root@localhost zabbix]# python zabbixApacheUpdater.py --help usage: ApacheStatsForZabbix [-z ] [-o ] This program gathers data from Apache's built-in status page and sends it to zabbix. The data is sent via zabbix_sender. Author: Paulson McIntyre (GpMidi) License: GPLv2 options: --version show program's version number and exit -h, --help show this help message and exit -l URL, --url=URL Override the automatically generated URL with one of your own -o HOST, --host=HOST Host to connect to. [default: localhost] -p PORT, --port=PORT Port to connect on. [default: 80] -r PROTO, --proto=PROTO Protocol to connect on. Can be http or https. [default: http] -z ZabbixSERVER, --Zabbixserver=ZabbixSERVER -u USER, --user=USER HTTP authentication user to use when connection. [default: None] -a PASSWD, --passwd=PASSWD HTTP authentication password to use when connecting. [default: None] -s SENDERLOC, --sender=SENDERLOC Location to the Zabbix_sender executable. [default: /usr/bin/Zabbix_sender] -q ZabbixPORT, --Zabbixport=ZabbixPORT Zabbix port to connect to. [default: 10051] -c ZabbixSOURCE, --Zabbixsource=ZabbixSOURCE Zabbix host to use when sending values. [default: localhost] [root@localhost Zabbix]#
cron 設定
つづいて、cron 設定です。-u オプションを付けて、zabbix ユーザで実行するようにいたしました。
crontab -u zabbix -e
内容です。
* * * * * /usr/bin/python /var/lib/zabbix/zabbixApacheUpdater.py -c 127.0.0.1 -z 127.0.0.1 > /dev/null 2>&1
ちなみに、crontab はインストールされておりましたのに、最初、crontab コマンドが使用できませんでしたの。どうしてかしら?と調べておりましたら、vixie-cron がインストールされていないことが原因でしたわ><。早速、「yum install vixie-cron」でインストールいたしましたら、無事使用することができましたの♪
cron に設定しましたスクリプトの動作確認をいたしましょう。
/usr/bin/python /var/lib/zabbix/zabbixApacheUpdater.py -c 127.0.0.1 -z 127.0.0.1
あら?なんだかヘンです。エラーです。プログラムソースを見ましても、ぱっと原因がわかりません。困りましたわ><。
Traceback (most recent call last): File "/var/lib/zabbix/zabbixApacheUpdater.py", line 224, in ? data = parse(data = data) File "/var/lib/zabbix/zabbixApacheUpdater.py", line 77, in parse for (key, val) in csvobj: ValueError: need more than 1 value to unpack
そういえば、zabbix_sender なるもの、これはもしかしてパッケージなのでしょうか?でしたらインストールされていないように思います。確認したところ、確かに zabbix_sender がインストールされておりません。
次のコマンドで、ぱっとインストール、いたしました。自動起動設定、起動コマンド、は見当たりませんでしたので、不要と判断いたしました。
yum install zabbix-sender
さて、zabbix_sender をインストールいたしました、、、けれもどエラーメッセージは変わりません><。
そもそも、エラーメッセージの内容が「ValueError: need more than 1 value to unpack」とありますので、オプションのパラメータが足りていない、という趣旨だと思うのでございます。
そこで、パラメータをテキトーにつけたり外したり検証いたしました。これで良さそうです♪「-o」オプションをつければ動きました。この -o オプションホストを指定ですので、ローカルホストの「127.0.0.1」を指定いたしました。
[root@localhost zabbix]# /usr/bin/python /var/lib/zabbix/zabbixApacheUpdater.py -c 127.0.0.1 -z 127.0.0.1 -o 192.168.56.111 zabbix_sender [18176]: DEBUG: answer [{ "response":"success", "info":"Processed 0 Failed 19 Total 19 Seconds spent 0.000125"}] info from server: "Processed 0 Failed 19 Total 19 Seconds spent 0.000125" sent: 19; skipped: 0; total: 19 [root@localhost zabbix]#
このエラーについて、どうも参考ページのこの部分に当たるような感じがいたします。引用いたします。
CRITICAL NOTICES:
It’s not described and not specified in –help that option ”-o” being used to construct item key as well. So if user uses it then he has to adjust item key 1st parameter (localhost → -o value) in template as well.
Related code line:tempfile.write("%s apache[%s,%s] %s\n" % (opts.zabbixsource, opts.host, key, val))How suggested template then can be used ?
In the first example cron line this part:
-c host.being.monitored.comis bad – it misleads !
It has to be changed to some absolutely clear and a note should be added that it’s intended for localhost Apache monitoring !
Or remove it at all.
エラーを解決する答えそのものというよりも、テンプレート(zabbix サーバの管理画面!?)や「-c」オプションに関わってくるように感じられます。要するに、よくわかりません><。
てへ♪
結局、cron は次のように設定いたしました。
* * * * * /usr/bin/python /var/lib/zabbix/zabbixApacheUpdater.py -c 127.0.0.1 -z 127.0.0.1 -o 192.168.56.111 > /dev/null 2>&1
Zabbix サーバへ、Apache 監視のテンプレートをインポート
テンプレートファイルをダンロードしたいのです。
のページの Method 1 > Install/Configure Steps に「Download and import “zabbix_export.xml” file (see a link above) into zabbix frontend;」とございますけれども、肝心のリンクがありません><。
仕方ありませんので、同ページにございます、「Method 2」の xml をコピーして、Template_Apache_Stats.xml ファイルを作成して貼り付けました。
Zabbix サーバのウェブインターフェイスの、設定 > テンプレートページに進み、「インポート」をクリック。
先ほど作成した Template_Apache_Stats.xml ファイルを指定して、「インポート」しました。
Zabbix エージェントと、Zabbix サーバの Apache テンプレートの紐付け
- 設定 > ホスト。
- ホストを選択し、タブ「テンプレート」へ移動。
- Template_Apache_Stats を追加、保存
Zabbix サーバの Apache テンプレートのグラフ設定
- 設定 > テンプレートで、Template_Apache_Stats を選択
- 上部メニュー「グラフ」
- Apache Thread Scoreboard をクリックして確認
そうしますと、すでに下記のようなグラフが用意されていることがわかりました♪素晴らしいテンプレートです♪
監視の確認
。。。ここまで設定してきましたけれども、どうもダメみたいです。グラフでアクセス数を確認しようとしたのですけれども、出ません><。
次のことを試してみました。
- 監視スクリプトの使用ポートがデフォルトで 10051 のため、Zabbix サーバのホスト設定で、ポート 10051 を追加。
- サーバのポート 10051 を開けた。
- 監視スクリプトのコマンドでポートのオプション「-q」で、10050 を指定してみる → エラーとなったので却下
- Method 3 の xml を試してみる?
- Method 1 の実践なのに xml だけ Method 2 を使用したのが原因?Method 2 でやってみる?
- Zabbix-JPのテンプレートを使ってみる? → Template_App_httpd
おわりに
手順は最後までできたのですけれども、動きませんでした><。失敗です。難しいですの。
それはともかく、次のページが大変参考になりました。ありがとう存じます!
以上です。
「【失敗】Zabbix で Apache を監視する方法【対象は、Zabbix サーバ、自分自身】」への1件の返信
[…] 【失敗】Zabbix で Apache を監視する方法【対象は、Zabbix サーバ、自分自身】 | oki2a24 の続きとなりますけれども、今回も失敗いたしました><。 […]