#6.Zabbix module を使用して監視対象のホスト追加

# はじめに

こんにちはnayaaaaです。

最近、所属しているtechbullコミュニティでZabbixに関する記事を書くことになり、
以前から試したいと思っていたAnsibleのZabbixモジュールを、この機会に試してみました。

Zabbixを運用している方々の中には対象ホストの追加や設定の変更が多く、
管理が面倒という方も多いと思います。
しかし、Zabbix moduleでホストの追加、設定変更を自動化すれば
運用コストを削減することが可能です。

# できること

- Zabbix moduleを用いた監視ホスト追加の自動化
- ホストの設定変更の自動化
- 新規でテンプレートやホストグループの作成も行える

# 構築環境

### バージョン情報

Ansible : 2.9

Zabbix : 5.0

### ホスト名

Zabbix Server : Zabbix02

Zabbix Agent : dev.menta.me (監視対象）

# 監視対象のホスト追加を自動化する

最初に、Zabbixのコンソールを開きます。

まだ、追加予定である監視対象dev.menta.me が追加されていない状態です。

![image (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3904736/d10a7034-6704-2b0b-2ab6-ea03d96a280e.png)


次にymlファイルへ以下を追記します。
今回は、監視対象ホストであるdev.menta.meを新規で追加します。

今回の構築環境では各roleでファイルを分けているので以下のように作成しております。
自環境に合わせて適宜修正が必要です。

※動作させるにはpythonとzabbix-apiを事前にインストールしておく必要があります。

以下、公式ドキュメントから抜粋

バージョン情報

- python >= 2.6
- zabbix-api >= 0.5.4


```main.yml
- name: add zabbix-agent
  zabbix_host:
    server_url: "http://zabbix02/api_jsonrpc.php" #zabbixコンソールのリンク
    login_user: Admin #ログイン時のユーザ名
    login_password: zabbix #ログイン時のパスワード
    host_name: "dev.menta.me" #監視対象のホスト名
    visible_name: "Monitor WordPress server" #zabbixコンソール上での表示名
    host_groups:
      - "Linux servers" #追加するグループ名
    link_templates: #追加するテンプレート
      - "Template App Nginx by Zabbix agent"
      - "Template DB MySQL by Zabbix agent"
      - "Template OS Linux by Zabbix agent"
    interfaces:
      - type: 1 # 1: Zabbixエージェント
        main: 1 # メインインターフェース (1: Yes)
        useip: 1 # IPアドレスで接続 (1: Yes)
        ip: "192.168.56.15" # 監視対象ホストのIPアドレス
        dns: "0"　# DNSサーバの指定 (0: No)
        port: "10050" # Zabbixエージェントのデフォルトポート
    state: present #デフォルトの設定
    status: enabled #デフォルトの設定
```

追記後Playbookを実行すると、
コンソール上で以下のように新規で追加した監視対象が登録されています。
 

 ![image (17).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3904736/db63f0f0-2ee9-6a3e-27d2-20f442149009.png)

なんか障害が発生しちゃってますね….

今回の目的はホストの追加なので一応目的は達成！！

追加したホストの設定を確認してみます。


![image (18).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3904736/46ec2cf8-e280-e968-45f9-98a4aa257bac.png)

コンソールとymlファイルのパラメータの対照表

| 画像の項目            | コードの対応箇所                                                                                      | 説明                                                  |
|-----------------------|----------------------------------------------------------------------------------------------------|-----------------------------------------------------|
| ホスト名                 | host_name: "dev.menta.me"                                                        | ホスト名                               |
| 表示名                 | `visible_name`: "Monitor WordPress server"                                                         | Zabbixでのホスト表示名                               |
| グループ             | `host_groups`: - "Linux servers"                                                                   | 追加するホストグループ                               |
| インターフェース - IPアドレス | `interfaces`: - `ip`: "192.168.56.15"                                                            | 監視対象ホストのIPアドレス                           |
| インターフェース - DNS名 | `interfaces`: - `dns`: "0"                                                                        | DNS指定（ここではIPベースで接続するため`0`に設定）   |
| インターフェース - ポート  | `interfaces`: - `port`: "10050"                                                                  | Zabbixエージェントのポート番号（デフォルトは10050）   |
| インターフェース - 接続方法 | `interfaces`: - `useip`: 1                                                                     | 接続方法の指定（1: IPベース、0: DNSベース）           |
| インターフェース - メイン  | `interfaces`: - `main`: 1                                                                      | メインインターフェースの指定                         |
| テンプレート          | `link_templates`: - "Template App Nginx by Zabbix agent"                                          | 追加するテンプレートのリスト                         |
|                       |                  - "Template DB MySQL by Zabbix agent"                                           |                                                     |
|                       |                  - "Template OS Linux by Zabbix agent"                                           |                                                     |
| 有効                 | `status`: enabled                                                                                  | ホストを有効化する設定（有効: enabled、無効: disabled） |

# まとめ
今回はホストの追加だけだったのですが、
スクリーンの設定なども自動化できるとのことで、
扱い方は様々ですので皆さんもぜひ試してみてはいかがでしょうか。



■参考リンク

https://docs.ansible.com/ansible/2.9_ja/modules/zabbix_host_module.html#zabbix-host-module

https://qiita.com/ike_dai/items/aa592f02a47d023911ed