概要
zabbixの概要理解についてはさくらのナレッジの次の記事が役立った。
めちゃくちゃ簡単にまとめると次の通り
- 目的
- Serverの監視、通知(起動の有無、設定した閾値を超えた場合のmail通知等
- 類似Tool
- Nagios(https://www.nagios.org/)
- MRTG(http://www.mrtg.jp/doc/)
- 以下の3つのmoduleで動作
- zabbix-web:zabbixの設定、serverで収集した情報の表示
- zabbix-server:agentから情報を収集
- zabbix-agent:監視対象にinstall。serverに情報を送信
環境
OS | CentOS 6.7 |
Zabbix | Zabbix 3.0 |
Install
Zabbixのweb,server,agentをすべて一つのserverにinstallする。
監視対象を増やしたい場合には対象serverにzabbix-agentのみinstallすれば良い。
今回Ansible Galaxyの次のRoleを使わせていただいた。
- geerlingguy.apache
- geerlingguy.mysql
- dj-wasabi.zabbix-server
- dj-wasabi.zabbix-agent
zabbixをinstallした際にapacheとのversionが合わず、zabbix-serverの設定fileが上手く設定されなかったためtemplateで置き換えた。
zabbix-webのIPはGlobal IPを使い、zabbix-serverのIPはPrivate IPを使うようにした。
{zabbixserver.yml}
- name: Install php
hosts: zabbixserver
tasks:
- name: Add repository 'epel-repo'
yum: name=http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm state=present
- name: Add repository 'remi-repo'
yum: name=http://rpms.famillecollet.com/enterprise/remi-release-6.rpm state=present
- name: Install php 5.5
yum: name={{ item }} state=present enablerepo=remi,remi-php55
with_items:
- php
- php-mysql
- php-mbstring
- php-gd
- php-bcmath
- php-xml
- name: configure zabbix-server
hosts: zabbixserver
roles:
- { role: geerlingguy.apache }
- { role: geerlingguy.mysql }
- role: dj-wasabi.zabbix-server
zabbix_url: "{{ zabbixserver.global_ip }}"
zabbix_version: 3.0
zabbix_timezone: Asia/Tokyo
database_type: mysql
database_type_long: mysql
tasks:
- name: set up config file
template: src=roles/zabbix/templates/zabbix.conf.j2 dest=/etc/httpd/conf.d/zabbix.conf
vars:
zabbix_host: "{{ zabbixserver.global_ip }}"
- name: replace hostname to IpAddress in config file
lineinfile: >
dest=/etc/zabbix/web/zabbix.conf.php
regexp='^\$ZBX_SERVER ='
line="$ZBX_SERVER = '{{ zabbixserver.private_ip }}';"
notify: restart httpd
handlers:
- name: restart httpd
service: name=httpd state=restarted
- name: configure zabbix-agent
hosts: zabbixserver
roles:
- role: dj-wasabi.zabbix-agent
agent_server: "{{ zabbixserver.private_ip }},127.0.0.1"
agent_serveractive: "{{ zabbixserver.private_ip }},127.0.0.1"
{roles/zabbix/templates/zabbix.conf.j2}
<VirtualHost *:80>
ServerName {{ zabbix_host }}
## Vhost docroot
DocumentRoot "/usr/share/zabbix"
<Directory "/usr/share/zabbix">
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
<Directory "/usr/share/zabbix/conf">
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
<Directory "/usr/share/zabbix/api">
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
<Directory "/usr/share/zabbix/include">
AllowOverride None
Order Deny,Allow
Deny from all
</Drectory>
<Directory "/usr/share/zabbix/include/classes">
AllowOverride None
Order Deny,Allow
Deny from all
</Directory>
## Logging
ErrorLog "/var/log/httpd/{{ zabbix_host }}_error.log"
ServerSignature Off
CustomLog "/var/log/httpd/{{ zabbix_host }}_access.log" combined
## Rewrite rules
RewriteEngine On
RewriteRule ^$ /index.php [L]
## Custom fragment
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
# Set correct timezone.
php_value date.timezone Asia/Tokyo
</VirtualHost>
結果
defaultの設定だとAdmin/zabbixでloginできる。
mysqlは勝手にzabbixというDBを作成してくれるので特に気にしなくても大丈夫だった。
後、defaultではserverとagentでportの10050と10051を使うので開放を忘れずに。
どういう値を監視するのかといった設定はこのweb frontから行う。また色々いじってみたい。