Help us understand the problem. What is going on with this article?

Zabbix4.0 をRHEL8 へインストール(仮)- SNMPTT設定もするよ

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

mgmjoke
kubernetesは体制立て直して再出発が必要っす でも今はAnsibleばっかだなあ。 ElasticStack もやらないといけなくなってきました。 以下でつぶやいてます @mgmjoke79_mgm
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした