#topicpath
----


Vagrantを使ってZabbixの検証環境を作ってみたのでそのときのメモ。下記の前提で環境構築を行います。

- 1つのVagrantfileで、Zabbix Serverを1つ構築します。
- Zabbix ServerはUbuntu Linux 上のDocker上に構築します。
- 監視される(エージェントを入れる方)OSもUbuntu Linuxとして、 ひとつのVagrantfileで2つOSを構築します。
- それぞれの仮想マシンはネットワーク的に到達可能である必要がありますが、Vagrantはデフォルトではおなじネットワークを共有しないようなので、((publicにBridgeすりゃイイんですが))、ウラLANとして 192.168.33.0/24 のネットワークを構築します。
- Zabbix Serverには80番ポートでWEBサーバが起動しますが、VagrantはNATかけないとアクセス出来ないので、port forwardingで 8888番ポートアクセスを80番ポートへ転送します。

これらをネットワーク図に整理するとこんな感じですね。


#ref(vagrant.png)




#contents


**ソース [#m8743b27]
今回使用するソースは 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のようですね。


** サーバを構築する。 [#j56b38b7]
さてまずは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構築 [#kcefeb0f]
コマンド一つで構築完了ですだと身も蓋もないので中身についてですが、VagrantfileでOSのインストールなどを行ったあと、VagrantのProvision機能を使って残りの環境設定を行っています。

具体的には、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で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機能でつづきの環境設定 [#jf0ba79b]
さて、Vagrantfileの最後に指定されたshのなかでは

- Dockerのインストール
- Docker上にZabbix のインストール、と起動
- そのサーバ自体を監視するためのZabbix AgentのインストールとそのAgentの環境設定

を実施しています。

具体的には、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>https://docs.docker.com/install/linux/docker-ce/ubuntu/]] を、ZabbixをDocker上にインストールする方法については  Zabbix/DockerでZabbixサーバ構築  を、Zabbix Agentをインストールする方法については公式の [[2 Debian/Ubuntu [Zabbix Documentation 3.4]>https://www.zabbix.com/documentation/3.4/manual/installation/install_from_packages/debian_ubuntu#agent_installation]] などを参考にさせてもらいました。


サーバの環境構築の説明は以上です。 vagrant up 実行後は、さっきやったようにブラウザでアクセスしたり、vagrant sshでログイン出来きればOKです。



**クライアント(エージェント)側を構築する [#e7c3a882]
つづいてクライアント(エージェント)側です。
 # git clone https://github.com/masatomix/zabbix_sample_vagrant.git  ←さっき落としたヤツそのままつかってもよいです
 # cd zabbix_sample_vagrant/agent/
 # vagrant up
簡単ですね。

*** VagrantによるOS構築 [#m88dfab5]
こちらも中身についてですが、Vagrantfileでは
- ubuntu/xenial64 のインストール
- Networkの追加(192.168.33.0/24 というネットワークを設定)
- provisionのためのsh実行

を行っています。また下記の通りに記述することで一つの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機能でつづきの環境設定 [#p10d5d6c]
さて、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の環境設定 [#rfd132d4]
あらためて http://127.0.0.1:8888/ へアクセスし、Admin/zabbix でログイン します。

*** Zabbix Server自体の監視開始 [#i6cac7d9]
Zabbix Server自体の監視を行います。
Configuration >> Hosts >> Zabbix server で、IPアドレスを 192.168.33.10 (ネットワーク図を見ると分かりますが、Zabbix Server自体のIP) に変更し、一番下にある有効化チェックボックスをEnabledにして Update。

#ref(hosts001.png)

上記の通り、IPアドレスが変更されていることと、ほどなくして「ZBX」のアイコンが緑になっていればOKですね。



***各OSのエージェントでの監視開始 [#k22728f2]
続いて、各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も追加します。

#ref(hosts002.png)


上記のように、agent001/agent002が追加され、ほどなくして「ZBX」のアイコンが緑になっていればOKです。


以上で、基本的なZabbix Server/Zabbix Agentの環境構築は完了です。
今回はVagrantでコマンド一発で環境構築をしましたが、オンプレやAWSに構築する場合も基本的に同じコマンドを叩けばOKです。

おつかれさまでした。



**追記:最低限の設定 [#q65024e3]
***SMTPサーバの設定 [#mdc9415d]
障害をメール通知するための設定は Zabbix/障害をメール通知 をご参照のこと。






----
この記事は
#vote(おもしろかった,そうでもない)


#comment

#topicpath

SIZE(10){現在のアクセス:&counter;}

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS