ZabbixからSendGrid経由でメール送信してみた

 

今回は、Azure上に構築したZabbixサーバから、Send Grid経由でメール送信を行ってみました。

なお、Send Gridアカウントの作成については、こちらの記事を参照ください。

AzureでSend Gridのアカウントを作ってみた

なお、AzureではSMTP25番ポートを利用した通信(インターネット向け)が禁止されています。Azure上からのメール送信はSend Grid等の利用が推奨されております。

https://docs.microsoft.com/ja-jp/azure/virtual-network/troubleshoot-outbound-smtp-connectivity

1.Azure ネットワークセキュリティグループの許可設定を行う。

SendGridを利用するにあたって、NSG(ネットワークセキュリティグループ)の許可設定を行います。まずはSendGrid様のサイトで必要な情報を確認します。

https://support.sendgrid.kke.co.jp/hc/ja/articles/204187885-SMTPの接続情報を教えてください-

以下のように記載があります。

  • サーバ名    :smtp.sendgrid.net
  • ポート番号   :25 / 465 / 587 / 2525

平文もしくはTLSを利用する場合:25、587および2525(587を推奨)
SSLを利用する場合:465 

送信先をInterNetで開けても良いのですが、今回は送信先サーバとなるsmtp,sendgrid.netのみ許可としてみます。NSGはFQDNでの許可設定が出来ませんので、nslookupコマンドでIPを調べます。

Windows端末のコマンドプロンプトで、下記の通りnslookupコマンドでsmtp.sendgrid.netのIPアドレスを確認します。

確認したIPアドレスをNSGの許可設定します。メール送信する(今回はZabbixサーバのNSG)を確認します。送信のセキュリティ規則で、宛先のIPアドレスを先ほど確認した入力します。

ポート番号は、今回はSSLを利用しますので、465を利用します。

追加をクリックしてNSGの設定は完了です。

2.Zabbix上で、Mail送信設定を行う。

以前作成したZabbixサーバを利用して、メール送信確認を行ってみました。Zabbixサーバの構築手順は下記記事を見て頂ければと。

Zabbix5.0をAzure Database for MariaDB を使って構築してみた

Zabbixのログインし、メディアタイプを選択します。

メディアタイプが表示されますので、下記のEmailをクリックします。

Emailをクリックすると、設定画面が表示されますので設定を行います。

    • 名前;適時設定下さい(デフォルトのEmailのままで問題ないです。)
    • タイプ:メール
    • SMTPサーバ:smtp.sendgrid.net
    • SMTPサーバポート:465(今回はSSL利用する為)
    • 送信元メールアドレス;適時設定下さい。
    • 接続セキュリティ:SSL/TLS
    • 認証:ユーザー名とパスワード
    • ユーザー名:SendGridのユーザー名
    • パスワード:SendGridのパスワード

更新ボタンをクリックすると、設定が完了します。

これで設定が終わりましたので、テストメール送信を行います。メディアタイプの画面でテストの項目が表示されていますので、こちらをクリックします。

クリックするとテスト画面が表示されます。送信先のメールアドレスを設定しテストボタンをクリックします。

テストメールが送信されますので、メールソフト側で受信される事が確認されたら終わりです。

※なお、逆引き設定等がされてない状態ですので、メール受信環境によっては受信できないケースがります。この点は注意して下さい。

 

Zabbix 5.0をソースからインストールしてみた

 

前回、Azure環境上に、Zabbix 5.0をセットアップしてみたのですが、Azure Database for MariaDBとの接続が暗号化できませんでした。

【実際に出力されたエラーメッセージ】

“DBTLSConnect” configuration parameter cannot be used: Zabbix server was compiled

エラーメッセージから推測するにZabbix5.0をソースからコンパイルしてセットアップする必要がありそうという事でZabbix5.0 をソースからコンパイルしてセットアップしてみました。

今回構築したシステム環境は前回と同様に下記の通りになります。

    • ZabbixサーバはAzure VMを利用 (Market Placeからデプロイしたものを利用)
    • ZabbixサーバのOSはCentOS 7.7を利用
    • DBはAzure Database for MariaDB を利用
    • Zabbixは5.01を利用

今回は、前回同様に、Azure VMやOSのセットアップやAzure Database for MariaDBのセットアップが終了している前提で作業を進めます。SElinuxやFirewalldは手順簡略化のため、停止している前提で作業を進めています。

Azure Database for MariaDBの接続設定等は、前回の記事(3.Azure Database for MariaDBでZabbixを利用する為の設定を行う)を参考願います。

Zabbix5.0をAzure Database for MariaDB を使って構築してみた

また、Azure Database for MariaDBの構築は、以下の記事に纏めておりますので、こちらを参照願います。

Azure Database for MariaDBを作ってみた

Azure Database for MariaDBに接続してみた

1.パッケージのインストール作業

まず、最初にパッケージのインストール作業を実施します。

環境に合わせて適時修正頂ければと思います。バージョンその時の最新の情報を確認して適時修正して下さい。

セットアップするユーザーの権限に応じて、SUDOを利用してセットアップを実施して下さい。

(1)最初にPHP関連とhttpdのパッケージをyumを使ってインストールします。コンパイル時やZabbixセットアップ時に要求されたパッケージを纏めてインストールしています。

#PHP関連のパッケージをインストールします。SCLを利用しています。

[user@server ]#yum -y install centos-release-scl
[user@server ]#yum -y install rh-php72

[user@server ]#yum install -y rh-php72-php-ldap rh-php72-php-bcmath rh-php72-php-fpm rh-php72-php-mysqlnd rh-php72-php-gd rh-php72-php-mbstring

#httpdのパッケージをインストールします。

[user@server ]#yum -y install httpd

(2)次にMySQL(MariaDB)関連のパッケージをインストールします。

#MariaDBクライアントをインストールします。最初にリポジトリを登録しています。

[user@server ]#curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
[user@server ]#vi /etc/yum.repos.d/MariaDB.repo

#新規にファイルが作成されますので、以下の内容を貼り付けて保存します。

[mariadb]
name = MariaDB
baseurl=http://yum.mariadb.org/10.3/centos7-amd64
# alternative: baseurl=http://archive.mariadb.org/mariadb-10.3.14/yum/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

[user@server ]#yum -y install MariaDB-client MariaDB-shared mariadb-devel

(3)Zabbixコンパイル時に必要となるパッケージをインストールします。

Zabbixコンパイル時のオプションによって必要となるパッケージが異なります。コンパイル時にエラーとなった場合は追加で必要なパッケージをインストールしてください。(対象VMにOpenSSL等が入ってない場合は別途パッケージ追加して下さい。)

#パッケージをインストールする際に必要なので

[user@server ]#yum -y install epel-release

#コンパイル自体に必要になので

[user@server ]#yum -y install gcc
[user@server ]#yum -y install gcc-c++

#コンパイル時のオプションをつけると必要になるので

[user@server ]#yum -y install net-snmp net-snmp-devel
[user@server ]#yum -y install libcurl-devel
[user@server ]#yum install -y libssh2*
[user@server ]#yum -y install OpenIPMI-tools OpenIPMI-devel
[user@server ]#yum -y install libevent-devel
[user@server ]#yum -y install libxml2-devel
[user@server ]#yum -y install openldap-devel

(4)goのセットアップを行います。

yumでもgoのインストール可能なのですが、実際にyumを使ってインストールするとzabbixコンパイル時にエラーとなります。この事象は既知のバグらしくサイトからダウンロードして利用します。

#パッケージをダウンロードします

[user@server ]#wget https://dl.google.com/go/go1.14.4.linux-amd64.tar.gz

#/usr/localにgolangを置く

[user@server ]#tar -C /usr/local -xzf go1.14.4.linux-amd64.tar.gz

#PATHを通す。永続化させる為にファイルにも書く。

[user@server ]#export PATH=$PATH:/usr/local/go/bin

[user@server ]#vi /etc/profile.d/go.sh

#/bin/bash
export GOROOT=/usr/local/go
export GOPATH=$GOROOT/work
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

 

.Zabbixをソースからコンパイルしてインストールする

Zabbixをダウンロードしてコンパイルします。今回作業は/usr/local/srcで実施しています。

#Zabbixをダウンロードする

[user@server ]#wget https://cdn.zabbix.com/zabbix/sources/stable/5.0/zabbix-5.0.1.tar.gz

