目次

概要

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. ディスク容量の拡張等の初期設定を行う

事前準備

必須パッケージの追加

  • 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
  • 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
  • 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が正常に自動起動することを確認する。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-04-29 (月) 13:46:05 (1821d)