状況
現状使用しているZabbixサーバとZabbix用RDSを東京リージョンにリプレースする。
EC2とRDSを引っ越しするだけならAMIやスナップショットのコピーで済むが、
折角だからEC2, RDSをスペックアップする。
既存のZabbixサーバを構築した前任者の方はもういらっしゃらず、設定内容の詳細がありませんでした。
備忘録+同じような事をしようとしている方の助けになればと思い投稿します。
※ この記事では監視先サーバの zabbix agent や fluentd の設定には触れません
作成する環境
- OS : AWS Red Hat Enterprise Linux Server release 7.5 (Maipo)
- DB : AWS RDS MySQL 5.6.40
- Zabbixサーバ:3.0 LTS
EC2インスタンスの作成手順
yumのアップデート
$ sudo yum update
$ sudo reboot
言語設定
$ sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime
$ sudo vi /etc/locale.conf
LANG=ja_JP.UTF-8
// サーバーを再起動
$ sudo reboot
インストールするZabbixのリポジトリを登録
$ sudo yum install https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
$ sudo yum install https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
登録したリポジトリを有効化
sudo yum-config-manager --enable rhui-REGION-rhel-server-optional
Zibbix関連のパッケージをインストール
$ sudo yum install zabbix-server-mysql zabbix-web-mysql zabbix-web-japanese zabbix-agent php-mbstring mysql mysql-devel mysql-server mysql-utilities zabbix-get
Zabbixサーバ上のMySQLの設定
// MySQLサーバを起動
$ sudo systemctl enable mysqld
$ sudo systemctl start mysqld
// 自動生成されたパスワードを確認 (末尾に表示される文字列が自動生成されたパスワード)
$ cat /var/log/mysqld.log | grep 'password is generated'
2018-09-16T11:09:09.021670Z 1 [Note] A temporary password is generated for root@localhost: >s7%da.rdq5U
// ローカルのMySQLにログイン
$ mysql -uroot --password='>s7%da.rdq5U'
// 新規パスワードを登録
SET PASSWORD = 'Password@1';
// データベースを作成
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by 'Password@1';
flush privileges;
quit
// Zabbix用のテーブル作成
$ zcat /usr/share/doc/zabbix-server-mysql-3.0.22/create.sql.gz | mysql -uroot --password='Password@1' zabbix
SELinuxの制限を解除
$ sudo setsebool -P httpd_can_connect_zabbix on
$ sudo setsebool -P zabbix_can_network on
PHPのタイムゾーン設定
$ sudo vi /etc/httpd/conf.d/zabbix.conf
// コメントアウトを外して値を東京に変更
php_value date.timezone Asia/Tokyo
yumのアップデートが掛からないようにリポジトリを無効化
$ sudo vi /etc/yum.repos.d/zabbix.repo
[zabbix]
enabled=0
[zabbix-non-supported]
enabled=0
各サービスの開始・自動起動デーモンを有効化
// zabbix-server
$ sudo systemctl enable zabbix-server
$ sudo systemctl start zabbix-server
// zabbix-agent
$ sudo systemctl enable zabbix-agent
$ sudo systemctl start zabbix-agent
// httpd
$ sudo systemctl enable httpd
$ sudo systemctl start httpd
管理画面にアクセス
http://13.xxx.43.xxx/zabbix/
インスタンスのグローバルIPの末尾に「/zabbix」を追加しアクセスする
アクセスできない場合はセキュリティグループを確認してみましょう
「Next Step」で次の画面へ
全ての項目が「OK」になっている事を確認して「Next Step」で次の画面へ
ローカルDBに設定した下記の内容を入力し「Next Step」
項目 | 値 |
---|---|
Database host | localhost |
Database port | 0 |
Database name | zabbix |
User | zabbix |
Password | Password@1 |
設定が完了するとZabbixサーバが参照するDBの情報を設定する /etc/zabbix/zabbix_server.conf が生成される
Zabbix管理画面ログイン後
下部に 「 Zabbixサーバーが起動していません(画面のリフレッシュを行ってステータスを再確認してください) 」と表示される場合
→ /etc/zabbix/web/zabbix.conf.php の$ZBX_SERVERの値が'localhost'になっている
→ IPアドレスで記載する必要がある
参考:https://www.codelab.jp/blog/?p=1149
RDSを作成
項目 | 値 |
---|---|
インスタンス名 | zabbixrds |
エンドポイント | zabbixrds.xxxxx.ap-northeast-1.rds.amazonaws.com |
DB名 | zabbix |
ユーザ名 | zabbix_master |
PASS | PASSWORD |
EC2経由で新RDSへログインし初期設定
// RDSのMySQLにログイン
$ mysql -h zabbixrds.xxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 -u zabbix_master -p
// DB情報を登録
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix_master@localhost identified by 'PASSWORD';
flush privileges;
quit
旧RDSからデータをエクスポートする
EC2経由で旧RDSのMySQLへログインし下記コマンドを実行
// エクスポート
$ mysqldump -u 旧RDSのユーザ名 -p -h old_rds.xxxxx.ap-southeast-1.rds.amazonaws.com -P 3306 --single-transaction --routines zabbixdb > /tmp/dump.sql
新RDSに上記のデータをインポート
EC2経由で実行
// 新RDSのMySQLにログイン
$ mysql -u zabbix_master -p -h zabbixrds.xxxxx.ap-northeast-1.rds.amazonaws.com -P 3306 zabbix
// データをインポート
source /tmp/dump.sql
参照するDBをRDSへ変更
Zabbixサーバが参照するDBの設定
$sudo vi /etc/zabbix/zabbix_server.conf
DBHost=zabbixrds.xxxxx.ap-northeast-1.rds.amazonaws.com
DBName=zabbix
DBUser=zabbix_master
DBPassword=PASSWORD
WEB(管理画面)が参照するDBの設定
$ sudo vi /etc/zabbix/web/zabbix.conf.php
$DB['SERVER'] = 'zabbixrds.xxxxx.ap-northeast-1.rds.amazonaws.com';
$DB['PORT'] = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix_master';
$DB['PASSWORD'] = 'PASSWORD';
SELinuxを無効化する (無効化しないとRDSとの接続ができない)
$ vi /etc/selinux/config
SELINUX=disabled
$ reboot
EC2のセキュリティグループにRDSからの接続を追加
タイプ | プロトコル | ポート範囲 | ソース | 備考 |
---|---|---|---|---|
HTTP | TCP | 80 | 54.xxx.220.xxx/32(EC2のグローバルIP) | EC2用 |
カスタムTCPルール | TCP | 10050 | 54.xxx.220.xxx/32(EC2のグローバルIP) | zabbixポート用 |
MYSQL/Aurora | TCP | 3306 | 54.xxx.220.xxx/32(EC2のグローバルIP) | RDS用 |
カスタムTCPルール | TCP | 24224 | (監視先サーバのグローバルIP) | fluentd用 |