[user@server ]#tar xzvf zabbix-5.0.1.tar.gz

[user@server ]#cd zabbix-5.0.1/

#Zabbixユーザーを作成する

[user@server ]#mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix

[user@server ]#groupadd –system zabbix
[user@server ]#useradd –system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c “Zabbix Monitoring System” zabbix

[user@server ]#chown zabbix:zabbix /usr/lib/zabbix

#Zabbixをコンパイルする

[user@server ]#./configure –enable-server –enable-agent –enable-agent2 –with-mysql=/usr/bin/mariadb_config –with-openssl –with-net-snmp –with-openipmi –with-libcurl –with-libxml2 –with-ssh2 –with-ldap
[user@server ]#make

[user@server ]#make install

エラーが発生せずに終了したら、コンパイル終了です。

4.Azure Database for MariaDBでZabbixを利用する為の設定を行う

前回と同様に設定を行います。DBの文字コード設定とMariaDB上にZabbixユーザーを行います。

Azure Database for MariaDBの画面で、サーバパラメータを選択します。下記画面が表示されます。

以下の通りcharacter_set_serverにUTF8、collation_serverにUTF8_BINを選択します。

設定が終わったら保存します。

次にデータベースとDBユーザーを作成します。DBユーザーはZabbixで作成しています。DBユーザーを@Localhostで作成すると外部からアクセスできないので、今回はZabbixのサーバのグローバルIPを設定します。(環境に応じて変更してください。)

#DBログイン時にAzure Database for MariaDBサーバ管理者のパスワードが必要になりますので適時入力してください。

[user@server ]#mysql -h サーバ名 -u サーバ管理者名 -p –ssl

MySQL [(none)]>create database zabbix character set utf8 collate utf8_bin;

MySQL [(none)]> Grant all privileges on zabbix.* to zabbix@アクセス元のIP identified by ‘パスワード’;

次に、Zabbixの初期設定を行うSQLを流します。

#Zabbixを解凍したディレクトリに移動します。解凍されたファイル内のdatabase/mysqlに、実行すべきsqlが配置されています。

[user@server ]#cd /usr/local/src

[user@server ]#cd zabbix-5.0.1/database/mysql

#パスワードが必要になりますので適時入力してください。

[user@server ]#mysql -h サーバ名 -u zabbix zabbix -p –ssl < database/mysql/schema.sql

[user@server ]#mysql -h サーバ名 -u zabbix zabbix -p –ssl < database/mysql/images.sql

[user@server ]#mysql -h サーバ名u zabbix zabbix -p –ssl < database/mysql/data.sql

[user@server ]#mysql -h サーバ名 -u -u zabbix zabbix -p –ssl < database/mysql/double.sql

5.zabbixの設定ファイルを編集をする

rpmを使ってインストールした時とはファイルの場所が異なります。

【ソース】/usr/local/sbin/zabbix_server

【rpm】/usr/sbin/zabbix_server

【ソース】/usr/local/etc/zabbix_server.conf

【rpm】/etc/zabbix/zabbix_server.conf

という感じです。また、ディレクトリも自分で作成する必要があります。

今回はrpmと同じような構成になるように、実体のファイルをコピーする形で実施しています。

なお、シンボリックリンクや、設定ファイルをソースでコンパイルした場合に合わせて編集する形が一般的かと思います。

(1)Zabbixで利用するディレクトリを作成します。

#Zabbixで利用するディレクトリを作成する(今回はrpm利用時に合わせてみてます。環境に合わせて修正して下さい。)

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /var/log/zabbix
[user@server ]#chown zabbix:zabbix /var/log/zabbix

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /var/run/zabbix
[user@server ]#chown zabbix:zabbix /var/run/zabbix

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /etc/zabbix
[user@server ]#chown zabbix:zabbix /etc/zabbix

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /usr/share/zabbix
[user@server ]#chown zabbix:zabbix /usr/share/zabbix

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /etc/zabbix/web
[user@server ]#chown zabbix:zabbix /etc/zabbix/web

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /var/log/snmptrap
[user@server ]#chown zabbix:zabbix /var/log/snmptrap

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /usr/lib/zabbix/alertscripts/
[user@server ]#chown zabbix:zabbix /usr/lib/zabbix/alertscripts/

