search
LoginSignup
1

More than 5 years have passed since last update.

posted at

updated at

[blackbird-nginx] blackbird で Nginx をモニタリングする

blackbird nginx plugin

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

  • nginx の version (nginx -v)
  • stub_status の各項目
  • 特定 url に対する responce check (HTTP status code / Reponse Time)

Install

blackbird 本体

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

Install nginx plugin

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

setup.py で install

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

rpm で install

yum install blackbird-nginx--enablerepo=blackbird

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

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

stub_status の定義をします

/etc/nginx/conf.d/stub_status.conf
server {
    listen 80;
    server_name localhost;
    location /nginx_status {
        stub_status on;
        access_log  off;
        allow 127.0.0.1;
        deny  all;
    }
}

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

plugin の設定をする

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

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

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

# 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_port = '80'
# response_check_host = '127.0.0.1'
# response_check_vhost = 'localhost'
# response_check_uagent = 'blackbird response check'
# response_check_ssl = False

# nginx path
path = '/usr/sbin/nginx'

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/nginx.cfg 上で hostname を設定してあげる必要があります
Zabbix 上と合わせてください

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

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

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

Zabbix Template のアイテムについて

_Nginx_1.4

Application item description
Nginx - Stats Stats - Accepts stub_status の Accepts
Nginx - Stats Stats - Accepts cps 上記の Connection Per Sec
Nginx - Stats Stats - Handled stub_status の Handled
Nginx - Stats Stats - Handled cps 上記の Connection Per Sec
Nginx - Stats Stats - Requests stub_status の Requests
Nginx - Stats Stats - Requests cps 上記の Connection Per Sec
Nginx - Stats Stats - Reading stub_status の Reading
Nginx - Stats Stats - Writing stub_status の Writing
Nginx - Stats Stats - Waiting stub_status の Waiting
Nginx - Performance Performance - Amount aggregate 用 item
Nginx - Performance Performance - Available aggregate 用 item
Nginx - Performance Performance - Response status response_check_uri の HTTP status
Nginx - Performance Performance - Response Time response_check_uri の Response Time
Version Version - Nginx nginx の version
General General - Blackbird nginx plugin is sending data blackbird からの ping
General General - Blackbird nginx plugin version nginx plugin の version
General General - Port $PORT is in LISTENING state 特定 port が Listen しているか
General General - Port $PORT is accepting connections 特定 port が Accept しているか
General Process - Number of nginx processes nginx の process 数
Macro {$ITM_NGINX_MONITOR_URI} アイテム表示用 (nginx.cfg と合わせて下さい)
Macro {$ITM_NGINX_MONITOR_VHOST} アイテム表示用 (nginx.cfg と合わせて下さい)
Macro {$ITM_NGINX_PORT} nginx の port
Macro {$TRG_BBD_NGX_NDT_PRD} blackbird からの ping の間隔の閾値
Macro {$TRG_NGINX_RSP_TIME} Response Time の閾値
{$TRG_BBD_NGX_NDT_PRD} について

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

{$TRG_NGINX_RSP_TIME} について

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

_Nginx_1.4 っていう Template 名になってますが、1.6 系でも使えます

_Nginx_group_monitor

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

この _Nginx_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 に適用させておくといいでしょう

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
What you can do with signing up
1