Vagrantを使ってZabbixの検証環境を作ってみたのでそのときのメモ。下記の前提で環境構築を行います。
これらをネットワーク図に整理するとこんな感じですね。 ソース †今回使用するソースは https://github.com/masatomix/zabbix_sample_vagrant へアップ済みですので、適宜ご参照ください。 あ、またVagrantをホストしているマシンは $ sw_vers ProductName: Mac OS X ProductVersion: 10.13.4 $ vagrant --version Vagrant 2.0.4 2018/04/30現在、OSはmacOS High SierraでVagrantは2.0.4のようですね。 サーバを構築する。 †さてまずはZabbix Server側の構築です。といっても上記ソースを落としてきて、Vagrantで # git clone https://github.com/masatomix/zabbix_sample_vagrant.git # cd zabbix_sample_vagrant/server/ # vagrant up で構築完了です。ブラウザでVagrantが動いてるOS上のブラウザから http://127.0.0.1:8888/ でZabbix Serverのログイン画面が表示されればOKです。 VagrantによるOS構築 †コマンド一つで構築完了ですだと身も蓋もないので中身についてですが、VagrantfileでOSのインストールなどを行ったあと、VagrantのProvision機能を使って残りの環境設定を行っています。 具体的には、Vagrantfileでは
などの設定を行っています。それらを行うVagrantfileを抜粋すると以下の通りです。 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| # ubuntu/xenial64 を使用 config.vm.box = "ubuntu/xenial64" config.vm.hostname = "zabbix-server" # ホスト名を設定 config.vm.network "forwarded_port", guest: 80, host: 8888 config.vm.network "private_network", ip: "192.168.33.10" # コレを行わないと # http://www.masatom.in/pukiwiki/Vagrant/TIPS%BD%B8/#ab1dd863 # vagrant packageでexportしたBoxが正しく動かないため記述 config.vm.provider "virtualbox" do |vb| vb.customize [ "modifyvm", :id, "--uartmode1", "disconnected" ] end # 次の環境設定のシェルを動かすための記述 config.vm.provision :shell, :path => "./script/provision.sh",:privileged => true end Vagrantfileの最後にある config.vm.provision :shell, :path => "./script/provision.sh",:privileged => true で、つづきの環境構築が動き出します。 Vagrant のProvision機能でつづきの環境設定 †さて、Vagrantfileの最後に指定されたshのなかでは
を実施しています。 具体的には、provision.sh は以下の通りです。 #!/bin/sh # install docker sudo apt-get remove docker docker-engine docker.io sudo apt-get update sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install -y docker-ce # create zabbix container sudo docker run --name mysql-server -t \ --restart=always \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix" \ -e MYSQL_ROOT_PASSWORD="zabbix" \ -d mysql:5.7 \ --character-set-server=utf8mb4 \ --collation-server=utf8mb4_unicode_ci sudo docker run --restart=always --name zabbix-java-gateway -d zabbix/zabbix-java-gateway:latest sudo docker run --name zabbix-server-mysql -t \ --restart=always \ -e DB_SERVER_HOST="mysql-server" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix" \ -e MYSQL_ROOT_PASSWORD="zabbix" \ --link mysql-server:mysql \ --link zabbix-java-gateway:zabbix-java-gateway \ -p 10051:10051 \ -d zabbix/zabbix-server-mysql:latest sudo docker run --name zabbix-web-nginx-mysql -t \ --restart=always \ -e DB_SERVER_HOST="mysql-server" \ -e MYSQL_DATABASE="zabbix" \ -e MYSQL_USER="zabbix" \ -e MYSQL_PASSWORD="zabbix" \ -e MYSQL_ROOT_PASSWORD="zabbix" \ -e ZBX_SERVER_HOST="zabbix-server" \ -e PHP_TZ="Asia/Tokyo" \ --link mysql-server:mysql \ --link zabbix-server-mysql:zabbix-server \ -p 80:80 \ -d zabbix/zabbix-web-nginx-mysql:latest # install zabbix agent wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb sudo apt update sudo apt install -y zabbix-agent # /etc/zabbix/zabbix_agentd.conf # Server=127.0.0.1 -> Server=127.0.0.1, 172.17.0.0/16 へ置換 192.168.33.0/24だとダメだった sudo cp -pfr /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.org sudo sed -i -e 's/Server=127.0.0.1/Server=127.0.0.1,172.17.0.0\/16/g' /etc/zabbix/zabbix_agentd.conf sudo systemctl start zabbix-agent sudo systemctl enable zabbix-agent Dockerの構築は 公式の Get Docker CE for Ubuntu | Docker Documentation を、ZabbixをDocker上にインストールする方法については Zabbix/DockerでZabbixサーバ構築 を、Zabbix Agentをインストールする方法については公式の 2 Debian/Ubuntu [Zabbix Documentation 3.4] などを参考にさせてもらいました。 サーバの環境構築の説明は以上です。 vagrant up 実行後は、さっきやったようにブラウザでアクセスしたり、vagrant sshでログイン出来きればOKです。 クライアント(エージェント)側を構築する †つづいてクライアント(エージェント)側です。 # git clone https://github.com/masatomix/zabbix_sample_vagrant.git ←さっき落としたヤツそのままつかってもよいです # cd zabbix_sample_vagrant/agent/ # vagrant up 簡単ですね。 VagrantによるOS構築 †こちらも中身についてですが、Vagrantfileでは
を行っています。また下記の通りに記述することで一つのVagrantfileで複数のサーバの構築を行っています。 # -*- mode: ruby -*- # vi: set ft=ruby : Vagrant.configure("2") do |config| config.vm.box = "ubuntu/xenial64" config.vm.define :agent001 do | agent001 | agent001.vm.hostname = "agent001" agent001.vm.network :private_network, ip: "192.168.33.11" agent001.vm.provision :shell, :path => "./script/provision.sh",:privileged => true end config.vm.define :agent002 do | agent002 | agent002.vm.hostname = "agent002" agent002.vm.network :private_network, ip: "192.168.33.12" agent002.vm.provision :shell, :path => "./script/provision.sh",:privileged => true end end ネットワーク設定後、agent001/agent002に対しておなじprovisionを agent00x.vm.provision :shell, :path => "./script/provision.sh",:privileged => true で行っています。 Vagrant のProvision機能でつづきの環境設定 †さて、OSインストールとネットワーク構築後に動くshは以下の通りです。 #!/bin/sh # install zabbix agent wget http://repo.zabbix.com/zabbix/3.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.4-1+xenial_all.deb sudo dpkg -i zabbix-release_3.4-1+xenial_all.deb sudo apt update sudo apt install -y zabbix-agent # /etc/zabbix/zabbix_agentd.conf # Server=127.0.0.1 -> Server=127.0.0.1, 192.168.33.0/24 sudo cp -pfr /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.org sudo sed -i -e 's/Server=127.0.0.1/Server=127.0.0.1,192.168.33.0\/24/g' /etc/zabbix/zabbix_agentd.conf sudo systemctl start zabbix-agent sudo systemctl enable zabbix-agent Dockerの構築がないぶんシンプルで、基本的にはzabbix-agentのインストールと、confファイルの修正くらいです。 vagrant up 後は、OSが二つ立ち上がったので $ vagrant ssh agent001 などと名前指定でログイン出来ることを確認します。 以上で、監視されるエージェントのOSの環境構築は完了です。 ブラウザからのZabbixの環境設定 †あらためて http://127.0.0.1:8888/ へアクセスし、Admin/zabbix でログイン します。 Zabbix Server自体の監視開始 †Zabbix Server自体の監視を行います。 Configuration >> Hosts >> Zabbix server で、IPアドレスを 192.168.33.10 (ネットワーク図を見ると分かりますが、Zabbix Server自体のIP) に変更し、一番下にある有効化チェックボックスをEnabledにして Update。 上記の通り、IPアドレスが変更されていることと、ほどなくして「ZBX」のアイコンが緑になっていればOKですね。 各OSのエージェントでの監視開始 †続いて、各OS agent001/agent002 の監視設定を追加します。 Configuration >> Hosts >> Create host で入力画面へ。 「Hostタブ」で Host name: agent001 or agent002 Group: Linux Servers IP: 192.168.33.11 or 192.168.33.12 などを記述します。 「Templatesタブ」で設定したい監視セットのテンプレートを選択します。具体的には Link new templatesにあるボックスに linuxなどと入れると部分一致しますので、「Template OS Linux」を選んでAddリンクをクリック(その下にあるAddボタンでなくて、リンクの方をクリック)すると、追加されます。 最後にAddを押下すれば、OKです。 同様にagent002も追加します。 上記のように、agent001/agent002が追加され、ほどなくして「ZBX」のアイコンが緑になっていればOKです。 以上で、基本的なZabbix Server/Zabbix Agentの環境構築は完了です。 今回はVagrantでコマンド一発で環境構築をしましたが、オンプレやAWSに構築する場合も基本的に同じコマンドを叩けばOKです。 おつかれさまでした。 追記:最低限の設定 †SMTPサーバの設定 †障害をメール通知するための設定は Zabbix/障害をメール通知 をご参照のこと。 この記事は 現在のアクセス:2051 |