[user@server ]#mkdir -m u=rwx,g=rx,o= -p /usr/lib/zabbix/externalscripts/
[user@server ]#chown zabbix:zabbix /usr/lib/zabbix/externalscripts/

(2)再起動後/var/run配下のディレクトリが削除されてしまうので、その対応を行います。

#/usr/lib/tmpfiles.dにConfファイルを新規作成する

[user@server ]#vi /usr/lib/tmpfiles.d/zabbix-server.conf

d /run/zabbix 0755 zabbix zabbix – –

[user@server ]#vi /usr/lib/tmpfiles.d/zabbix-agent.conf

d /run/zabbix 0755 zabbix zabbix – –

(3)Zabbix関連の設定ファイルやモジュールのコピーを行います。

#Zabbixモジュールをコピーする

[user@server ]#cp -rfp /usr/local/sbin/zabbix_* /usr/sbin/

#ZabbixのConfをコピーする

[user@server ]#cp -rfp /usr/local/etc/zabbix_* /etc/zabbix/

#ZabbixのUIをコピーする(UIは解凍したディレクトリのui配下にあります。今回は/var/www/html/zabbixではなくAliaseを利用しています)

[user@server ]#cp -rfp /usr/local/src/zabbix-5.0.1/ui/* /usr/share/zabbix/

#zabbix.conf.phpをコピーする(rpm利用時と違う場所になります)

[user@server ]#cp -p /usr/share/zabbix/conf/zabbix.conf.php.example /usr/share/zabbix/conf/zabbix.conf.php

(4)Zabbix用のhttpd設定ファイルの新規作成をします。

#httpdの設定を行う

[user@server ]#vi /etc/httpd/conf.d/zabbix.conf

#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

<Directory “/usr/share/zabbix”>
Options FollowSymLinks
AllowOverride None
Require all granted

<IfModule dir_module>
DirectoryIndex index.php
</IfModule>

<FilesMatch \.(php|phar)$>
SetHandler “proxy:unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock|fcgi://localhost”
</FilesMatch>
</Directory>

<Directory “/usr/share/zabbix/conf”>
Require all denied
</Directory>

<Directory “/usr/share/zabbix/app”>
Require all denied
</Directory>

<Directory “/usr/share/zabbix/include”>
Require all denied
</Directory>

<Directory “/usr/share/zabbix/local”>
Require all denied
</Directory>

(5)zabbix_server.confの設定します。DB接続やLog等のディレクトリの設定を行います。

#設定ファイルのバックアップを取得してから設定します。

[user@server ]#cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.`date “+%Y%m%d”`
[user@server ]# vi /etc/zabbix/zabbix_server.conf

#設定変更箇所のみ記載すると、こんな感じになります。(Log設定等はZabbixセットアップのデフォルトにしています。)

LogFile=/var/log/zabbix/zabbix_server.log

LogFileSize=0

PidFile=/var/run/zabbix/zabbix_server.pid

SocketDir=/var/run/zabbix

DBHost=サーバ名(XXX.mariadb.database.azure.com)

DBUser=ユーザ名(zabbix@XXX)

DBPassword=パスワード(DB上に作成したZabbixユーザのパスワード)

DBPort=3306

SNMPTrapperFile=/var/log/snmptrap/snmptrap.log

AlertScriptsPath=/usr/lib/zabbix/alertscripts

ExternalScripts=/usr/lib/zabbix/externalscripts

DBTLSConnect= required

(6)zabbix_agentd.confの設定します。(今回はzabbix_agent2.confは割愛します。)

#設定ファイルのバックアップを取得してから設定します。

[user@server ]#cp -p /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.`date “+%Y%m%d”`
[user@server ]# vi /etc/zabbix/zabbix_agentd.conf

#設定変更箇所のみ記載すると、こんな感じになります。(Log設定等はZabbixセットアップのデフォルトにしています。)

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=0

