1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

blackbirdAdvent Calendar 2014

Day 4

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

Last updated at Posted at 2014-12-04

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?