2 min read

鯖の監視にZABBIXを使ってみた

なんとなく鯖のリソースの監視などをしてみたかったのでZABBIXを使ってみた。
nagiosがかなり有名みたいだけど気に入ったUIのバージョンを入れようとしたらDebianは無理って言われたからZABBIXにしました

ダウンロードと鍵の追加とインストール

$ wget http://repo.zabbix.com/zabbix/3.2/debian/pool/main/z/zabbix-release/zabbix-release_3.2-1+jessie.tar.gz
$ tar xzvf zabbix-release_3.2-1+jessie.tar.gz
$ sudo apt-key add zabbix-release/zabbix-official-repo.gpg

$ sudo sh -c 'echo -e "deb http://repo.zabbix.com/zabbix/3.2/debian jessie main\ndeb-src http://repo.zabbix.com/zabbix/3.2/debain jessie main" > /etc/apt/sources.list.d/zabbix.list'

$ sudo apt install zabbix-server-mysql zabbix-frontend-php

MySQLのパスワード設定を求めてくるので入力する

$ mysql -uroot -p
> create database zabbix character set utf8 collate utf8_bin;
> grant all privileges on zabbix.* to zabbix@localhost identified by '{password}';
> quit

ZABBIXの初期DBをぶち込む

$ zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p {password}

ZABBIXサーバーの設定を書き換え

/etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword={password}

タイムゾーンを東京に設定

sudo sed \
  -e 's/# php_value date.timezone Europe\/Riga/php_value date.timezone Asia\/Tokyo/g' \
  -i /etc/zabbix/apache.conf

ポートの開放とZABBIXの起動

$ sudo ufw allow 80/tcp
$ sudo ufw allow 10051/tcp
$ sudo service zabbix-server start
$ sudo service apache2 restart

http://server_addr/zabbixのWebUIにて設定する

グラフの文字がおかしくなるのでフォントを入れる

ipagp.ttfはどっかから持ってくる

$ sudo mv ipagp.ttf /usr/share/zabbix/fonts/
$ sudo sed -e 's/graphfont/ipagp/g' -i /usr/share/zabbix/include/defines.inc.php

zabbix-agentのインストールと起動

一発でインストールできてコンフィグをいじればいいだけなので楽。
192.168.1.99はZABBIXサーバーのIP。適宜変更して

$ sudo apt install zabbix-agent
$ ZABBIX_SERVER="192.168.1.99"
$ sudo sed \
  -e "s/Server=127.0.0.1/Server=$ZABBIX_SERVER/" \
  -e "s/ServerActive=127.0.0.1/ServerActive=$ZABBIX_SERVER/" \
  -e 's/Hostname=Zabbix server/#Hostname=Zabbix server/' \
  -e 's/# HostnameItem=system.hostname/HostnameItem=system.hostname/' \
  -i /etc/zabbix/zabbix_agentd.conf
$ sudo service zabbix-agent restart
$ sudo ufw allow 10050/tcp

自動起動

Server

sudo systemctl enable zabbix-server.service

Agent

sudo systemctl enable zabbix-agent.service

agentのインストール、コンフィグ書き換え、ポート開放、自動起動

192.168.1.99適宜変更

sudo apt update && \
sudo apt install -y zabbix-agent && \
ZABBIX_SERVER="192.168.1.99" && \
sudo sed \
  -e "s/Server=127.0.0.1/Server=$ZABBIX_SERVER/" \
  -e "s/ServerActive=127.0.0.1/ServerActive=$ZABBIX_SERVER/" \
  -e 's/Hostname=Zabbix server/#Hostname=Zabbix server/' \
  -e 's/# HostnameItem=system.hostname/HostnameItem=system.hostname/' \
  -i /etc/zabbix/zabbix_agentd.conf && \
sudo service zabbix-agent restart && \
sudo ufw allow 10050/tcp && \
sudo systemctl enable zabbix-agent.service

nginx + php7.0で運用する

  • apache2はpurge可能
  • php5は依存関係の問題でphp7との共存必須

nginxとphp7.0の鍵を追加してインストール

sudo su
echo -e "deb http://nginx.org/packages/debian/ jessie nginx\ndeb-src http://nginx.org/packages/debian/ jessie nginx" > /etc/apt/sources.list.d/nginx.list
wget http://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key && rm nginx_signing.key
echo "deb http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/php.list
wget https://www.dotdeb.org/dotdeb.gpg && apt-key add dotdeb.gpg && rm dotdeb.gpg
apt update && apt install nginx php7.0-fpm && exit

zabbixのWebUIを開いてセットアップしてると足りないものや上限の低いものの警告が出るので、それに従って設定する

例)

  • upload_max_filesizeなどphp7.0の設定は/etc/php/7.0/fpm/php.ini
  • PHP mbstringがfailの場合はapt install php7.0-mbstring

nginxの設定

server {
    listen 80;
    server_name SERVERNAME;
    root /usr/share/zabbix;
    index index.php;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param CI_ENV production;
        include fastcgi_params;
    }
}

こんな感じでできるはず

ずいぶん前に構築した時のメモを参考に記事を書いたので少し違うところがあるかもしれない