zabbix agentをインストール
前回zabbix serverインストールまで終わったので今回はzabbix agentインストールをやっていこうと思います。
前提条件
→前回やったこと
zabbixサーバーをインストールしました。
今回やること
監視対象となるエージェントのサーバーを新しく作る。
→1. インスタンスがもう一個必要。
→2. そこにzabbixエージェントを入れて監視できるように設定。
→3. zabbix_get コマンドでホストとサーバーの通信を確認。
今回はzabbix agentのサーバーを作って監視対象のホストの設定をしていきます。
監視対象のサーバーを新たに作成
awsのコンソールにサインイン→ec2検索→インスタンスを起動します。
!注意すること!
1.ネットワークで既存のvpc(zabbixサーバーのインスタンスに割り当てたものと同じもの)を割り当ててください。vpcが違うと設定が面倒です。
2.サブネットも同じです。
3.自動割り当てパブリックIPは有効にしてください。
※有効にしないとネットからインスタンスにつなぐことができないです。
セキュリティグループ
鍵もzabbixサーバーと同じものを選んでください。一応ダウンロードしておきます。
これでインスタンスの作成は終了になります。
作ったインスタンスにzabbix agentを入れる
awsでインスタンスを起動します。
※インスタンスを起動するときに起動するインスタンスを選んで右クリックします。その時に「インスタンスを起動」を押してしまうとインスタンスが新しく作られてしまいます。
→「インスタンスを開始」を選びましょう。そして作業が終わったら必ず「インスタンス停止」を忘れないように。。。
teratermを起動します。
awsのパブリック IPv4 アドレスをコピーしておいてホストのところに張り付けます。
→[OK]
[ホストからの接続拒否]の場合はセキュリティグループがおかしいことがあります。
awsの画面に戻ってインスタンスを選択して下の方のセキュリティタブをクリックします。
セキュリティグループのリンクからセキュリティグループの設定へ飛びます。
インバウンドルール→黄色の枠で囲ったボタンをクリックしてインバウンドルールを変更しましょう。
**※インバウンドルールとは**
再びteratermで接続→できた!
次にこの場面になります。
ユーザー名:awsを使っているなら「ec2-user」
鍵認証で秘密鍵のところにはインスタンスを作る時にダウンロードした.pemファイルを指定します。
ではssh接続でawsサーバーに接続することができました。
サーバーにエージェントをダウンロードする
作業に移る前に「sudo su」でroot(スーパーユーザー)で作業進めることをおすすめします。
https://changineer.info/server/monitoring/monitoring_zabbix_agent2.html
上のページがzabbixエージェントダウンロードについてとても分かりやすくまとめてくれています。
コマンド貼ります。
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
サーバーにzabbixをダウンロードしたときのリポジトリ↓
https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
→
最初に公式ページでサーバーダウンロードしたときのリポジトリがこれだったので、バージョンとか確認して同じエージェントをダウンロードする必要があります。
ちなみに一覧ページはこちら
dnf install zabbix-agent2
エージェント2をダウンロードしています。→ちなみにエージェント(1)でもいけます。2でも1でも問題なく通信できました。
systemctl enable zabbix-agent2.service --now
エージェントをサーバーが起動したときに自動的に起動するようにしています。
注意が必要なのはエージェントをダウンロードし終わった後の
「vi /etc/zabbix/zabbix_agentd2.conf」
でエージェントの設定ファイルをどうにかこうにか変更していくところです。
※viで開くと本来なら設定ファイルの内容がバーッと出てくるのですが出てこないときは新しいファイルを作ってしまっているので「cd /etc/zabbix/」→「ls -a」で丁寧に開いていくことをおすすめします。
では具体的にviでzabbix_agentd2.confを編集していきましょう。
編集するのは次の3点です。
・Server=
・ServerActive=
・Hostname=
# Server=127.0.0.1
Server=10.0.#.# →zabbixサーバーのプライベートIPv4アドレスになります。
# ServerActive=127.0.0.1
ServerActive=10.0.#.#
# Hostname=Zabbix server
Hostname=ZabbixHost1
※↑これは任意の名前で大丈夫ですが、zabbixサーバーをweb画面上で操作しホストを追加するときに同じ名前じゃないと追加ができなくなるのでどこかに必ずメモしておいてください。
zabbixサーバーのzabbix_agentd.confファイルのhost名とかぶらないようにしてください。
ここまでで設定が終わり。
通信を確認する
zabbix-getコマンドは手動でインストールしとかなきゃいけなかったです。
手動インストールします。※サーバーとホストどちらにもインストールします。
yum install zabbix-get
zabbix_get
usage:
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address] -k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
--tls-connect cert --tls-ca-file CA-file
[--tls-crl-file CRL-file] [--tls-agent-cert-issuer cert-issuer]
[--tls-agent-cert-subject cert-subject]
--tls-cert-file cert-file --tls-key-file key-file
[--tls-cipher13 cipher-string] [--tls-cipher cipher-string]
-k item-key
zabbix_get -s host-name-or-IP [-p port-number] [-I IP-address]
--tls-connect psk --tls-psk-identity PSK-identity
--tls-psk-file PSK-file [--tls-cipher13 cipher-string]
[--tls-cipher cipher-string] -k item-key
zabbix_get -h
zabbix_get -V
ここから通信がうまく行かなかったので対応。見なくても大丈夫。
zabbix_get -s 10.0.#.# -k agent.version
zabbix_get [2690]: Timeout while executing operation
LogFile=/var/log/zabbix/zabbix_agentd.log
上手くいかないことがあったらlogファイルを見ましょう!
2021/08/06 06:21:01.179732 [101] active check configuration update from [10.0.1.22:10051] started to fail (dial tcp :0->サーバーipアドレス:10051: i/o timeout)
tail /var/log/zabbix/zabbix_agentd.log
active check configuration update from [127.0.0.1:10051] started to fail (cannot connect to [[127.0.0.1]:10051]: [111] Connection refused)
cd /etc/zabbix/
ls
zabbix_agentd.conf zabbix_agentd.d zabbix_server.conf
ここまでやって結局原因は・・・・
awsのセキュリティグループでした!
図1
原因
同じセキュリティグループ同士の通信をsshとicmpという通信だけに限定していた。
→そうすると起こる事象
zabbixサーバーと監視対象のサーバーはエージェントがやり取りして情報を集めている。
監視対象との通信が限定されている
→通信のためのポートが一部閉じられている。
→エージェントが通信できない。
→ホストとの通信ができない、エージェントが使用停止状態に。
そもそもなんでこんな設定をしたか
以前、「ポートに対する攻撃に注意しなさい」という旨の記事を読んだ。
ポートを開けているのが怖くなった。
内部の通信もかなり限定してしまった。
セキュリティのために
内部の通信は自分しか使わないので緩くても大丈夫。
気を付けるべきは外部からの通信で、これはIPアドレスなどを指定してあげる必要がある。
※一応そのイメージを図1にしました。
→反省:怖がる前に調べる。
ではZABBIXのコマンドで通信できるか確認します。
[ec2-user@ip-10-0-1-22 ~]$ zabbix_get -s 10.0.1.11 -k system.hostname
ip-10-0-1-11.us-east-2.compute.internal
→無事監視対象ホストと接続ができました。
次回
zabbixウェブ画面でホスト追加の方法。
パラメーターなどを設定してディスクを監視する方法。
を書いていきます。