へっぽこインフラエンジニアのブログ

IT業界の最底辺からこんにちは

AWS EC2上でZabbixサーバを構築してみた(Zabbix 5.0)

f:id:fujison-xyz:20200517172149p:plain

CentOS 7 + AWS EC2 環境でのZabbix 5.0の構築方法をご紹介!!!

物理サーバにZabbixはもう古い!と思う...

◆ 目次 ◆

1. EC2インスタンスを作成する

インスタンスの作成方法はググってください。
私は以下のように作成した

・CentOS 7
・t2.micro
・セキュリティグループ:アウトバウンドでSSHとHTTPを0.0.0.0/0に開放

その他はデフォルト値で。

ElasticIPの割り当ても忘れずに!
(グローバルIPが再起動の度に変わってしまいます!)

2. EC2インスタンスにSSH接続する

作成時にダウンロードした秘密鍵を使って接続する。

CentOSの場合はcentosユーザでログイン。
※ec2-userではないよ!

3. Zabbixをインストール

※紹介する手順は、一部を除き公式の手順 のパクリ と同じ。
https://www.zabbix.com/jp/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=apache

ログイン後「sudo su -」でルートユーザに切り替えます。

1. リポジトリのダウンロード
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all

※最新のリポジトリURLは以下から確認する
Zabbix Official Repository

2. Zabbix サーバーとエージェントのインストール
yum -y install zabbix-server-mysql zabbix-agent
3. Zabbix frontend のインストール
yum -y install centos-release-scl
vi /etc/yum.repos.d/zabbix.repo

↑ [zabbix-frontend]内の enabled=0 を、enabled=1 に変更する

yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
4. MariaDBのインストール
yum -y install mariadb mariadb-server
systemctl start mariadb
systemctl enable mariadb

mysql_secure_installation
    Enter current password for root (enter for none): ← 入力せずEnter
    Set root password? [Y/n] ← Yを入力してEnter
    New password: ← DBのrootパスワードを設定
    Re-enter new password: ← もう一度パスワードを入力
※その後も色々聞かれるが、全て「Y」を入力する
5. DB周りの設定
mysql -u root -p
    Enter password: ← 先ほど設定したパスワードを入力する

ここでプロンプトが「MariaDB [(none)]>」に変化している。

create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by 'DBユーザのパスワード';
grant all privileges on zabbix.* to zabbix@localhost;
quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
    Enter password: → 設定したDBユーザのパスワードを入力する
6. Zabbixの設定ファイルを編集する
vi /etc/zabbix/zabbix_server.conf

↑ 「# DBPassword=」を「DBPassword=DBユーザのパスワード」に変更

vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

↑ 「; php_value[date.timezone] = Europe/Riga」を「php_value[date.timezone] = Asia/Tokyo」に変更

7. サービスの起動・有効化
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

4. WEB画面での設定

WEBブラウザで「http://サーバのIPアドレス/zabbix」へアクセスする

「Welcome」画面は「Next step」で飛ばす。
「Check of pre-requisites」画面も飛ばす(サーバに問題がある場合は飛ばせない)。
「Configure DB connection」画面で「DBユーザのパスワード」を入力
後の画面は適当にNextをクリックしていく。

ログイン画面まで進んだら
Username:Admin
Password:zabbix
でログインする

5. Adminパスワードの変更

画面左下「User settings」→「Change password」とクリックし、Adminパスワードを変更する

6. ホーム画面で「Zabbix server is running」が「No」と表示される問題

f:id:fujison-xyz:20200517170913p:plain
SELinuxを無効化すると直る。
※無効化したくない場合はググって解決方法を調べる。

vi /etc/selinux/config

↑ 「SELINUX=enforcing」を「SELINUX=disabled」に変更する

shutdown -r now

でサーバを再起動する。

Zabbix server is runningがYesになっている。

終わり

構築手順は以上です。

よいZabbixライフを!

Cisco892とAWSをサイト間VPNで常時接続してみた

サイト間VPNを接続すると、各サイトからお互いにプライベートIPで接続できるようになる。

VPC内もローカルネットワークのようにアクセス可能なのですごく楽。ただし料金はかかる。

今回の環境

・ルータのグローバルIPは固定
・IOSバージョン:15.0(1)M3
・サブネットはPublicとProtectedの2つ(何個でもOK)
・各IPアドレスは以下の通り