Include=/etc/zabbix/zabbix_agentd.d/*.conf

(7)zabbix用のPHPファイルを新規作成します。

[user@server ]# vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

[zabbix]
user = apache
group = apache

listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/rh/rh-php72/lib/php/session/

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Tokyo

6.zabbix_server、zabbix_agentdをサービス登録します。

(1)zabbix_serverをサービス登録します。

#zabbix_serverのサービス登録を実施します

[user@server ]# cd /usr/lib/systemd/system/

[user@server ]# vi zabbix-server.service

[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=mysql.service
After=mysqld.service
After=mariadb.service
After=postgresql.service

[Service]
Environment=”CONFFILE=/etc/zabbix/zabbix_server.conf”
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_server.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target

(2)zabbix_agentdをサービス登録します。

#zabbix_agentdのサービス登録を実施します

[user@server ]# cd /usr/lib/systemd/system/

[user@server ]# vi zabbix-agent.service

[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target

[Service]
Environment=”CONFFILE=/etc/zabbix/zabbix_agentd.conf”
EnvironmentFile=-/etc/sysconfig/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agentd.pid
KillMode=control-group
ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

7.サービスを起動する

(1)zabbixに関するサービスの起動設定を行います。

#Zabbixサーバに関するサービスを起動します。

[user@server ]# systemctl start zabbix-agent zabbix-server rh-php72-php-fpm httpd
[user@server ]# systemctl enable zabbix-agent zabbix-server rh-php72-php-fpm httpd

.Zabbixにアクセスして設定をする

zabbix Serverにアクセスした設定を行います。初期設定では下記の通りになっています。

    • アクセス先URL : http://ZabbixサーバのIP/zabbix/

(1)URLにアクセスすると下記画面が表示されます。

(2)Next Stepをクリックすると、プレチェックの画面が表示されます。すべてOKであればNext Stepをクリックします。

(3)Next Stepをクリックすると、DBコネクション設定が表示されます。以下の値を入力します。TLS encryptionはチェックを入れてください。これによりDB接続が暗号化されます。

    • Database host : サーバ名(XXX.mariadb.database.azure.com
    • User : ユーザ名(zabbix@XXX)
    • パスワード : パスワード(DB上に作成したZabbixユーザのパスワード)
    • TLS encryption:チェックを入れます

(4)Zabbix server details、Pre-instlation Summary画面はそのまま変更せずに、Next Stepをクリックします。完了するとログイン画面が表示されます。

(5)ログイン画面が表示されたら、初期ユーザーでログインして下さい。

    • ユーザーID ; Admin
    • パスワード : zabbix

(6)ログインが成功すると下記画面が表示されます。

Zabbix server is runningが”Yes”となっていれば正常起動しています。(画面が表示されていてもここのがNoの場合は正常動作していません。)

 

9.セットアップがエラーになった場合

DBの接続関連でエラーになった場合、以下のファイルを確認してみて下さい。DB[‘VERIFY_HOST’]やDB接続情報周りを確認します。

#zabbix_agentdのサービス登録を実施します

[user@server ]# vi zabbix-agent.service

<?php
// Zabbix GUI configuration file.

$DB[‘TYPE’] = ‘MYSQL’;
$DB[‘SERVER’] = ‘サーバ名(XXX.mariadb.database.azure.com)‘;
$DB[‘PORT’] = ‘3306’;
$DB[‘DATABASE’] = ‘zabbix’;
$DB[‘USER’] = ‘ユーザ名(zabbix@XXX)‘;
$DB[‘PASSWORD’] = ‘パスワード(DB上に作成したZabbixユーザのパスワード)‘;

// Schema name. Used for PostgreSQL.
$DB[‘SCHEMA’] = ”;

// Used for TLS connection.
$DB[‘ENCRYPTION’] = True;
$DB[‘KEY_FILE’] = ”;
$DB[‘CERT_FILE’] = ”;
$DB[‘CA_FILE’] = ”;
$DB[‘VERIFY_HOST’] = false;
$DB[‘CIPHER_LIST’] = ”;

~以下略~

 

今回はユーザー、設定、暗号化を含む多くの設定をデフォルトで作成しています。環境やセキュリティ等を考えて適時設定は変更するようにして下さい。



Zabbix5.0をAzure Database for MariaDB を使って構築してみた

 

今回は、Azure環境上に、Zabbix5.0をセットアップしてみました。Cent OS 7.7のAzure VMとAzure Database for MariaDB(10.3)を組み合わせて構築してみました。

今回構築したシステム環境は下記の通りになります。

    • ZabbixサーバはAzure VMを利用 (Market Placeからデプロイしたものを利用)
    • ZabbixサーバのOSはCentOS 7.7を利用
    • DBはAzure Database for MariaDB を利用
    • Zabbixは5.01を利用

1.作業にあたっての事前準備

今回は、以下の事前準備が完了している前提で作業を進めます。

    • Zabbixサーバ用のAzure VM(CentOS 7.7)はすでにデプロイ済み。
    • Azure Database for MariaDBはすべてデプロイ済みである。
    • Azure Database for MariaDBのSSL強制は無効化しておく。
    • SElinuxやFirewalldは簡略化のため、停止している前提で作業を進めます。

※Azure Database for MariaDBへの接続は暗号化せずに実施しています。Zabbix5の設定ファイルのDB接続暗号化を設定してみたのですが下記例のようなエラーとなりました。どうもソースからインストールする必要がありそうです。

“DBTLSConnect” configuration parameter cannot be used: Zabbix server was compiled

[Z3001] connection to database ‘DB名’ failed: [9002] SSL connection is required. Please specify SSL options and retry.

このエラーを解決する為にソースからインストールした記事は以下に乗せています。

Zabbix 5.0をソースからインストールしてみた

 

なお、Azure Database for MariaDBの構築は、以下の記事に纏めておりますので、こちらを参照願います。

Azure Database for MariaDBを作ってみた

Azure Database for MariaDBに接続してみた

.パッケージのインストール作業

まず、最初にパッケージのインストール作業を実施します。今回セットアップが必要なパッケージは下記の通りになります。(httpdが入ってない場合は併せてインストールしてください)

    • PHP7.2 (Zabbix5はPHP7.2以上が要求要件になっています。)
    • Zabbix関連のパッケージ(今回は5.01を利用しています。Zabbix Agentは1を利用しています。)
    • MariaDB関連のパッケージ (DB自体はAzure Database for MariaDBを利用しますので、Clientだけをインストールします。)

※セットアップするユーザーの権限に応じて、SUDOを利用してセットアップを実施して下さい。(バージョンその時の最新の情報を確認して適時修正して下さい)

#PHP関連のパッケージをインストールします。SCLを利用しています。

[user@server ]#yum -y install centos-release-scl
[user@server ]#yum -y install rh-php73  

#Zabbix関連のパッケージをインストールします。 最初にCent OS 7のリポジトリを登録します。

[user@server ]#yum -y install https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[user@server ]#yum -y install –enablerepo=zabbix-frontend zabbix-server-mysql zabbix-agent zabbix-web zabbix-web-deps-scl zabbix-web-mysql-scl zabbix-apache-conf-scl zabbix-web-japanese  

#MariaDBクライアントをインストールします。最初にリポジトリを登録しています。

[user@server ]#curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | bash
[user@server ]#vi /etc/yum.repos.d/MariaDB.repo 

#新規にファイルが作成されますので、以下の内容を貼り付けて保存します。

[mariadb]
name = MariaDB-10.3.14
baseurl=http://yum.mariadb.org/10.3.14/centos7-amd64
# alternative: baseurl=http://archive.mariadb.org/mariadb-10.3.14/yum/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

[user@server ]#yum -y install MariaDB-client

これでパッケージのインストール作業は終了です。

.PHPの設定を行う

PHPのTimeZoneをAsia/Tokyoにします。(PATHはセットアップしたバージョンに合わせて適時修正して下さい)

#PHPの設定を行います。

[user@server ]#cp -p/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf.`date “+%Y%m%d”`
[user@server ]#vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

#24行目にタイムゾーンの指定がありますので、コメントを外してAsia/Tokyoとします。

; php_value[date.timezone] = Europe/Riga

php_value[date.timezone] = Asia/Tokyo

 

.Azure Database for MariaDBでZabbixを利用する為の設定を行う

最初にAzure PortalからAzure Database for MariaDBの接続設定を行います。

Azure VMがAzure Database for MariaDBにアクセスするグローバルIPを調べます。

次に、Azure Database for MariaDBの接続のセキュリティで該当のグローバルIPからのアクセスを許可します。ファイアウォールの規則の開始IPと終了IPに上記IPを設定し、名前を付けて保存します。

次に、DBの文字コードの設定を行います。

Azure Database for MariaDBの画面で、サーバパラメータを選択します。

下記画面が表示されます。

以下の通りcharacter_set_serverにUTF8、collation_serverにUTF8_BINを選択します。

設定が終わったら保存します。

4.MariaDBにZabbixを利用する為の設定を行う

Azure Database for MariaDBの設定が終わったら、次にDB自体にZabbixを利用する為の設定を行います。

サーバ名、サーバ管理者名はAzure Database for MariaDBの概要で確認します。

確認した値で、DBサーバに接続し、データベースとDBユーザーを作成します。DBユーザーはZabbixで作成しています。DBユーザーを@Localhostで作成すると外部からアクセスできないので、今回はZabbixをインストールしたサーバが接続に行くIPを設定します。例えばZabbixサーバのグローバルIPが0.0.0.0だとすると、zabbix@0.0.0.0で作成します。DBユーザーのパスワードは適時設定して下さい。

#DBログイン時にAzure Database for MariaDBサーバ管理者のパスワードが必要になりますので適時入力してください。

[user@server ]#mysql -h サーバ名 -u サーバ管理者名 -p –ssl

MySQL [(none)]>create database zabbix character set utf8 collate utf8_bin;

MySQL [(none)]> all privileges on zabbix.* to zabbix@アクセス元のIP identified by ‘パスワード’;

 

次に、Zabbixの初期設定を行うSQLを流します。(PATHはセットアップしたバージョンに合わせて適時修正して下さい)

[user@server ]#cd /usr/share/doc/zabbix-server-mysql-5.0.1/

#コマンド実行時に先ほど設定したZabbixユーザ’(DB上)のパスワードが必要になりますので適時入力してください。

[user@server ]#zcat ./create.sql.gz |mysql -h サーバ名 -u -u zabbix zabbix -p –ssl

 

 

5.zabbix_server.confを設定する

zabbix_server.confにDB接続のための設定します。設定が完了したら保存します。

#設定ファイルのバックアップを取得してから設定します。

[user@server ]#cp -p /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf.`date “+%Y%m%d”`
[user@server ]# vi /etc/zabbix/zabbix_server.conf

#設定箇所は、DBHost、DBUser、DBPassword3か所です。

DBHost=サーバ名(XXX.mariadb.database.azure.com)

DBUser=ユーザ名(zabbix@XXX)

DBPassword=パスワード(DB上に作成したZabbixユーザのパスワード)

6.サービスを起動する

zabbix Serverに関するサービスの起動設定を行います。

#Zabbixサーバに関するサービスを起動します。

[user@server ]# systemctl start zabbix-agent zabbix-server rh-php72-php-fpm httpd
[user@server ]# systemctl enable zabbix-agent zabbix-server rh-php72-php-fpm httpd

7.Zabbixにアクセスして設定をする

zabbix Serverにアクセスした設定を行います。初期設定では下記の通りになっています。

    • アクセス先URL : http://ZabbixサーバのIP/zabbix/

URLにアクセスすると下記画面が表示されます。

Next Stepをクリックすると、プレチェックの画面が表示されます。すべてOKであればNext Stepをクリックします。

Next Stepをクリックすると、DBコネクション設定が表示されます。以下の値を入力します。

    • Database host : サーバ名(XXX.mariadb.database.azure.com
    • User : ユーザ名(zabbix@XXX)
    • パスワード : パスワード(DB上に作成したZabbixユーザのパスワード)

Zabbix server details、Pre-instlation Summary画面はそのまま変更せずに、Next Stepをクリックします。そうするとインストールが始まり、完了するとログイン画面が表示されます。

ログイン画面が表示されたら、初期ユーザーでログインして下さい。

    • ユーザーID ; Admin
    • パスワード : zabbix

ログインが成功すると下記画面が表示されます。Zabbix server is runningが”Yes”となっていれば正常起動しています。(画面が表示されていてもここのがNoの場合は正常動作していません。)

 

今回は、初期セットアップのみを試してみております。初期パスワードの変更や日本語設定等をこの後行っていく必要があります。今後設定を色々試してみたい所です。