##0. 前提条件
- AWS EC2 を使用。Marketplace RHEL8 選択
- Mem 4GB (MariaDBに2GB ZabbixのValueCacheに1GB与える想定)
- パッケージは主にCentOSからとってますが自分で使うときは適宜変えてください
- ポートはSGで制御。環境に合わせて以下の穴開けてください。
(http(80)/snmptrap(UDP 162)/zabbix-agent(10050)/zabbix-server(10051))
※2020年2月現在 (OS/ソフトウェア側の変更には必ずしも追随しないっス!)
##1. 事前設定
####タイムゾーン設定
# timedatectl set-timezone Asia/Tokyo
####SELinux 無効化
※設定は任意。やらない場合は適宜ポリシー追加してください
# vi /etc/selinux/config
'---------------
SELINUX=enforcing
↓
SELINUX=disabled
'---------------
1回再起動
# reboot
####epelを使えるようにする
# dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
# dnf -y install wget
# dnf -y install perl-Encode \
perl-MIME-Base64 \
perl-Time-Local \
perl-Math-BigRat \
perl-Math-BigInt-FastCalc \
mariadb
####net-snmp 古めのものを入れる
※net-snmp-perl の5.8.7 以降がまだないみたい。これが(仮)の所以
# cd /tmp
# wget http://repo.okay.com.mx/centos/8/x86_64/release/\
net-snmp-libs-5.8-7.el8.2.x86_64.rpm
# wget http://repo.okay.com.mx/centos/8/x86_64/\
release/net-snmp-agent-libs-5.8-7.el8.2.x86_64.rpm
# wget http://repo.okay.com.mx/centos/8/x86_64/\
release/net-snmp-5.8-7.el8.2.x86_64.rpm
# wget http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages/\
lm_sensors-libs-3.4.0-20.20180522git70f7e08.el8.x86_64.rpm
# rpm -Uvh net-snmp-5.8-7.el8.2.x86_64.rpm \
net-snmp-agent-libs-5.8-7.el8.2.x86_64.rpm \
net-snmp-libs-5.8-7.el8.2.x86_64.rpm \
lm_sensors-libs-3.4.0-20.20180522git70f7e08.el8.x86_64.rpm
# wget http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/\
perl-IO-stringy-2.111-9.el8.noarch.rpm
# rpm -Uvh perl-IO-stringy-2.111-9.el8.noarch.rpm
# wget ftp://ftp.pbone.net/mirror/ftp.redhat.com/pub/redhat/rhel/\
rhel-8-beta/appstream/aarch64/Packages/\
perl-JSON-2.97.001-2.el8.noarch.rpm
# rpm -Uvh perl-JSON-2.97.001-2.el8.noarch.rpm
# wget http://download-ib01.fedoraproject.org/pub/epel/8/Everything/x86_64/Packages/p/\
perl-Mail-Sender-0.903-7.el8.noarch.rpm
# wget http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/\
perl-Types-Serialiser-1.0-12.el8.noarch.rpm
# wget http://mirror.centos.org/centos/8/PowerTools/x86_64/os/Packages/\
perl-common-sense-3.7.4-8.el8.x86_64.rpm
# rpm -Uvh perl-Mail-Sender-0.903-7.el8.noarch.rpm \
perl-Types-Serialiser-1.0-12.el8.noarch.rpm \
perl-common-sense-3.7.4-8.el8.x86_64.rpm
# wget http://mirror.centos.org/centos/8/AppStream/x86_64/os/Packages/\
perl-JSON-PP-2.97.001-3.el8.noarch.rpm
# rpm -Uvh perl-JSON-PP-2.97.001-3.el8.noarch.rpm
# wget http://repo.okay.com.mx/centos/8/x86_64/release/\
net-snmp-perl-5.8-7.el8.2.x86_64.rpm
# rpm -Uvh net-snmp-perl-5.8-7.el8.2.x86_64.rpm
# wget http://mirror.centos.org/centos/8/PowerTools/x86_64/os/\
Packages/perl-Digest-SHA1-2.13-23.el8.x86_64.rpm
# rpm -Uvh perl-Digest-SHA1-2.13-23.el8.x86_64.rpm
# dnf -y install perl-Text-CSV \
perl-Text-Balanced \
perl-Config-IniFiles \
perl-Sys-Syslog \
perl-Digest-SHA \
perl-Net-SNMP
# wget http://repo.okay.com.mx/centos/8/x86_64/release/\
net-snmp-utils-5.8-7.el8.2.x86_64.rpm
# rpm -Uvh net-snmp-utils-5.8-7.el8.2.x86_64.rpm
# rm -fr *.rpm
##2. Zabbixと関連パッケージのインストール
# cd /tmp
# dnf -y install https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/\
zabbix-release-4.0-2.el8.noarch.rpm
# dnf -y install zabbix-server-mysql \
zabbix-web-mysql \
zabbix-web-japanese \
zabbix-agent \
zabbix-get \
mariadb-server
##3. MariaDB設定
MariaDB構成ファイルの編集
# cd /etc/my.cnf.d
# cp -p mariadb-server.cnf mariadb-server.cnf.org
# vi mariadb-server.cnf
以下の様に編集
'---------------
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
↓↓追記
character-set-server=utf8
skip-character-set-client-handshake
innodb_buffer_pool_size = XXG ←大体メモリの半分
innodb_log_files_in_group = 2
innodb_log_file_size = 128M
max_allowed_packet=16M
innodb_file_per_table
innodb_flush_log_at_trx_commit = 2
innodb_strict_mode = 0
↑↑ここまで
'-------------------
# cp -p mysql-clients.cnf mysql-clients.cnf.org
# vi mysql-clients.cnf
'-------------------
↓↓以下追記
[mysqldump]
socket=/var/lib/mysql/mysql.sock
max_allowed_packet=16M
'-------------------
# cp -p client.cnf client.cnf.org
# vi client.cnf
'-------------------
↓↓以下追記
[client]
socket=/var/lib/mysql/mysql.sock
'-------------------
■MariaDB起動 及び 自動起動設定
# systemctl start mariadb && systemctl enable mariadb
Zabbix用DB設定
■ Zabbix用DBの作成
# mysql -uroot -e'create database zabbix character set utf8;'
※2020年 2月 collationの設定 は見送り。初期ログイン不可問題未解決の為
※大文字/小文字を区別できない問題が発生する可能性ある為、utf8mb4 の使用も見送り
■ DBアカウント作成
# mysql -uroot -e'grant all privileges on zabbix.* to zabbix@localhost identified by "<zabbixDBのパスワード>";'
# mysql -uroot -e'flush privileges;'
■ Zabbixの初期DBをインポート
# zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -uzabbix -p<zabbixDBのパスワード> zabbix
##4. httpd基本設定 apache起動
■httpd.conf 編集
# cd /etc/httpd/conf
# cp -p httpd.conf httpd.conf.org
# vi httpd.conf
以下を追記
/etc/httpd/conf/httpd.conf
-----------
# 以下編集
ServerName <ホスト名FQDN>:80
# 以下好みで追記
ServerTokens Prod
ServerSignature Off
TraceEnable off
-----------
##5. snmptrapd設定
■ snmptrapd.conf 編集
# cd /etc/snmp
# vi snmptrapd.conf
以下を追記
---------
authCommunity log,execute,net <CommunityName>
perl do "/usr/sbin/snmptthandler-embedded";
---------
■ snmptrapd起動 及び 自動起動設定
# systemctl start snmptrapd && systemctl enable snmptrapd
##6. zabbix_server設定
zabbix_server.conf 編集
※設定内容はご自身の環境に合わせて適宜変更を
# cd /etc/zabbix
# cp -p zabbix_server.conf zabbix_server.conf.org40
# vi zabbix_server.conf
------------
# DBPassword=
↓
DBPassword=<zabbixDBのパスワード>
# DBSocket=
↓
DBSocket=/var/lib/mysql/mysql.sock
# SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
↓
SNMPTrapperFile=/var/log/snmptt/snmptt.log
# StartSNMPTrapper=0
↓
StartSNMPTrapper=1
#ListenIP=0.0.0.0
↓
ListenIP=0.0.0.0
# ValueCacheSize=8M
↓
ValueCacheSize=XXG ←環境に合わせて割り当て
#Timeout=4 ←コメントアウトし変更
↓
Timeout=30
------------
※デフォルトが/var/runなので/run に変更するのは見送る
■ zabbix_server起動 及び 自動起動設定
# systemctl start zabbix-server && systemctl enable zabbix-server
##7. 管理画面の設定
zabbix web フロント 設定追加
■PHP設定追加
# cd /etc/php-fpm.d
# vi zabbix.conf
'-----------------
[zabbix]
user = apache
group = apache
listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 10M ←10Mくらいにしとく
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
; php_value[date.timezone] = Europe/Riga ← アンコメントし、timezone 変更
↓
php_value[date.timezone] = Asia/Tokyo
'-------------------
■zabbix.conf.phpの作成
初期設定ウィザードを出したくないので以下をべた貼り
# cd /etc/zabbix/web
# vi zabbix.conf.php
------------------------------------
<?php
// Zabbix GUI configuration file.
global $DB;
$DB['TYPE'] = 'MYSQL';
$DB['SERVER'] = 'localhost';
$DB['PORT'] = '0';
$DB['DATABASE'] = 'zabbix';
$DB['USER'] = 'zabbix';
$DB['PASSWORD'] = '<zabbixDBのパスワード>';
// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';
$ZBX_SERVER = 'localhost';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';
$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;
?>
------------------------------------
■ファイル権限変更
# chown apache:apache zabbix.conf.php
■apache と php-fpmの起動
# systemctl start httpd && systemctl enable httpd
# systemctl start php-fpm && systemctl enable php-fpm
##8. SNMPTT 連携設定
■SNMPTT 用に不足してるパッケージを入れる
# dnf -y install perl-5.26.3-416.el8
■SNMPTT 展開と初期設定
# cd /usr/src/
# wget https://sourceforge.net/projects/snmptt/files/snmptt/snmptt_1.4/snmptt_1.4.tgz/download
# tar xvfz download
# rm -fr download
# useradd -s /sbin/nologin snmptt
# chown -R snmptt. snmptt_1.4
# cd snmptt_1.4
# cp snmptt snmptthandler snmptthandler-embedded snmpttconvertmib /usr/sbin
# cp snmptt.ini /etc/snmp/
# chmod 755 /usr/sbin/snmptt
# chmod 755 /usr/sbin/snmptthandler
# chmod 755 /usr/sbin/snmptthandler-embedded
# chmod 755 /usr/sbin/snmpttconvertmib
# mkdir /var/log/snmptt
# chown snmptt:snmptt /var/log/snmptt
# mkdir /var/spool/snmptt/
# chown snmptt:snmptt /var/spool/snmptt/
■systemctl マニュフェストファイルのサンプル配布と反映
# cd /usr/lib/systemd/system
# touch snmptt.service
# vi snmptt.service
---- 以下な感じで貼りつけ ---------------
[Unit]
Description=SNMP Trap Translator
Wants=network-online.target
After=syslog.target network-online.target
[Service]
Environment="CONFIG=/etc/snmp/snmptt.ini"
ExecStart=/usr/sbin/snmptt -c ${CONFIG}
ExecReload=/bin/kill -HUP ${MAINPID}
Type=forking
PIDFile=/var/run/snmptt.pid
Restart=always
TimeoutStopSec=320s
KillMode=process
RestartSec=5s
[Install]
WantedBy=multi-user.target
----------------------------------------
# systemctl daemon-reload
■ logrotate 用ファイルも編集しておく
# cd /usr/src/snmptt_1.4
# cp snmptt.logrotate /etc/logrotate.d/snmptt
# vi /etc/logrotate.d/snmptt
'------------------
/var/log/snmptt/snmptt*.log /var/log/snmptt/snmptthandler.debug {
weekly
notifempty
missingok
}
/var/log/snmptt/snmptt.debug {
weekly
notifempty
missingok
postrotate
/etc/init.d/snmptt reload >/dev/null 2>/dev/null || true
↓
/usr/bin/systemctl/snmptt reload >/dev/null 2>/dev/null
endscript
}
'------------------
■snmptt.ini を編集
# cd /etc/snmp/
# vi snmptt.ini
---- 以下の様に編集 ※自身の環境に合わせてカスタマイズしてね -----------
mode = standalone
↓
mode = daemon
net_snmp_perl_enable = 0
↓
net_snmp_perl_enable = 1
net_snmp_perl_best_guess = 0
↓
net_snmp_perl_best_guess = 2
translate_log_trap_oid = 0
↓
translate_log_trap_oid = 1
#date_time_format =
↓
date_time_format = %Y/%m/%d %H:%M:%S
#syslog_enable = 1
syslog_enable = 0
---------------------------------------------------------------
■Mib変換ファイルの保管場所の設定
# cd /etc/snmp
# mkdir snmptt_mibs
# cd snmptt_mibs/
# vi snmptt.conf
'-------------------
EVENT general .* "LOGONLY" Normal
FORMAT ZBXTRAP $aA $ar ReceivedUnknownTrap $-*
'-------------------
# cd ..
# vi snmptt.ini
------------
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
END
↓
snmptt_conf_files = <<END
/etc/snmp/snmptt_mibs/snmptt.conf
END
------------
■ログ出力準備をする
# cd /var/log/snmptt/
# touch snmptt.log
# chown snmptt:snmptt snmptt.log
■snmpttサービスを起動
# systemctl start snmptt && systemctl enable snmptt
##9. 再度、snmptrap設定
■snmptrapdの起動オプション設定を変更
# cd /etc/sysconfig/
# vi snmptrapd
---- 以下の様に編集 ----------------------------------------------------
OPTIONS="-m +ALL -On"
------------------------------------------------------------------------
■snmptrapd / snmpttサービスを再起動
# systemctl restart snmptrapd
# systemctl restart snmptt
##おしまい
本手順を元にした自動構築用のAnsible Playbook 書いてます。
https://github.com/Magoshin/Ansible-Playbook/tree/master/zabbix/roles/zabbix-server_ver40_rhel8