カテゴリー: Zabbix

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

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

ZabbixからSlackに通知する

ZabbixからSlackに通知する

いまさらながら社内でSlackが流行りだしています。

というわけで、練習がてらzabbixからの障害通知をslackに出してみる。

以下のスクリプトを利用。
ericoc/zabbix-slack-alertscript
Zabbix Slack AlertScript
https://github.com/ericoc/zabbix-slack-alertscript

設定もほぼそのまま。

で、実際に障害を起こしてみるとこんなメッセージが!

slack_zabbix

簡単にできた!

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

Zabbixエージェントを沢山インストールしたのでメモ。

Zabbix SIAのyumリポジトリを利用する場合

Zabbix 2.2 for RHEL5, Oracle Linux 5, CentOS 5:

# rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/5/x86_64/zabbix-release-2.2-1.el5.noarch.rpm

Zabbix 2.2 for RHEL6, Oracle Linux 6, CentOS 6:

# rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm

Zabbix agent だけインストールする場合

# yum install zabbix-agent

エージェントにはスタンドアロンの「zabbix_agentd」とxinetd経由の「zabbix_agent」の2種類ある。
「zabbix_agent」は機能に制限があるようなので「zabbix_agentd」を利用する。

設定ファイル「/etc/zabbix/zabbix_agentd.conf」を編集

Server=ZabbixサーバのIPに設定

エージェントの起動

# service zabbix-agent start

エージェントのステータス確認

# service zabbix-agent status

自動起動の設定

# chkconfig zabbix-agent on

ファイアウォールがある場合はZabbix Agentホストのポート10050番を開けないと監視されない。
iptablesの設定を変更してポートを開放する。
※Zabbixサーバ側はポート10051番が開いてる必要がある。

後はZabbixサーバ側でホストを追加して「Template OS Linux」テンプレートとかをリンクさせて
しばらく待つ。

■参考
Zabbix Documentation 2.2
https://www.zabbix.com/documentation/2.2/manual/installation/install_from_packages#red_hat_enterprise_linux_centos

Zabbix 2.4 を yumでインストール(CentOS6.5)※このシリーズ
https://blog.apar.jp/linux/334/