#topicpath ---- #contents Vagrantを使ってZabbixの検証環境を作ってみたのでそのときのメモ。下記の前提で環境構築を行います。 - 一つのVagrantfileで、Zabbixサーバを一つ構築します。 - ZabbixサーバはUbuntu Linux 上のDocker上に構築します。 - 監視される(エージェントを入れる方)OSもUbuntu Linuxとして、 ひとつのVagrantfileで2つOSを構築します。 - それぞれの仮想マシンはネットワーク的に到達可能である必要がありますが、Vagrantはデフォルトではおなじネットワークに参加しないようなので((publicにBridgeすりゃイイんですが))、ウラLANとして192.168.33.0/24のネットワークを構築します。 - Zabbixサーバには80番ポートでWEBサーバが起動しますが、VagrantはNATかけないとアクセス出来ないので、port forwardingで 8888番ポートアクセスを80番ポートへ転送します。 #ref(vagrant.png) ** サーバを構築する。 [#j56b38b7] VagrantfileでOSのインストール等を行ったあと、Provision機能を使ってつづきの環境設定を行います。 ちなみにすべてのソースは、 https://github.com/masatomix/zabbix_sample_vagrant へアップ済みです。 *** VagrantによるOS構築 [#kcefeb0f] Vagrantfileでは - ubuntu/xenial64 のインストール - Networkの追加(192.168.33.10/24 というIPを設定) - 外からの8888番ポートへのアクセスを80番ポートへ転送 を行います。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をした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機能でつづきの環境設定 [#zefe1bc4] さて、Vagrantfileの最後に指定されたshですが、具体的には - Dockerのインストール - Docker上にZabbix のインストール、と起動 - そのサーバ自体を監視するためのZabbix AgentのインストールとそのAgentの環境設定 を実施しています。 具体的には、以下の通りです。 #!/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 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 サーバの環境構築の説明は以上です。Vagrantfile があるディレクトリで $ vagrant up を実行すれば、上記の環境構築は完了です。vagrant sshでログイン出来ることや、Vagrant/VirtualBoxを動かしているOS上のブラウザから http://127.0.0.1:8888/ でZabbixサーバのログイン画面が表示されればOKですね。 **クライアント(エージェント)側を構築する [#e7c3a882] つづいてクライアント(エージェント)側です。 *** VagrantによるOS構築 [#m88dfab5] Vagrantfileでは - ubuntu/xenial64 のインストール - Networkの追加(192.168.33.0/24 というネットワークを設定) - provisionのためのシェル実行 をやってますが、下記の通りに記述することで一つの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 こんな感じにすることで、複数サーバの構築を一度に行うことが出来るわけですね。 *** Vagrant のProvision機能でつづきの環境設定 [#zba79641] さて各サーバのつづきの環境設定は、一つのshをそれぞれのOSで実行しています。具体的には下記の通り。 #!/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 などと名前指定でログイン出来ることを確認します。 以上で、Zabbixサーバと、監視されるエージェントのOSの環境構築は完了です。 **ブラウザからのZabbixの環境設定 [#z45718d2] あらためて http://127.0.0.1:8888/ へアクセスし、Admin/zabbix でログイン します *** Zabbix サーバ自体の監視の開始 [#b0119eee] Configuration >> Hosts >> Zabbix server で、IPアドレスを 192.168.33.10 (Zabbixサーバ自体のIP) に変更し、Enabledにチェックを入れて Update #ref(hosts001.png) ***エージェントの監視 [#y30191f5] Configuration >> Hosts >> Create host で 監視するサーバ agent001,agent002を追加します。 Hostタブで Host name: agent001 Group: Linux Servers IP: 192.168.33.11 Templatesタブで Template OS Linux を選んでAddを追加(ボタンでなくてリンクの方の追加)。最後にAddを押下すればOKです。 同様にagent002も追加します。 #ref(hosts002.png) ---- この記事は #vote(おもしろかった,そうでもない) #comment #topicpath SIZE(10){現在のアクセス:&counter;}