*

Ansibleを使用したZabbix監視対象の自動登録

公開日:  |  By  |  Ansible, Deployment, OSS

ビットアイル総合研究所の田波です。

前回に引き続き、構成管理ツール「Ansible」のお話をさせて頂きます。
今回はより具体的に、Ansibleの利用例を紹介します。

前回の記事はこちら
構成管理ツール「Ansible」のインストールと使用方法

Zabbixとは

Zabbixとはサーバ・ネットワーク・アプリケーションを監視することができる、フルオープンソースソフトウェアです。
各種監視機能・通知機能・グラフィカル表示機能があります。
Zabbix公式サイト(http://www.zabbix.com/jp/

Ansibleを使用したZabbix監視対象の自動登録

Zabbixサーバ・監視対象サーバ・AnsibleともにCentOS7を使用しています。
また、Zabbix・Zabbix-Agentのバージョンは2.4.4を使用しています。

動作の概要としては下記のようになります。

  1. Zabbixの標準機能である「自動登録」を設定します。
  2. Ansibleを使用し、管理対象サーバにzabbix-agentをインストールします。
  3. 自動登録に対応したzabbix-agentの設定ファイルを、Ansibleを使用して配布します。
  4. zabbix-agentサービスを再起動することにより、監視対象ホストがZabbixに登録されます。
    サービスの再起動もAnsibleを使用して実施します。

Zabbix標準の機能として、「自動登録」という機能があります。
ネットワーク上にあるサーバでzabbix-agentが起動した際に、条件付けをしたうえで監視対象ホストとして追加していく機能です。
自動登録を事前に設定しておくことで、Ansibleでzabbix-agentをインストールしたときに自動的にホスト登録が実施されます。

それでは、上記を順番に設定していきます。

Zabbix-agent監視の自動登録

まずはzabbix-server側の設定を実施します。

ZabbixのWebUIへログインし、「設定」⇒「アクション」と移動します。
画面右上イベントソースのプルダウンメニューから「自動登録」を選択し、アクションの作成をクリックします。

続いて、必要な情報を入力していきます。

アクションタブの「名前」はアクションの名称です。
適当な名前を設定してください。

アクションの実行条件タブで登録が実行される条件を設定します。
今回はホストメタデータを使用するので、『「ホストメタデータ」「含まれる」「WebServer」』とそれぞれ入力・選択し「追加」をクリックします。
※ホストメタデータに関しては後程説明します。

アクションの実行条件タブでは、実行条件に一致したホストの登録内容を設定できます。
今回は下記の4つを追加しました。
※「新規」をクリックし、それぞれの項目を選択してください。

  • 「ホストを追加」
    自動登録されたホストをZabbix監視対象にホストを追加します。
  • 「ホストグループに追加」
    自動登録されたホストをホストグループに追加します。
  • 「テンプレートとのリンクを作成」
    自動登録されたホストをテンプレートと紐づけます。
    監視内容の選定が可能です。

全ての設定が完了したら左下の「追加」をクリックします。

Ansibleでのファイル配布 ひな形ファイルの作成

まずはAnsibleサーバ上に元となる設定ファイルを配置する必要があります。

適当なサーバ1台にzabbix-agentのパッケージをインストールし、元となる設定ファイルを入手します。
今回はAnsibleをインストールしたサーバにインストールしてみました。
zabbix-agentはレポジトリ追加後に、yumコマンドでインストールできます。
バージョンはzabbix-serverと同じく2.4.4がインストールされます。

# sudo yum install http://repo.zabbix.com/zabbix/2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm
# sudo yum install zabbix-agent

インストールが正常に完了したら、zabbix-agentのコンフィグファイルを適当なディレクトリにコピーします。

# cp -p /etc/zabbix/zabbix_agentd.conf /home/user1/zabbix_agentd.conf

次に、コピーしたファイルを編集します。
編集箇所は下記の箇所です。
※該当箇所のみ抜き出しています。

~~~
Server=192.168.1.1   #ZabbixサーバのIPアドレスを入力します。
~~~
ServerActive=192.168.1.1   #ZabbixサーバのIPアドレスを入力します。
~~~
# Hostname=Zabbix server    #コメントアウトします。
~~~
HostnameItem=system.hostname    #コメントアウトを外します。
~~~
HostMetadataItem=WebServer    #自動登録で入力したホストメタデータと同じ文字列を入力し、コメントアウトを外します。
  • Server  :Zabbix ServerのIPアドレス指定です。
  • ServerActive :Zabbix ServerのIPアドレス指定です。
  • HostnameItem :Zabbixへの登録名をHostnameにするための設定です。
  • HostMetadata :「自動登録」の設定で使用した文字列を入力します。グループ分け・監視設定の種別分け等に使用します。

これでコンフィグファイルのひな型は完成です。
続いて、ファイル配布用のAnsible Playbookを作成します。

Ansibleでのファイル配布 Playbookの作成

まずはファイル配布の前に、管理対象サーバにzabbix-agentをインストールします。
インストール用のPlaybookには下記3つのモジュールを使用します。

  • yumモジュール
    管理対象サーバにてyumコマンドでのインストールを実行します。
  • copyモジュール
    ansibleサーバから管理対象サーバへファイルを配布します。
  • fileモジュール
    管理対象サーバのファイルの属性を設定します。
    今回はファイルの削除に使用しています。

上記モジュールを組み合わせて下記のPlaybookを作成します。
※本記事のPlaybookはタスクのみを抜粋して記載しています。
Playbook全文は記事末尾のリンクをご覧ください。

  - name: copy zabbix.repo
    copy: src=/etc/yum.repos.d/zabbix.repo dest=/etc/yum.repos.d/zabbix.repo
  - name: copy zabbix GPGKEY
    copy: src=/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX dest=/etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
  - name: install zabbix_agent
    yum: name=zabbix-agent state=latest
  - name: delete zabbix_agentd.conf
    file: path=/etc/zabbix/zabbix_agentd.conf state=absent

タスクごとの動作は下記の通りです。

  • 「copy zabbix.repo」「copy zabbix GPGKEY」
    copyモジュールを使用して、ansibleサーバのyumレポジトリファイル・GPGKEYファイルをコピーします。
    コピー元・コピー先はそれぞれ「src=」「dest=」で指定できます。
  • 「install zabbix_agent」
    yumモジュールを使用してzabbix-agentをインストールします。
    「name=」でパッケージ名を指定します。
  • 「delete zabbix_agentd.conf」
    fileモジュールを使用して、zabbix_agentd.confの初期ファイルを削除します。
    「state」で「absent」を指定することでファイル・ディレクトリを削除できます。
    ※ディレクトリを指定した場合、再帰的に削除されます。

続いて、zabbix_agentd.confのひな型を管理対象サーバへコピーし、サービスの再起動・boot時の起動設定を行います。

  - name: copy zabbix_agentd.conf
    copy: src=./zabbix_agentd.conf dest=/etc/zabbix/zabbix_agentd.conf
  - name: restart and enable zabbix-agent
    service: name=zabbix-agent state=restarted enabled=yes

新しく出てきたserviceモジュールは各サービスの起動・停止等の処理を実行します。
stateで起動・停止の処理、enabledでboot時の起動設定を行います。

自動登録の実行

前項までで作成したPlaybookを使用して、管理対象サーバの自動登録を実行します。

対象となるホストは前回と同様に下記のようにファイルを作成します。

[group1]
192.168.1.100
192.168.1.101

[group2]
web001
web002

続いて、ansible-playbookコマンドを実行します。

ansible-playbook -i hosts test-playbook.yaml

実行処理が問題なく完了したらZabbixの管理画面に監視対象サーバが増えていることが確認できます。

以上でAnsibleを使用したZabbix監視対象の自動登録は終了となります。

尚、今回作成したplaybookファイルは下記にて公開しております。

https://github.com/bit-isle-rd/zabbix-agent_auto_install

関連記事

tokyo2

OpenStack Summit in Paris (Day2)

by Ikuo Kumagai (@kumagai19o) 引き続き、OpenStack Su

記事を読む

blog-ocata

Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプロイして触ってみたいです。 前

記事を読む

01.all

CentOS7 RDO Juno with Ceph

ご無沙汰しています。 先日のブログではCentOS7/RDOで OpenStack Juno環境を

記事を読む

day2_3

OpenStack Upstream Training in Paris 参加報告

by Ikuo Kumagai (@kumagai19o) Bonjuor. またご無沙汰して

記事を読む

ODT2015logo

OpenStack Days Tokyo 2015

来る2月3日,4日にはOpenStack Days Tokyo 2015が開催されます。 日本国内

記事を読む

oss_on_slshowcase

CentOS 6 から7へのアップグレード

この記事は OSS on SoftLayer Showcase  の OpenStack Juno

記事を読む

image_000001

Ceph ~ブロックアクセス可能な分散ストレージ

by kumagai(@kumagai19o) 2014/3/12 ご無沙汰しています。ビッ

記事を読む

no image

Ceph Index

分散ストレージCeph紹介 インデックス Ceph "ブロックアクセス可能な分散ストレージ"

記事を読む

welcome

OpenStack Summit in Paris (Day1)

by Ikuo Kumagai (@kumagai19o)   こんに

記事を読む

no image

RDOを使用したOpenStack+MidoNet環境のインストール

ビットアイル総合研究所 田波です。 今回は以前紹介したRDOを使用して、OpenStack+M

記事を読む

no image

ビットアイル総合研究所は、クラウド技術に関する調査&研究を通して、社会と会社に寄与していくことを目的に、ビットアイル・エクイニクスの企業内研究所として2011年8月に設立されました。

blog-ocata
Jujuで Ocataを含む様々なバージョンのOpenStack をデプロイする方法

祝OpenStack Ocata リリース!! ということで、早速デプ

newton
Juju Manual Cloud で OpenStack 環境構築

本当にご無沙汰しております。 この投稿はOpenStack Adve

top
HACK! THE Juju/MAAS

6/8~6/10まで幕張メッセで開催されたInterop 2016。皆

dpdk
OpenStack OVS VXLAN ネットワークの高速化

少し前の話になりますが、3月2日に開催された 日本仮想化技術株式会社様

no image
OpenStack DBaas (Trove) を動かした話

本記事はOpenStack Advent Calendar 2015 

→もっと見る

PAGE TOP ↑