Top / Zabbix / Vagrant環境でサーバとエージェントを構築する

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

vagrant.png

サーバを構築する。

VagrantfileでOSのインストール等を行ったあと、Provision機能を使ってつづきの環境設定を行います。

ちなみにすべてのソースは、 https://github.com/masatomix/zabbix_sample_vagrant へアップ済みです。

VagrantによるOS構築

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をした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ですが、具体的には

を実施しています。

具体的には、以下の通りです。

#!/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ですね。

クライアント(エージェント)側を構築する

つづいてクライアント(エージェント)側です。

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

こんな感じにすることで、複数サーバの構築を一度に行うことが出来るわけですね。

Vagrant のProvision機能でつづきの環境設定

さて各サーバのつづきの環境設定は、一つの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の環境設定

あらためて http://127.0.0.1:8888/ へアクセスし、Admin/zabbix でログイン します

Zabbix サーバ自体の監視の開始

Configuration >> Hosts >> Zabbix server で、IPアドレスを 192.168.33.10 (Zabbixサーバ自体のIP) に変更し、Enabledにチェックを入れて Update

hosts001.png

エージェントの監視

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も追加します。

hosts002.png

この記事は

選択肢 投票
おもしろかった 0  
そうでもない 0  

Top / Zabbix / Vagrant環境でサーバとエージェントを構築する

現在のアクセス:1830


*1 publicにBridgeすりゃイイんですが

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