blackbird の install 方法と設定方法

# blackbird とは

様々なデータを取得し、backend のサーバーにデータを投げる python 製のプログラム
現在は backend の投げ先には Zabbix Server のみ対応しているが、今後は様々なミドルウェアに対応していく予定です


# blackbird を install する

pip で入れる方法と rpm で入れる方法があります
推奨は rpm になります

## pip で install

特に何も考えずに

```bash
pip install blackbird
```

で入ります
または setup.py を使用して install してください

```bash
git clone https://github.com/Vagrants/blackbird.git
cd blackbird
python setup.py install
```

## rpm で install

下記の通り yum の repository を設定します

```bash
cat <<'_EOF_'> /etc/yum.repos.d/blackbird.repo
[blackbird]
name=Blackbird
baseurl=https://vagrants.github.io/blackbird/repo/yum/6/x86_64/
enabled=0
gpgcheck=0
_EOF_
```

その後 yum で install します
依存関係で epel の package を使いますので epel を使えるようにしておいてください

```bash
yum install blackbird --enablerepo=blackbird,epel
```

# blackbird を設定する

config は `/etc/blackbird/defaults.cfg` になります

```ini:/etc/blackbird/defaults.cfg
[global]
user = bbd
group = bbd
include  = conf.d/*.cfg
log_file = /var/log/blackbird/blackbird.log
log_level = error
```

rpm で install した場合は上記のようになっていると思います
実行ユーザーやグループの変更が必要な場合は適宜変更してください

また、`/etc/blackbird/conf.d/zabbix_sender.cfg` で zabbix server の設定をしておきます

```ini:/etc/blackbird/conf.d/zabbix_sender.cfg
[zabbix]
server = 127.0.0.1
module = zabbix_sender
```

`127.0.0.1` を適切に変更してください

# blackbird の plugin を入れる

ここでは `blackbird-httpd` を例に進めます

plugin の install にはいくつか方法があります

## 手動で入れる

適当なところに clone して、ファイルを配置します

```bash
git clone https://github.com/Vagrants/blackbird-httpd.git
cd blackbird-httpd
cp httpd.py /opt/blackbitd/plugins/.
cp httpd.cfg /etc/blackbird/conf.d/.
```

## setup.py で入れる

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

## rpm で入れる

```bash
yum install blackbird-httpd --enablerepo=blackbird
```

※ plugin によっては epel が必要になります

# plugin の設定をする

基本的には ini ファイルの中に説明があると思いますが、追加でいくつか設定することができます
特に重要なのは `interval` と `lld_interval` です

```ini:/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'
```

`interval` は Zabbix へデータを送る間隔になります(デフォルト 60 秒)
`lld_interval` は Low Level Discovery の間隔になります(デフォルト 600 秒)
(今回の httpd の plugin では LLD は使ってません)
各 plugin 毎にこれらの間隔を設定することができます
例えば 30 秒毎に取得、600 秒毎に Discovery をする場合は下記のようになります

```ini
interval = 30
lld_interval = 600
```

また、Zabbix Sender で送る際に host 名を自動で取得するのですが、Zabbix Server 側と host 名が違う場合は cfg に書くことができます

```ini
hostname = other_host_name
```

# blackbird を起動する

```bash
/etc/init.d/blackbird start
```

起動 script が無い場合は https://github.com/Vagrants/blackbird/blob/master/scripts/blackbird.init を使ってください

# Zabbix Server 側で Template を適用する

各 plugin 用に作られた Zabbix Template を公開しています
各 plugin の git repository の `templates` 以下にある xml を Zabbix Server に import してください
(今回の例の blackbird-httpd の場合 <https://github.com/Vagrants/blackbird-httpd/tree/master/templates> に置いてあります)

## データが送られてこない場合は

まず `/etc/blackbird/conf.d/zabbix_sender.cfg` 内で server の設定が正しいか確認してください
また対象サーバーから Zabbix Server の port 10051 が開いていることを確認して下さい
Zabbix Server の port を 10051 から変更している場合は `zabbix_sender.cfg` 内で `port = <your port num>` を追記してください

blackbird が動いているサーバーの hostname と Zabbix Server 側の host 名が違っている場合、データが入りません
Zabbix Server 側を修正するか、plugin の設定で hostname を定義して合わせてください