#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;}

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS