BLOG
2017 年 09 月 20 日
Ansible を利用した MIRACLE ZBX 環境の構築 (MIRACLE LINUX 7 / CentOS 7 / RHEL 7)
Ansible を利用すると大規模な環境構築や複雑なセットアップやアップデートを容易に行うことができます。本ドキュメントでは、MIRACLE ZBX 用の Ansible Role を使用して MIRACLE ZBX 3.0 を MIRACLE LINUX 7, CentOS 7, RHEL7 上に構築し、アップデートする方法をご案内します。
概要
Ansible を利用すると大規模な環境構築や複雑なセットアップやアップデートを容易に行うことができます。本ドキュメントでは、MIRACLE ZBX 用の Ansible Role を使用して MIRACLE ZBX 3.0 を MIRACLE LINUX 7, CentOS 7, RHEL7 上に構築し、アップデートする方法をご案内します。
動作環境
OS、パッケージバージョン
MIRACLE ZBX サーバー (MIRACLE ZBX Server インストール対象 ): MIRACLE LINUX 7 / CentOS 7 / RHEL 7
MIRACLE ZBX 監視対象ホスト (MIRACLE ZBX Agent インストール対象 ): MIRACLE LINUX 7 / CentOS 7 / RHEL 7
MIRACLE ZBX 3.0.x
Ansible 2.2 以降
本記事での環境情報
この記事では以下環境を前提として記述します。
各マシンの DNS 名
MIRACLE ZBX サーバー | miracle-zbx-server.example.com |
MIRACLE ZBX 監視対象ホスト | monitoring-target.example.com |
構築する DB の設定情報
DB 名 | miraclezbx30 |
DB ユーザー名 | miraclezbx30 |
DB パスワード | miraclezbx30_password |
MIRACLE ZBX 用 Ansible Role の導入
MIRACLE ZBX Server 用 Ansible Role: download
MIRACLE ZBX Agent 用 Ansible Role: download
Ansible がインストールされている環境において、上記 MIRACLE ZBX 用 Ansible Role をダウンロードし、任意のディレクトリへ展開します。
ここでは例として、~/miracle-zbx-ansible/ へ展開します。
$ mkdir -p ~/miracle-zbx-ansible/
$ unzip ansible_role_for_miracle_zbx_server.zip -d ~/miracle-zbx-ansible/
$ unzip ansible_role_for_miracle_zbx_agent.zip -d ~/miracle-zbx-ansible/
構築対象ホストの一覧 (inventory ファイル ) を作成
MIRACLE ZBX サーバー を作る場合には、以下のように "miracle-zbx-server" と "monitoring-target" というホストグループを作成し、そこへ構築したいホストの IP アドレスもしくは DNS 名を列挙します。複数ホストを構築したい場合には、複数行ホスト情報を設定することにより構築可能です。
この例では MIRACLE ZBX サーバーとして "miracle-zbx-server.example.com"、MIRACLE ZBX 監視対象ホストとして "monitoring-target.example.com" を設定します。
"ansible_user" には以下条件を満たすユーザーを指定します。この例では "miracle" というユーザーを使用します。
- 全ての構築対象ホストへ、パスワードが設定されていない暗号鍵で ssh ログイン可能
- パスワード要求されずに sudo で root ユーザーになることが可能、もしくは root ユーザー
~/miracle-zbx-ansible/inventory
[miracle-zbx-server]
miracle-zbx-server.example.com
[monitoring-target]
monitoring-target.example.com
[all:vars]
ansible_user=miracle
MIRACLE ZBX サーバーの構築
MIRACLE ZBX サーバー構築の Playbook を作成
"miracle_zbx_server" の Role を使用して自由に Playbook を作成することができますが、ここでは例として以下内容の Playbook ファイルを作成します。
inventory ファイルに作成した "miracle-zbx-server" ホストグループに対して MIRACLE ZBX サーバーを構築します。以下設定可能な変数が存在します。
- "miracle_zbx_db_name" は MIRACLE ZBX サーバーに作成される DB の DB 名になります。
- "miracle_zbx_db_user" は MIRACLE ZBX サーバーに作成される DB の DB ユーザー名になります。
- "miracle_zbx_db_password" は MIRACLE ZBX サーバーに作成される DB の DB パスワードになります。
~/miracle-zbx-ansible/setup_miracle_zbx_server.yml
---
- name: Setup MIRACLE ZBX Server
hosts: miracle-zbx-server
become: true
vars:
miracle_zbx_db_name: miraclezbx30
miracle_zbx_db_user: miraclezbx30
miracle_zbx_db_password: miraclezbx30_password
roles:
- role: miracle_zbx_server
以下内容を実行して MIRACLE ZBX サーバーを作成します。
$ cd ~/miracle-zbx-ansible/ $ ansible-playbook -i inventory setup_miracle_zbx_server.yml PLAY [Setup MIRACLE ZBX Server] ************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Add MIRACLE LINUX gpg key] ************************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Install miracle-zbx-release-3.0-1 for adding yum repo] ************************************************************************************************************************************************************************************************ changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : selinux] ********************************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Install Apache rpm] *********************************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Install MariaDB rpm] ********************************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Setup MariaDB conf] *********************************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make MariaDB running] ********************************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Create a new database with name '"miraclezbx30"'] ***************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Create a new database user with name '"miraclezbx30"'] ************************************************************************************************************************************************************************************************ changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Input initial data to the database] ******************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Set miracle-zbx zabbix_server.conf] ******************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# DBName=', u'regexp': u'^DBName=', u'line': u'DBName=miraclezbx30'}) changed: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# DBUser=', u'regexp': u'^DBUser=', u'line': u'DBUser=miraclezbx30'}) changed: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# DBPassword=', u'regexp': u'^DBPassword=', u'line': u'DBPassword=miraclezbx30_password'}) changed: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# JavaGateway=', u'regexp': u'^JavaGateway=', u'line': u'JavaGateway=10.2.191.238'}) changed: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# JavaGatewayPort=', u'regexp': u'^JavaGatewayPort=', u'line': u'JavaGatewayPort=10052'}) changed: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# StartJavaPollers=', u'regexp': u'^StartJavaPollers', u'line': u'StartJavaPollers=5'}) TASK [miracle_zbx_server : Set miracle_zbx httpd zabbix.conf] ******************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Setup miracle_zbx Web UI conf] ************************************************************************************************************************************************************************************************************************ changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Open miracle-zbx related ports] *********************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] => (item={u'port': u'10051/tcp'}) changed: [miracle-zbx-server.example.com] => (item={u'port': u'10052/tcp'}) changed: [miracle-zbx-server.example.com] => (item={u'port': u'80/tcp'}) changed: [miracle-zbx-server.example.com] => (item={u'port': u'162/udp'}) TASK [miracle_zbx_server : Make miracle-zbx server stopping] ********************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make httpd restarting] ******************************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make miracle-zbx java-gateway restarting] ************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make miracle-zbx server starting] ********************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************** miracle-zbx-server.example.com : ok=20 changed=18 unreachable=0 failed=0
上記のようにコマンド成功後、http://miracle-zbx-server.example.com/zabbix/ へ Web ブラウザでアクセスし、MIRACLE ZBX サーバーが動作していることを確認したら完了です。"miracle-zbx-server.example.com" 部分は環境設定に合わせて URL を読み替えてください。
Playbook を実行し、MIRACLE ZBX サーバーを最新パッケージへアップデート
構築後、新規パッケージがリリースされた時にも、同じ以下コマンドを実行して MIRACLE ZBX サーバーを最新パッケージへアップデート可能です。
$ cd ~/miracle-zbx-ansible/ $ ansible-playbook -i inventory setup_miracle_zbx_server.yml PLAY [Setup MIRACLE ZBX Server] ************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Add MIRACLE LINUX gpg key] **************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Install miracle-zbx-release-3.0-1 for adding yum repo] ************************************************************************************************************************************************************************************************ ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : selinux] ********************************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Install Apache rpm] *********************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Install MariaDB rpm] ********************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Install miracle-zbx 3.0 server rpm] ******************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Setup MariaDB conf] *********************************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make MariaDB running] ********************************************************************************************************************************************************************************************************************************* ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Create a new database with name '"miraclezbx30"'] ***************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Create a new database user with name '"miraclezbx30"'] ************************************************************************************************************************************************************************************************ ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Input initial data to the database] ******************************************************************************************************************************************************************************************************************* ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Set miracle-zbx zabbix_server.conf] ******************************************************************************************************************************************************************************************************************* ok: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# DBName=', u'regexp': u'^DBName=', u'line': u'DBName=miraclezbx30'}) ok: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# DBUser=', u'regexp': u'^DBUser=', u'line': u'DBUser=miraclezbx30'}) ok: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# DBPassword=', u'regexp': u'^DBPassword=', u'line': u'DBPassword=miraclezbx30_password'}) ok: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# JavaGateway=', u'regexp': u'^JavaGateway=', u'line': u'JavaGateway=10.2.191.238'}) ok: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# JavaGatewayPort=', u'regexp': u'^JavaGatewayPort=', u'line': u'JavaGatewayPort=10052'}) ok: [miracle-zbx-server.example.com] => (item={u'insertafter': u'^# StartJavaPollers=', u'regexp': u'^StartJavaPollers', u'line': u'StartJavaPollers=5'}) TASK [miracle_zbx_server : Set miracle_zbx httpd zabbix.conf] ******************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Setup miracle_zbx Web UI conf] ************************************************************************************************************************************************************************************************************************ ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Open miracle-zbx related ports] *********************************************************************************************************************************************************************************************************************** ok: [miracle-zbx-server.example.com] => (item={u'port': u'10051/tcp'}) ok: [miracle-zbx-server.example.com] => (item={u'port': u'10052/tcp'}) ok: [miracle-zbx-server.example.com] => (item={u'port': u'80/tcp'}) ok: [miracle-zbx-server.example.com] => (item={u'port': u'162/udp'}) TASK [miracle_zbx_server : Make miracle-zbx server stopping] ********************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make httpd restarting] ******************************************************************************************************************************************************************************************************************************** changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make miracle-zbx java-gateway restarting] ************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_server : Make miracle-zbx server starting] ********************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************** miracle-zbx-server.example.com : ok=20 changed=5 unreachable=0 failed=0
上記のようにコマンド成功後、 http://miracle-zbx-server.example.com/zabbix/ へ Web ブラウザでアクセスし、MIRACLE ZBX サーバーが動作していることを確認したら完了です。"miracle-zbx-server.example.com" 部分は環境設定に合わせて URL を読み替えてください。
Playbook 実行時の注意事項
Playbook 実行時に MIRACLE ZBX サーバーの関連サービスを再起動しているため、その間は監視が一時停止します。
MIRACLE ZBX 監視対象ホストの構築
MIRACLE ZBX 監視対象ホスト構築の Playbook を作成
"miracle_zbx_agent" の Role を使用して自由に Playbook を作成することができますが、ここでは例として以下内容の Playbook ファイルを作成します。
inventory ファイルに作成した全てのホストグループに対して MIRACLE ZBX Agent を導入し、MIRACLE ZBX 監視対象ホストを構築します。以下設定可能な変数が存在します。
- "miracle_zbx_server_ip_or_dns" は MIRACLE ZBX サーバーの IP アドレスまたは DNS 名になります。この例では先ほど構築した "miracle-zbx-server.example.com" を設定します。
- "miracle_zbx_agent_hostname" は各ホストで MIRACLE ZBX Agent のホストとして設定されるホスト名です。デフォルトでは OS のホスト名のショートネーム(コマンド "hostname -s" を実行して返ってくる文字列と同等)が設定されます。この例においてもデフォルト値を使用します。
~/miracle-zbx-ansible/setup_miracle_zbx_agent.yml
---
- name: Setup MIRACLE ZBX Agent
hosts: all
become: true
vars:
miracle_zbx_server_ip_or_dns: miracle-zbx-server.example.com
roles:
- role: miracle_zbx_agent
以下内容を実行して MIRACLE ZBX 監視対象ホストを作成します。
$cd ~/miracle-zbx-ansible/ $ ansible-playbook -i inventory setup_miracle_zbx_agent.yml PLAY [Setup MIRACLE ZBX Agent] *************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************************************************** ok: [monitoring-target.example.com] ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_agent : Add MIRACLE LINUX gpg key] ***************************************************************************************************************************************************************************************************************************** changed: [monitoring-target.example.com] ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_agent : Install miracle-zbx-release-3.0-1 for adding yum repo] ************************************************************************************************************************************************************************************************* ok: [miracle-zbx-server.example.com] changed: [monitoring-target.example.com] TASK [miracle_zbx_agent : selinux] *********************************************************************************************************************************************************************************************************************************************** ok: [monitoring-target.example.com] ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_agent : Install miracle-zbx 3.0 agent rpm] ********************************************************************************************************************************************************************************************************************* changed: [miracle-zbx-server.example.com] changed: [monitoring-target.example.com] TASK [miracle_zbx_agent : Set miracle-zbx zabbix_agentd.conf] ******************************************************************************************************************************************************************************************************************** changed: [monitoring-target.example.com] => (item={u'regexp': u'^Server=', u'line': u'Server=miracle-zbx-server.example.com'}) changed: [miracle-zbx-server.example.com] => (item={u'regexp': u'^Server=', u'line': u'Server=miracle-zbx-server.example.com'}) changed: [monitoring-target.example.com] => (item={u'regexp': u'^ServerActive=', u'line': u'ServerActive=miracle-zbx-server.example.com'}) changed: [miracle-zbx-server.example.com] => (item={u'regexp': u'^ServerActive=', u'line': u'ServerActive=miracle-zbx-server.example.com'}) changed: [monitoring-target.example.com] => (item={u'regexp': u'^Hostname=', u'line': u'Hostname=monitoring-target'}) changed: [miracle-zbx-server.example.com] => (item={u'regexp': u'^Hostname=', u'line': u'Hostname=miracle-zbx-server'}) TASK [miracle_zbx_agent : Open miracle-zbx agent related ports] ****************************************************************************************************************************************************************************************************************** changed: [monitoring-target.example.com] => (item={u'port': u'10050/tcp'}) changed: [miracle-zbx-server.example.com] => (item={u'port': u'10050/tcp'}) TASK [miracle_zbx_agent : Make miracle-zbx agent restarting] ********************************************************************************************************************************************************************************************************************* changed: [monitoring-target.example.com] changed: [miracle-zbx-server.example.com] PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************** miracle-zbx-server.example.com : ok=8 changed=4 unreachable=0 failed=0 monitoring-target.example.com : ok=8 changed=6 unreachable=0 failed=0
上記のようにコマンド成功後、MIRACLE ZBX Agent が動作していることを確認したら完了です。
Playbook を実行し、MIRACLE ZBX 監視対象ホストの MIRACLE ZBX Agent を最新パッケージへアップデート
構築後、新規パッケージがリリースされた時にも、同じ以下コマンドを実行して MIRACLE ZBX Agent を最新パッケージへアップデート可能です。
$ cd ~/miracle-zbx-ansible/ $ ansible-playbook -i inventory setup_miracle_zbx_agent.yml PLAY [Setup MIRACLE ZBX Agent] *************************************************************************************************************************************************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************************************************** ok: [monitoring-target.example.com] ok: [miracle-zbx-server.example.com] ASK [miracle_zbx_agent : Add MIRACLE LINUX gpg key] ***************************************************************************************************************************************************************************************************************************** ok: [monitoring-target.example.com] ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_agent : Install miracle-zbx-release-3.0-1 for adding yum repo] ************************************************************************************************************************************************************************************************* ok: [monitoring-target.example.com] ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_agent : selinux] *********************************************************************************************************************************************************************************************************************************************** ok: [monitoring-target.example.com] ok: [miracle-zbx-server.example.com] TASK [miracle_zbx_agent : Install miracle-zbx 3.0 agent rpm] ********************************************************************************************************************************************************************************************************************* changed: [monitoring-target.example.com] changed: [miracle-zbx-server.example.com] TASK [miracle_zbx_agent : Set miracle-zbx zabbix_agentd.conf] ******************************************************************************************************************************************************************************************************************** ok: [monitoring-target.example.com] => (item={u'regexp': u'^Server=', u'line': u'Server=miracle-zbx-server.example.com'}) ok: [miracle-zbx-server.example.com] => (item={u'regexp': u'^Server=', u'line': u'Server=miracle-zbx-server.example.com'}) ok: [monitoring-target.example.com] => (item={u'regexp': u'^ServerActive=', u'line': u'ServerActive=miracle-zbx-server.example.com'}) ok: [miracle-zbx-server.example.com] => (item={u'regexp': u'^ServerActive=', u'line': u'ServerActive=miracle-zbx-server.example.com'}) ok: [monitoring-target.example.com] => (item={u'regexp': u'^Hostname=', u'line': u'Hostname=monitoring-target'}) ok: [miracle-zbx-server.example.com] => (item={u'regexp': u'^Hostname=', u'line': u'Hostname=miracle-zbx-server'}) TASK [miracle_zbx_agent : Open miracle-zbx agent related ports] ****************************************************************************************************************************************************************************************************************** ok: [monitoring-target.example.com] => (item={u'port': u'10050/tcp'}) ok: [miracle-zbx-server.example.com] => (item={u'port': u'10050/tcp'}) TASK [miracle_zbx_agent : Make miracle-zbx agent restarting] ********************************************************************************************************************************************************************************************************************* changed: [monitoring-target.example.com] changed: [miracle-zbx-server.example.com] PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************** miracle-zbx-server.example.com : ok=8 changed=2 unreachable=0 failed=0 monitoring-target.example.com : ok=8 changed=2 unreachable=0 failed=0
上記のようにコマンド成功後、MIRACLE ZBX Agent が動作していることを確認したら完了です。
Playbook 実行時の注意事項
Playbook 実行時に MIRACLE ZBX の zabbix-agent サービスを再起動しているため、その間は監視が一時停止します。
注意事項
- 本ドキュメントの内容は、予告なしに変更される場合があります。
- 本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、全ての環境での動作を保証するものではありません。
- 本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、当社はその損害についての責任を負いません。あくまでお客さまのご判断にてご使用ください。
更新履歴
2017 年 9 月 20 日 新規作成
2017 年 12 月 13 日 MIRACLE ZBX の Server と Agent の Ansible Role をダウンロードできるように修正