AzureのCentOSインスタンスにZabbix3.0をAnsibleで構築する

概要

監視サーバを建てるべく、Azure上にCentOSのインスタンスを用意して
Ansibleで手早くZabbix3.0をインストールします。AnsibleのPlaybookはGithubで公開します。
github.com/sios-tech/ansible-zabbix-rhel7

CentOSインスタンスの用意

インスタンスについては執筆時点でCentOS7.2がありましたのでこちらを利用します。
また今回は検証の為に、グローバル環境からアクセスしたいので、
インスタンスを用意した後にネットワークセキュリティグループで利用するポートを開けておきます。

screenshot.1463453251screenshot.1463461356

Ansible Playbookについて

Ansibleについてはサーバサイドにインストールして自ホストに対してPlaybookを実行します。
これでZabbix Server兼Ansible Serverを構築し、監視対象ホストへ一括Zabbix Agentを
インストールしたらスマートかなと思い、まずは今回Zabbix Serverを構築します。
またPlaybookについては以下のような具合です。

  • Zabbix Server3.0の標準インストールに加え、日本語の言語パッケージを追加
  • CentOS7 or RHEL7に対応
  • バックエンドはMySQL(MariaDB)、standalone構成
  • Zabbix動作に必要なパッケージは無ければyumインストール
  • Apache、MySQL、SELinux、firewalld(またはiptables)のチュニーングは考慮外
  • Playbookの実行はrootユーザもしくは一般ユーザの場合はsudoが使える前提

今回検証した環境

  • CentOS Linux release 7.2.1511 (Core) (on Azure)
  • Zabbix 3.0

構築

AnsibleとGitをインストールします。

$ sudo yum install -y git
$ sudo yum install -y epel-release
$ sudo yum install --enablerepo=epel ansible
$ sudo sed -i "s/^enabled=1/enabled=0/g" /etc/yum.repos.d/epel.repo
$ git --version
$ ansible --version

GitHubからAnsible Playbookを取得します。

$ git clone https://github.com/sios-tech/ansible-zabbix-rhel7.git
$ cd ansible-zabbix-rhel7

ZabbixServerの環境情報を定義します。
(デフォルトで問題ありませんが、最低限MySQL Zabbix用DBのパスワードは変更しておきます。)

vi ./group_vars/zabbix-server-mysql-standalone
# Here are variables related to the ZABBIX-Server installation
# /etc/php.ini
dateTimezone: Asia/Tokyo
#
# ZABBIX repository specified to use in the installation
#
zabbixRepository: http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
zabbixRpmGpgKey: http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
#
# Database settings and ZABBIX configuration
# '/etc/zabbix/zabbix.conf','/etc/zabbix/web/zabbix.conf.php'
#
ListenPort: 10051
LogFile: /var/log/zabbix/zabbix_server.log
DBHost: localhost
DBName: zabbix
DBUser: zabbix
DBPassword: 
DBPort: 3306
DBSocket: /var/lib/mysql/mysql.sock

Ansible playbookの実行先を指定。今回は自ホスト宛( localhost )

vi ./hosts
[zabbix-server-mysql-standalone]
127.0.0.1

Ansible playbookの実行

$ sudo ansible-playbook -u <userName> ./zabbix-server-mysql-standalone.yml
# 公開鍵認証の場合は以下の様に、秘密鍵(pem)を指定します。
# $ sudo ansible-playbook --private-key=<pathToPrivatekey> -u <userName> ./zabbix-server-mysql-standalone.yml

実行完了後、 http://<ipaddress or DNS>/zabbix にアクセスします。
( 初期ユーザは Admin / zabbix )

screenshot.1463462430

日本語への変更は、画面右上ユーザアイコン -> [Language] -> プルダウンで[Japanese(ja_JP)]を選択します。

screenshot.1463462811

最後に

おそらくサービス単位でAzureのリソースグループをカテゴライズすると思いますが、
単一のZabbix Serverで監視するために各リソースグループにZabbix Proxyを構築
して統合監視するのもスマートかなと思います。
また、バックエンドのDBをAzureのDBサービスやAzureCLIを介して故障履歴はログ収集は
Azureのストレージサービスを利用するということも今後試してみたいと思います。

Be the first to comment

コメント投稿

Your email address will not be published.


*