目次~
#contents

*概要 [#z914616b]
Raspberry-Pi(Raspberry Pi 3 Model B)にZabbix Proxyをインストールする手順。~
OSにはCentOS 7を使用するがARM用のZabbix Proxyパッケージは提供されていないため、ソースからのコンパイルが必要になる。~
また、ストレージにはSDカードを使用することから、メディアの劣化を防ぐためにデータベースはRAMディスク上に配置する構成とする。~

*導入手順 [#w1f61a5a]
**機器情報 [#g5abd8dc]
|デバイス|Raspberry Pi 3 Model B|
|ストレージ|SDカード 64GB|

**CentOS 7導入 [#a866a3d7]
-1. 以下のサイトよりCentOS7のイメージをダウンロードする。
 https://buildlogs.centos.org/centos/7/isos/armhfp/

-2. ddコマンド等を使用して、イメージをSDカードに書き込む

-3. Raspberry-PにSDカードを入れて起動するとCentOS7が立ち上がる

-4. ディスク容量の拡張等の初期設定を行う

-5. ネットワーク設定を行い、インターネットに接続できる状態にする

**事前準備 [#gd6d44fa]

***必須パッケージの追加 [#jbb37607]
-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の導入 [#r9efbbed]
-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

-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の導入 [#x7fdd2a4]
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のコンパイル [#z76e15bc]
***ソースの取得 [#f9b63d62]
Zabbix社のサイトにアクセスし、画面右上の「ダウンロード」リンクからソースコードを取得する。~
-Zabbix Sourceを選択
-Stableかpre-releaseから使用するバージョンを選択する
-SourceForgeのサイトに遷移し、ダウンロードを行う

***コンパイルとインストール [#m4c064f2]
ダウンロードしたソースを展開する。(/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

***データベースの作成 [#x0aebef1]
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の設定 [#u0cc09a6]
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の設定 [#u0cc09a6]
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

**動作確認 [#sb0de535]
***Zabbix Proxyの確認 [#nfd064fb]
-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の確認 [#h503dabc]
-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]

***サービス自動起動の設定 [#y214c6c3]
サービスの自動起動は以下の様に設定する。~

--MariaDB ⇒ 自動起動しない
 systemctl disable mariadb

--Zabbix Proxy ⇒ 自動起動しない
 systemctl disable zabbix-proxy

--Zabbix Agent ⇒ 自動起動する
 systemctl enable zabbix-agent

***再起動試験 [#n8965f86]
OSの再起動を行い、以下の確認を行う。

-1. 自動起動の確認
 MariaDB ⇒ 自動起動しない
 Zabbix Proxy ⇒ 自動起動しない
 Zabbix Agent ⇒ 自動起動する

-2. 手動起動試験
 systemctl start mariadb
 systemctl start zabbix-proxy

-3. 結果確認
systemdのstatusと各サービスのログファイルから、正常起動してエラーが発生していないことを確認する。

**データベース領域のRAMディスク化 [#ye77d7b7]
OSの起動時にRAMディスクを生成し、必要なファイルを展開した上でサービスを起動する設定を行う。~
一連の処理はスクリプト化した上で、起動時に自動実行させる方式とする。~

***事前作業 [#h8bf1690]
-1. サービス停止~
zabbix-proxy、mariadbのサービスを停止する
 systemctl stop mariadb
 systemctl stop zabbix-proxy

-2. DBの消去
 cd /data/mysql_db
 rm -rf *

***RAMディスク生成 [#f40b5227]
-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

-2. スクリプトに実行権限を付与
 chmod 755 [任意のパス]/init-proxy.sh

-3. OS起動時にスクリプトを読む設定を行う
-3. OS起動時にスクリプトを読む設定を行う~
DB起動前に時刻同期を行う必要があるが、CentOS7系ではsystemdが並列起動してしまうため、アドレスが付与されるタイミングを見越した設定が必要となる。~

--/etc/rc.local
 ## Timeset
 sleep 20
 /usr/sbin/ntpdate ntp.nict.jp
 
 ## init zabbix-proxy
 [任意のパス]/init-proxy.sh

***動作試験 [#ea7d773c]
-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が正常に自動起動することを確認する。~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS