LoginSignup
1
1

More than 5 years have passed since last update.

[blackbird-httpd] blackbird で Apache をモニタリングする

Posted at

blackbird httpd plugin

この plugin では Apache(httpd) から様々な情報を取得し、backend にデータを送信します
現在のところ、下記の情報をモニタリングすることができます。

  • Apache の version (httpd -v)
  • server-status の各項目
  • server-info の MaxClients
  • 特定 url に対する responce check (HTTP status code / Reponse Time)

Install

blackbird 本体

こちらを参考に install してください

Install httpd plugin

setup.py で入れる方法と rpm で入れる方法があります
手動で入れる方法もありますが、その場合は別途 python の requests の module を使えるようにしてください

setup.py で install

git clone https://github.com/Vagrants/blackbird-httpd.git
cd blackbird-httpd
python setup.py install

rpm で install

yum install blackbird-httpd--enablerepo=blackbird

依存関係で python-requests が必要となります

Apache 側で status を取れるようにする

server-status の定義をします

/etc/httpd/conf.d/server_status.conf
ExtendedStatus On

<VirtualHost *:80>
  ServerName localhost

  <Location /server-status>
    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from localhost
  </Location>
  <Location /server-info>
    SetHandler server-info
    Order deny,allow
    Deny from all
    Allow from localhost
  </Location>
</VirtualHost>

例えばこんな感じにします

server-info についてですが、今のところ MaxClients くらいしか取ってきてません
将来的にはもうちょっといろいろ取ろうかなと思ってますが、いかんせん出力結果が parse しにくい・・・

plugin の設定をする

config は /etc/blackbird/conf.d/httpd.cfg にあります

/etc/blackbird/conf.d/httpd.cfg
[httpd]
module = 'httpd'

# stub_status URI
# - support only http status code '200'
# - you must set uri value start with '/'
#
status_uri = '/server-status'
info_uri = '/server-info'
# host = '127.0.0.1'
# port = '80'
# timeout = '3'

# use ssl connection?
#
# ssl = False

# for BASIC authentication. default: Nothing
#
# user = 'nobody'

# for BASIC authentication. default: Nothing
#
# password = 'nobody'

# for response time check
# if you do not want to check, please comment out
# - support only http status code '200'
# - you must set uri value start with '/'
#
response_check_uri = '/'
# response_check_host = '127.0.0.1'
# response_check_port = '80'
# response_check_timeout = '3'
# response_check_vhost = 'localhost'
# response_check_uagent = 'blackbird response check'
# response_check_ssl = False

# httpd path
path = '/usr/sbin/httpd'

response_check_uri が指定された場合、その uri に対して HTTP GET をします
HTTP の status code と Response Time を計測します
virtual host も設定しておくことでサービス用途の virtual host の response をモニタリングすることが可能です

設定が終わったら blackbird を再起動させます

sudo /etc/init.d/blackbird restart

Zabbix 上でデータが入ってきているか確認する

Zabbix の Template は github の repositoryにあります
Zabbix に import して対象のサーバーに適用させて下さい

Zabbix 上の host 名と blackbird が起動しているサーバーの host 名が違う場合は /etc/blackbird/conf.d/httpd.cfg 上で hostname を設定してあげる必要があります
Zabbix 上と合わせてください

/etc/blackbird/conf.d/httpd.cfg
hostname = your_static_hostname

また、監視間隔も変更できます (デフォルト 60 秒)

/etc/blackbird/conf.d/httpd.cfg
interval = 30

Zabbix Template のアイテムについて

_Httpd_2.2

Application item description
Httpd - Stats Stats - *** ReqPerSec,BytesPerSec,BytesPerReq,,,etc
Httpd - Scoreboad Scoreboad - *** Waiting for Connection,Starting up,Reading Request,,,etc
Httpd - Performance Performance - Amount aggregate 用 item
Httpd - Performance Performance - Available aggregate 用 item
Httpd - Performance Performance - Response status response_check_uri の HTTP status
Httpd - Performance Performance - Response Time response_check_uri の Response Time
Version Version - Httpd Apache の version
General General - Blackbird httpd plugin is sending data blackbird からの ping
General General - Blackbird httpd plugin version httpd plugin の version
General General - Port $PORT is in LISTENING state 特定 port が Listen しているか (agent)
General General - Port $PORT is accepting connections 特定 port が Accept しているか (agent)
General Process - Number of httpd processes httpd の process 数 (agent)
Macro {$ITM_HTTPD_MONITOR_URI} アイテム表示用 (httpd.cfg と合わせて下さい)
Macro {$ITM_HTTPD_MONITOR_VHOST} アイテム表示用 (httpd.cfg と合わせて下さい)
Macro {$ITM_HTTPD_PORT} Apache の port
Macro {$TRG_BBD_HTTPD_NDT_PRD} blackbird からの ping の間隔の閾値
Macro {$TRG_HTTPD_RSP_TIME} Response Time の閾値

一部 agent の item も入ってます

{$TRG_BBD_HTTPD_NDT_PRD} について

blackbird が落ちていることを検知するため、ある一定の間隔で ping アイテムが更新されなかった場合に Trigger をあげます
その間隔の閾値です
/etc/blackbird/conf.d/httpd.cfg で interval を長くした場合はこの値も増やして下さい

{$TRG_HTTPD_RSP_TIME} について

Response Time が一定の秒数より大きかった場合に Trigger が上がります
その閾値になります
(Template では 3 回連続で閾値を超えた場合に Trigger を上げるようにしてますが、環境に応じて変えて下さい)

_Httpd_group_monitor

Application item description
Httpd - Group Group - Total servers group 監視のサーバー全体数
Httpd - Group Group - Available servers group 監視のサーバーのうち正常な数
Httpd - Group Group - Available servers rate その割合
Macro {$ITM_HTTPD_GROUP_NAME} group 監視する host group
Macro {$TRG_HTTPD_AVAILABLE_RATE} Trigger の閾値

この _Httpd_group_monitor ですが、load balancer 配下のサーバー郡のうち正常なサーバーがどれくらいあるか把握したい場合に使うことを想定しています
例えば 10 台で load balance されているサーバー達の半分が HTTP status 200 以外返しているのを検知したりできます
Zabbix の Aggregate の機能を使ってますので、監視したいサーバー達は同じ host group でまとめておく必要があります
ちなみにこの Template を適用させるサーバーは正直どこでもいい(127.0.0.1とかでもいい)のですが、わかりやすい方法としては load balance 用の vip の host を Zabbix 上で定義して、その host に適用させておくといいでしょう

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1