Zabbixでapacheのコネクション数の監視がしたい


Zabbixでapacheのコネクション数の監視がしたい | Bamboo lath 日々の記録Zabbixでapacheのコネクション数の監視

設定したときのメモ

監視対象のサーバのapacheの設定を変更する

# vim httpd.conf
# diff httpd.conf_20160518 httpd.conf
912,917c912,917
< #<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 127.0.0.1
> </Location>

ローカルホストからだけデータが取得できるように設定してリスタートする。

# service httpd restart
httpd を停止中:                                            [  OK  ]
httpd を起動中:                                            [  OK  ]

ステータスを確認する

# apachectl status
The 'links' package is required for this functionality.

「elinks」が無いようなのでインストール

# yum install elinks

再度ステータスの確認

# apachectl status
                       Apache Server Status for localhost

   Server Version: Apache

   Server Built: Sep 16 2014 11:05:09

   --------------------------------------------------------------------------

   Current Time: Wednesday, 18-May-2016 17:11:39 JST

   Restart Time: Wednesday, 18-May-2016 17:09:30 JST

   Parent Server Generation: 0

   Server uptime: 2 minutes 8 seconds

   1 requests currently being processed, 7 idle workers

 _W______........................................................
 ................................................................
 ................................................................
 ................................................................

   Scoreboard Key:
   "_" Waiting for Connection, "S" Starting up, "R" Reading Request,
   "W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
   "C" Closing connection, "L" Logging, "G" Gracefully finishing,
   "I" Idle cleanup of worker, "." Open slot with no current process
   1 requests currently being processed, 7 idle workers

↑ここの部分が現在アクティブなリクエスト数をあらわしている

zabbix_agentのユーザパラメータの設定

# pwd
/etc/zabbix
# vim zabbix_agentd.conf
末尾に「UserParameter=apache.con.num,/usr/sbin/apachectl status|grep "requests currently being processed"|awk '{print $1}'」を追加する
# diff zabbix_agentd.conf_20160518 zabbix_agentd.conf
268a269
> UserParameter=apache.con.num,/usr/sbin/apachectl status|grep "requests currently being processed"|awk '{print $1}'

# service zabbix-agent restart
Shutting down zabbix agent:                                [  OK  ]
Starting zabbix agent:                                     [  OK  ]

ここまでできたらzabbixの管理画面で設定を行う。

「設定」⇒「ホスト」⇒今回設定を行ったホストの「アイテム」をクリック。
画面右上の「アイテムの作成」でapache.con.numをキーとして設定する。

setting

しかし設定しても値が入ってこない・・・。

ホスト側のログをみてみると以下のようなエラーが!

# less /var/log/zabbix/zabbix_agentd.log    
^GERROR at home.c:149: Unable to find or create ELinks config directory. Please check if you have $HOME variable set correctly and if you have write permission to your home directory.

どうも「apachectl」のlinksコマンドがホームディレクトリに書き込め無くて出るエラーらしいので「apachectl」自体をコピーして
オプションを追加し、「zabbix_agentd.conf」ではそっちの「apachectl」を利用すればいいみたいです。

[root@www15172u sbin]# pwd
/usr/sbin
とりあえず「apachectl2」とする
[root@www15172u sbin]# cp apachectl apachectl2
[root@www15172u sbin]# vim apachectl2 
[root@www15172u sbin]# diff apachectl apachectl2
51c51
< LYNX="/usr/bin/links -dump" --- >   LYNX="/usr/bin/links -dump -no-home"

# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=apache.con.num,/usr/sbin/apachectl2 status|grep "requests currently being processed"|awk '{print $1}'
# service zabbix-agent restart
Shutting down zabbix agent:                                [  OK  ]
Starting zabbix agent:                                     [  OK  ]

しばらく待つと・・・。

connection

でた。

■参考ページ

zabbix-agentでapachectlからデータを取得するUserParameterを設定したらコケた

 

※追記1:バーチャルドメインの場合はhttpd.confに設定をしても有効にならないので、
server-status用にconfを作成する

 

 # pwd
 /etc/httpd/conf.d/vhost
 
 # cat localhost.conf
 <VirtualHost *:80>
 ServerName localhost
 DocumentRoot /var/www/html
 <Location /server-status>
 SetHandler server-status
 Order deny,allow
 Deny from all
 Allow from localhost
 </Location>
 </VirtualHost>

 

※追記2:CentOS7の場合にはまった箇所

 

■CentOS7のApacheではsutatusではなくfullstatusにする

# apachectl fullstatus

設定に記載するのは↓

UserParameter=apache.con.num,/usr/sbin/apachectl2 fullstatus|grep "requests currently being processed"|awk '{print $1}'

■上記設定をしてzabbix-agentを再起動するもログにこんなエラーが出てしまった。

listener failed: zbx_tcp_listen() fatal error: unable to serve on any address [[-]:10050]

以前のプロセスが残っているようなのでまず止めてみる。

■サービスを止める。でもとまらなかった・・・

# systemctl stop zabbix-agent.service

■zabbix-agentのプロセスを探す

# ps -ef |grep zabbix

■zabbix-agentのプロセスを殺す

# systemctl kill --signal=9 zabbix-agent

■zabbix-agentを起動する
# systemctl start zabbix-agent.service

コメントを残す

メールアドレスが公開されることはありません。