ZABBIX 4.0.3 Proxy Raspberry-Piへのインストール手順
http://extstrg.asabiya.net/pukiwiki/index.php?ZABBIX%204.0.3%20Proxy%20Raspberry-Pi%A4%D8%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB%BC%EA%BD%E7目次
概要 †
Raspberry-Pi(Raspberry Pi 3 Model B)にZabbix Proxyをインストールする手順。
OSにはCentOS 7を使用するがARM用のZabbix Proxyパッケージは提供されていないため、ソースからのコンパイルが必要になる。
また、ストレージにはSDカードを使用することから、メディアの劣化を防ぐためにデータベースはRAMディスク上に配置する構成とする。
導入手順 †
機器情報 †
デバイス | Raspberry Pi 3 Model B |
ストレージ | SDカード 64GB |
CentOS 7導入 †
- 1. 以下のサイトよりCentOS7のイメージをダウンロードする。
https://buildlogs.centos.org/centos/7/isos/armhfp/
- 2. ddコマンド等を使用して、イメージをSDカードに書き込む
- 3. Raspberry-PにSDカードを入れて起動するとCentOS7が立ち上がる
- 4. ディスク容量の拡張等の初期設定を行う
- 5. ネットワーク設定を行い、インターネットに接続できる状態にする
事前準備 †
必須パッケージの追加 †
- 1. Zabbixをコンパイルする上で必要となる以下のパッケージを導入する
yum install -y gcc make yum install -y libxml2-devel libevent-devel curl-devel mariadb-devel yum install -y net-snmp net-snmp-utils net-snmp-devel
MariaDBの導入 †
- 1. MariaDBをインストールする
yum install -y mariadb mariadb-server mariadb-libs
- 2. ディレクトリの作成
mkdir -p /data/mysql_db chown mysql.mysql /data/mysql_db
- 3. 設定の作成
Zabbix Proxyを動かす上で必要になりそうな設定を入れる。
最終的には300MBのRAMディスクをデータベース領域として使用するため、バイナリログのサイズには注意する。
- /etc/my.cnf
[mysqld] datadir = /data/mysql_db socket = /var/lib/mysql/mysql.sock character-set-server = utf8 skip-character-set-client-handshake symbolic-links=0 user=mysql ## Paformance Setting table_cache = 1024 max_allowed_packet = 16M max_connections = 50 max_heap_table_size = 400M tmp_table_size = 2M sort_buffer_size = 8M join_buffer_size = 196M read_buffer_size = 1M read_rnd_buffer_size = 2M thread_cache_size = 128 thread_concurrency = 8 query_cache_size = 64M query_cache_limit = 2M ## innoDB Settings innodb_file_per_table innodb_additional_mem_pool_size = 10M innodb_buffer_pool_size = 200M innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit= 2 innodb_log_buffer_size= 2M innodb_log_file_size = 10M innodb_support_xa = 0 innodb_checksums = 0 innodb_doublewrite = 0 [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d
- /etc/my.cnf
- 4. MariaDBを起動する
systemctl start mariadb
- 5. 起動を確認
systemctl status mariadb
- 出力結果
● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Active: active (running) since Thu 1970-01-01 09:00:44 JST; 48 years 4 months ago Process: 343 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS) Process: 310 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS) Main PID: 342 (mysqld_safe) CGroup: /system.slice/mariadb.service ├─342 /bin/sh /usr/bin/mysqld_safe --basedir=/usr └─822 /usr/libexec/mysqld --basedir=/usr --datadir=/data/mysql_db --plugin-dir=/usr/lib/mysql/plugin --log-error=/var/log/mariadb/mariadb.log ...
- 出力結果
- 6. セキュリティ初期設定
質問に沿って適切な設定を行うmysql_secure_installation
fpingの導入 †
ICMP監視の際に必要となるfpingをインストールする。
ARM用パッケージは提供されていないため、こちらもソースからコンパイルする。
- 1. ソースの取得と展開
mkdir /usr/local/src/fping cd /usr/local/src/fping wget https://fping.org/dist/fping-4.0.tar.gz tar xfvz fping-4.0.tar.gz
- 2. コンパイル
cd fping-4.0 ./configure make make install chmod u+s /usr/local/sbin/fping
- 3. リンクの作成
cd /usr/sbin/ ln -s /usr/local/sbin/fping fping
Zabbix Proxyのコンパイル †
ソースの取得 †
Zabbix社のサイトにアクセスし、画面右上の「ダウンロード」リンクからソースコードを取得する。
- Zabbix Sourceを選択
- Stableかpre-releaseから使用するバージョンを選択する
- SourceForgeのサイトに遷移し、ダウンロードを行う
コンパイルとインストール †
ダウンロードしたソースを展開する。(/usr/local/src/zabbixの配下に展開する前提で記載する)。
- ソースを展開
tar xfvz zabbix-4.0.3.tar.gz
- コンパイル
Zabbix ProxyとZabbix Agentをまとめてコンパイルする。
cd zabbix-4.0.3 ./configure --enable-proxy --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 make install
- ディレクトリ作成
mkdir /etc/zabbix/ mkdir /var/log/zabbix mkdir /var/run/zabbix/ chown zabbix.zabbix /var/log/zabbix chown zabbix.zabbix /var/run/zabbix/
- OS起動時にtmpfsにディレクトリを生成する設定を入れる
echo "d /var/run/zabbix 0755 zabbix zabbix" > /etc/tmpfiles.d/zabbix.conf
- 空ファイルの作成
touch /var/log/zabbix/zabbix_traps.log chown zabbix.zabbix /var/log/zabbix/zabbix_traps.log
- 設定ファイルを所定位置に配置
cp ./conf/zabbix_agentd.conf /etc/zabbix/ cp ./conf/zabbix_proxy.conf /etc/zabbix/
- リンク作成
cd /usr/sbin ln -s /usr/local/sbin/zabbix_proxy zabbix_proxy ln -s /usr/local/sbin/zabbix_agentd zabbix_agentd cd /usr/bin/ ln -s /usr/local/bin/zabbix_sender zabbix_sender ln -s /usr/local/bin/zabbix_get zabbix_get
- サービス起動ファイルの作成
systemdから起動するためのファイルを作成する。
ソースには付属していないため、下記内容のファイルを所定位置に生成する。
- /usr/lib/systemd/system/zabbix-proxy.service
[Unit] Description=Zabbix Proxy After=syslog.target After=network.target [Service] Environment="CONFFILE=/etc/zabbix/zabbix_proxy.conf" EnvironmentFile=-/etc/sysconfig/zabbix-proxy Type=forking Restart=on-failure PIDFile=/var/run/zabbix/zabbix_proxy.pid KillMode=control-group ExecStart=/usr/sbin/zabbix_proxy -c $CONFFILE ExecStop=/bin/kill -SIGTERM $MAINPID RestartSec=10s TimeoutSec=0 [Install] WantedBy=multi-user.target
- /usr/lib/systemd/system/zabbix-agent.service
[Unit] Description=Zabbix Agent After=syslog.target After=network.target [Service] Environment="CONFFILE=/etc/zabbix/zabbix_agentd.conf" EnvironmentFile=-/etc/sysconfig/zabbix-agent Type=forking Restart=on-failure PIDFile=/run/zabbix/zabbix_agentd.pid KillMode=control-group ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE ExecStop=/bin/kill -SIGTERM $MAINPID RestartSec=10s [Install] WantedBy=multi-user.target
データベースの作成 †
MariaDBにデータベースを作成し、スキーマを流し込む。
- 1. MariaDBに接続
mysql -u root -p
- 2. データベースの作成
create database zabbix character set utf8 collate utf8_bin;
- 3. データベースへのアクセス権を設定
ユーザ「zabbix」、パスワード「zabbix」を設定する
grant all on zabbix.* to zabbix@localhost identified by 'zabbix'; flush privileges; quit
- 4. スキーマを書き込む
cat /usr/local/src/zabbix/zabbix-4.0.0alpha5/database/mysql/schema.sql | mysql -u zabbix -p zabbix
- 5. MariaDBを停止させる
systemctl stop mariadb
- 6. データベースを保存
後の工程でデータベース領域をRAMディスク化するため、初期状態のデータベースを保存しておく
cp -rfp /data/mysql_db /data/mysql_db.init
- 7. MariaDBを起動させる
systemctl start mariadb
Zabbix Proxyの設定 †
Zabbix Proxyの動作設定を行う。
下記のパラメータは個人的な好みと用途に合わせているが、必須項目は★印の箇所。
- /etc/zabbix/zabbix_proxy.conf
★Server=[Zabbix ServerのIPアドレス] ★HostnameItem=system.hostname LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=20 EnableRemoteCommands=1 PidFile=/var/run/zabbix/zabbix_proxy.pid ★DBName=zabbix ★DBUser=zabbix ★DBPassword=zabbix ProxyOfflineBuffer=24 ConfigFrequency=3600 StartPollers=10 StartPollersUnreachable=2 StartTrappers=5 StartPingers=5 StartDiscoverers=2 StartHTTPPollers=2 StartVMwareCollectors=2 VMwareFrequency=300 VMwarePerfFrequency=60 SNMPTrapperFile=/var/run/zabbix/zabbix_traps.log StartSNMPTrapper=1 Timeout=4 LogSlowQueries=3000
Zabbix Agentの設定 †
Zabbix Agentの動作設定を行う。
下記のパラメータは個人的な好みと用途に合わせているが、必須項目は★印の箇所。
- /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=10 EnableRemoteCommands=1 ★Server=127.0.0.1 ★ServerActive=127.0.0.1 ★HostnameItem=system.hostname
動作確認 †
Zabbix Proxyの確認 †
- 1. サービスを起動する
systemctl start zabbix-proxy
- 2. サービスの状態を確認
systemctl status zabbix-proxy
- 結果
● zabbix-proxy.service - Zabbix Proxy Loaded: loaded (/usr/lib/systemd/system/zabbix-proxy.service; disabled; vendor preset: disabled) Active: active (running) since Thu 1970-01-01 09:01:05 JST; 10min ago Process: 920 ExecStart=/usr/sbin/zabbix_proxy -c $CONFFILE (code=exited, status=0/SUCCESS) Main PID: 922 (zabbix_proxy) CGroup: /system.slice/zabbix-proxy.service ├─922 /usr/sbin/zabbix_proxy -c /etc/zabbix/zabbix_proxy.conf
- 結果
- 3. ログの確認
エラーが出ていないことを確認する
cat /var/log/zabbix/zabbix_proxy.log
- 結果
4357:20190106:135510.454 Zabbix Proxy stopped. Zabbix 4.0.3 (revision 87993). 922:19700101:090105.539 Starting Zabbix Proxy (active) [pi-proxy01]. Zabbix 4.0.3 (revision 87993). 922:19700101:090105.556 **** Enabled features **** 922:19700101:090105.556 SNMP monitoring: YES 922:19700101:090105.557 IPMI monitoring: NO 922:19700101:090105.557 Web monitoring: YES 922:19700101:090105.559 VMware monitoring: YES 922:19700101:090105.560 ODBC: NO 922:19700101:090105.560 SSH2 support: NO 922:19700101:090105.560 IPv6 support: YES 922:19700101:090105.560 TLS support: NO 922:19700101:090105.560 ************************** 922:19700101:090105.560 using configuration file: /etc/zabbix/zabbix_proxy.conf 922:19700101:090105.563 lldp_get module: loaded by proxy process. [2] 922:19700101:090105.856 loaded modules: lldp_get.so 922:19700101:090105.991 current database version (mandatory/optional): 03050042/03050042 922:19700101:090105.991 required mandatory version: 04000000 922:19700101:090105.991 optional patches were found (以下略)
- 結果
Zabbix Agentの確認 †
- 1. サービスを起動する
systemctl start zabbix-agent
- 2. サービスの状態を確認
systemctl status zabbix-agent
- 結果
● zabbix-agent.service - Zabbix Agent Loaded: loaded (/usr/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: disabled) Active: active (running) since Thu 1970-01-01 09:00:58 JST; 11min ago Process: 295 ExecStart=/usr/sbin/zabbix_agentd -c $CONFFILE (code=exited, status=0/SUCCESS) Main PID: 308 (zabbix_agentd) CGroup: /system.slice/zabbix-agent.service ├─308 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf ├─309 /usr/sbin/zabbix_agentd: collector [idle 1 sec] ├─310 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection] ├─311 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection] ├─312 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection] └─313 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
- 結果
- 3. ログの確認
エラーが出ていないことを確認する
cat /var/log/zabbix/zabbix_agent.log
- 結果
308:19700101:091258.599 Zabbix Agent stopped. Zabbix 4.0.3 (revision 87993). 1159:19700101:091258.648 Starting Zabbix Agent [pi3-proxy01.hogehoge]. Zabbix 4.0.3 (revision 87993). 1159:19700101:091258.648 **** Enabled features **** 1159:19700101:091258.648 IPv6 support: YES 1159:19700101:091258.648 TLS support: NO 1159:19700101:091258.649 ************************** 1159:19700101:091258.649 using configuration file: /etc/zabbix/zabbix_agentd.conf 1159:19700101:091258.650 agent #0 started [main process] 1160:19700101:091258.653 agent #1 started [collector] 1161:19700101:091258.656 agent #2 started [listener #1] 1162:19700101:091258.658 agent #3 started [listener #2] 1163:19700101:091258.660 agent #4 started [listener #3] 1164:19700101:091258.663 agent #5 started [active checks #1]
- 結果
サービス自動起動の設定 †
サービスの自動起動は以下の様に設定する。
- MariaDB ⇒ 自動起動しない
systemctl disable mariadb
- Zabbix Proxy ⇒ 自動起動しない
systemctl disable zabbix-proxy
- Zabbix Agent ⇒ 自動起動する
systemctl enable zabbix-agent
再起動試験 †
OSの再起動を行い、以下の確認を行う。
- 1. 自動起動の確認
MariaDB ⇒ 自動起動しない Zabbix Proxy ⇒ 自動起動しない Zabbix Agent ⇒ 自動起動する
- 2. 手動起動試験
systemctl start mariadb systemctl start zabbix-proxy
- 3. 結果確認 systemdのstatusと各サービスのログファイルから、正常起動してエラーが発生していないことを確認する。
データベース領域のRAMディスク化 †
OSの起動時にRAMディスクを生成し、必要なファイルを展開した上でサービスを起動する設定を行う。
一連の処理はスクリプト化した上で、起動時に自動実行させる方式とする。
事前作業 †
- 1. サービス停止
zabbix-proxy、mariadbのサービスを停止するsystemctl stop mariadb systemctl stop zabbix-proxy
- 2. DBの消去
cd /data/mysql_db rm -rf *
RAMディスク生成 †
- 1. RAMディスク生成・サービス起動スクリプトを作成
- [任意のパス]/init-proxy.sh
# /bin/sh # ------------------------ # init proxy script # ------------------------ # Version : 1.0 # update : 2018.04.29 # export LANG=C export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin ## Create RAM Disk mount -t tmpfs -o size=307m tmpfs /data/mysql_db cp -rfp /data/mysql_db.init/* /data/mysql_db/ ## Service Startup systemctl start mariadb systemctl start zabbix-proxy # EOF
- [任意のパス]/init-proxy.sh
- 2. スクリプトに実行権限を付与
chmod 755 [任意のパス]/init-proxy.sh
- 3. OS起動時にスクリプトを読む設定を行う
DB起動前に時刻同期を行う必要があるが、CentOS7系ではsystemdが並列起動してしまうため、アドレスが付与されるタイミングを見越した設定が必要となる。
- /etc/rc.local
## Timeset sleep 20 /usr/sbin/ntpdate ntp.nict.jp ## init zabbix-proxy [任意のパス]/init-proxy.sh
動作試験 †
- 1. 手動試験
スクリプトを手動実行し、RAMディスクのマウント、初期DBファイルの展開、サービスの起動を確認する。
/[任意のパス]/init-proxy.sh
- 2. tmpfsがマウントされていることを確認する
df -h
- 結果
Filesystem Size Used Avail Use% Mounted on /dev/root 58G 1.7G 54G 4% / devtmpfs 460M 0 460M 0% /dev tmpfs 464M 0 464M 0% /dev/shm tmpfs 464M 36M 429M 8% /run tmpfs 464M 0 464M 0% /sys/fs/cgroup /dev/mmcblk0p1 300M 72M 229M 24% /boot tmpfs 307M 68M 240M 23% /data/mysql_db local-fs:/exports/smb/smbshare/server 1.8T 1.3T 438G 75% /exports/server local-fs:/exports/smb/smbshare/setup 1.8T 1.3T 438G 75% /exports/setup local-fs:/exports/backup 1.8T 1.5T 273G 85% /exports/backup tmpfs 93M 0 93M 0% /run/user/1000
- 結果
- 3. mariadb、zabbix-proxyが正常に稼働していることを確認する。
(手順は前述の内容を参照)
- 4. OS再起動試験
OSの再起動を行い、mariadb、zabbix-proxyが正常に自動起動することを確認する。
Last-modified: 2019-04-29 (月) 13:46:05 (1494d)