Cisco 892 - WAN側 xxx.xxx.xxx.xxx
Cisco 892 - LAN側 192.168.32.0/24
VPC 10.0.0.0/16

AWSでのサイト間VPN設定

1. カスタマーゲートウェイの設定
VPCの管理画面内、「カスタマーゲートウェイ」を開く

「カスタマーゲートウェイの作成」をクリック

入力項目は以下の通り
・名前:適当
・ルーティング:動的
・IPアドレス:ルータのWAN側IP
※あとは入力していない

f:id:fujison-xyz:20200509190911p:plain

2. 仮想プライベートゲートウェイの設定
VPCの管理画面内、「仮想プライベートゲートウェイ」を開く

「仮想プライベートゲートウェイの作成」をクリック

名前タグを適当に付けて、作成ボタンをクリックする。

仮想プライベートゲートウェイの一覧ページに戻ったら、「アクション→VPCにアタッチ」とクリック。

VPCを選択して「はい、アタッチします」をクリック。

3. サイト間のVPN接続の設定
PCの管理画面内、「サイト間のVPN接続」を開く

「VPN接続の作成」をクリック

入力項目は以下の通り
・名前タグ:適当
・仮想プライベートゲートウェイ:さっき作ったものを選択
・Customer Gateway ID:さっき作ったものを選択
※あとは入力していない

f:id:fujison-xyz:20200509191918p:plain

サイト間のVPNの一覧ページに戻ったら「設定のダウンロード」をクリック
・ベンダー:CiscoSystems, inc.
・プラットフォーム:ISR Series Routers
・ソフトウェア:IOS 12.4+

f:id:fujison-xyz:20200509191055p:plain

ダウンロードしたファイルは後で使う

4. ルートテーブルの変更
VPCの管理画面内、「ルートテーブル」を開く

対象のルートテーブルをクリックし、以下のルートを追加する
・送信先:192.168.32.0/24(ルータのLAN側)
・ターゲット:作成したvirtual private gatawayを選択する(クリックすると出てくる)

f:id:fujison-xyz:20200509191332p:plain

※私の環境では「Public」「Protected」サブネットの2つがあったが、どちらもこの方法で接続出来た。

ルーター側での設定

ルータにTelnetもしくはSSH接続し、「3. サイト間のVPN接続の設定」でダウンロードしたテキストをペーストする

こんな感じのテキストファイル↓
f:id:fujison-xyz:20200509191406p:plain

※私の環境ではそのままで動いたが、NATトラバーサル下にルータがある場合やFWを経由している場合は変更が必要

接続確認

EC2インスタンス等のローカルIPで接続出来れば成功。

接続できない場合は、インスタンスのセキュリティグループを見直してみる。

その他にも公式のトラブルシューティング手順があるので参考までに。
docs.aws.amazon.com

良いAWSライフを!

電話でアルファベットを1文字ずつ伝えるやつ

私の中で「かっこいいな」と思うものをまとめておく。
※こういうのを「フォネティックコード」と呼ぶ。

A アメリカのA
B ブラジルのB
C チャイナのC
D デンマークのD
E イングリッシュのE
F フランスのF
G ゴルフのG
H 香港のH
I イタリアのI
J ジャパンのJ
K コリアのK
L ロンドンのL
M メキシコのM
N 日本のN
O 大阪のO
P ポルトガルのP
Q クイーンのQ
R ロシアのR
S スペインのS
T 東京のT
U USAのU
V ベトナムのV
W ワシントンのW
X X線のX
Y 横浜のY
Z ゼブラのZ

ちょっと無理やりに見える?

上記のうち「USAのU」「X線のX」などは、結構無理があるように見える。

そういったものは大抵「アルファベットのU」「アルファベットのX」と言ってしまえば伝わるので、
無理にフォネティックコードにしない方が良かったりする。

個性って大事

さらにご自身の業界用語に合わせると、より伝わりやすく、より魅力的なものになると思います。

例えば医療関係の職種なら「ドクターのD」「ナースのN」「クリニックのC」とか
IT関連の職種なら「データのD」「ヌルのN」「コンピューターのC」とか。

私の職場には「日本の地名」でほとんど全てを表す人もいます。

自分にとって最も良いと思うフォネティックコードを探すのも楽しいのでは?