採用情報

お問い合わせ

BLOG

Zabbix テック・ラウンジ

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 をダウンロードできるように修正

CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime