Open7

ZABBIX for Raspberry Pi

はじめに

これまで色々やってきたわけですが、ZABIIXのことについて一つにまとめてたい。

経緯

掃除時に発掘された手持ちの Raspberry Pi 2B+にZABBIXをいれてネットワークを監視することとする。自宅ネットワーク改善計画としては情報を可視化して得ようという考えですすめることにする。

インストール

OS

Raspberry Pi OSの最新lite版をインストール
このあたりから入手。

OSのセットアップ

まず最初はアップデート

$ sudo apt update
$ sudo apt upgrade
$ sudo reboot

必要あパッケージをインストール

例に習って まずはApatch。それから SURF PPAを使うためおライブラリ。

$ sudo apt install apache2
$ sudo apt install lsb-release apt-transport-https ca-certificates

SURF PPAの設定

まずはPGキーから

$ sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

SURY PPAリポジトリの

$ echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

設定分を含めパッケージ更新

$ sudo apt update

php7.4をインストール

$ sudo apt install php7.4
$ sudo apt install php7.4-gd php7.4-bcmath php7.4-xml php7.4-mbstring php7.4-mysql

日本語使用のためphpの設定を編集

$ sudo i /etc/php/7.4/apache2/php.ini

編集内容

(省略)

[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
mbstring.language = Japanese

mbstring.language = Japaneseのコメントアウトを解除するだけ

PHP-FPMをインストールする。

$ sudo apt install php7.4-fpm

ここまでで使用するphp設定関連は終了。

database

MarinaDBを使う。

$ sudo apt install mariadb-server-10.3

初期設定

$ sudo  mysql_secure_installation

いくつかの回答が必要

  • Enter current password for root (enter for none):
    ENTER
  • Set root password? [Y/n]
    Yを入力
  • New password:
    パスワードを入力
  • Re-enter new password:
    再度パスワードを入力
  • Remove anonymous users? [Y/n]
    Yを入力
  • Disallow root login remotely? [Y/n]
    nを入力(後で別サーバから見えるよう)
  • Remove test database and access to it? [Y/n]
    Yを入力
  • Reload privilege tables now? [Y/n]
    Yを入力

初期設定の変更

$ mysql -uroot -p

これでログインできない状態です。 sudoが必要
この状態を修正する。

$ sudo mysql -u root -p

grant all privileges on *.* to root@localhost identified by 'password' with grant option;
flush privileges;
quit

これで、sudoなしで 使用できるようになります。

ZABBIXのインストール

リポジトリ追加

$ wget https://repo.zabbix.com/zabbix/5.4/raspbian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb
$ sudo dpkg -i zabbix-release_5.4-1+debian10_all.deb
$ sudo apt update

ZABBIXパッケージをインストール

$ sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

データベースの作成

初期データベースを作成します。

$ sudo mysql -u root -p
  • create database zabbix character set utf8 collate utf8_bin;
  • reate user zabbix@localhost identified by 'password';
  • grant all privileges on zabbix.* to zabbix@localhost;

データベース作成して、ユーザー作成して権限設定している。
'password'は適宜。

スキーマと初期データ

$ zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

ここからユーザがrootでは無いところに注意。前で設定したパスワードを使う。

ZABBIXのデータベース接続設定

sudo vi /etc/zabbix/zabbix_server.conf
### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword=
DBPassword=password 

DBPasswordに設定したパスワードを入力

起動

$ sudo systemctl restart zabbix-server zabbix-agent apache2

自動起動設定

$ sudo systemctl enable zabbix-server zabbix-agent

参考

https://www.ingenious.jp/articles/howto/raspberry-pi-howto/zabbix-setup/

文字化け対策

dejavuというフォントが足りないのでグラフなんかに文字化けが出る。

$ sudo apt install fonts-dejavu-core
$ sudo systemctl restart zabbix-server zabbix-agent apache2

再起動してもうまくいかないなー

https://www.opensourcetech.tokyo/entry/2018/10/12/Zabbix_4.0_LTS_グラフ_日本語文字化けの修正方法

‘IPAフォント`が必要っぽいです。

$ sudo apt install fonts-ipafont-gothic

実態は

$ ls -l /usr/share/fonts/opentype/
合計 12
drwxr-xr-x 2 root root 4096  86 23:41 ipafont-gothic
drwxr-xr-x 2 root root 4096  86 23:42 ipafont-mincho
drwxr-xr-x 2 root root 4096  35 08:02 linux-libertine

これを必要な場所に

$ sudo sudo ln -s /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf /etc/alternatives/zabbix-frontend-font

あとは、ログ保存などWriteが多くなるのでSDCardが不安。外付けを考えねば。

agentだけインストールする。

$ wget https://repo.zabbix.com/zabbix/5.4/raspbian/pool/main/z/zabbix-release/zabbix-release_5.4-1+debian10_all.deb
$ sudo dpkg -i zabbix-release_5.4-1+debian10_all.deb
$ sudo apt update
$ sudo apt install zabbix-agent

zabbix-agentの設定

$ sudo vi /etc/zabbix/zabbix_agentd.conf

Server
ServerActive
を設定。コメントをよく読む。

64bit版OSだとsudu apt update

N: Skipping acquire of configured file 'main/binary-arm64/Packages' as repository 'https://repo.zabbix.com/zabbix/5.4/raspbian buster InRelease' doesn't support architecture 'arm64'

ようするに、arm64版はまだ準備されていないということのようです。
でも正常に動いているように見えます。

ZABBIXサーバ障害?

ZABBIXで障害を捉える。動かしてる2B+が

SDCardの読み書きが遅いって。
さてどうするか?

唐突に機能しなくなった。

2B+で動かしていますが、こんな感じの設定。毎朝5:00にリブートしています。

昨日、気づくとリブート以降のデータが全く取れてないことが判明。

...っで原因。

何の気もなくapt upgradeしていて ZABBIXがアップデート。
/etc/zabbiz/zabbiz_seerver.confが書き変わっていました。
これでMySQLへの接続ができなくなっていたことが原因。

アップデートは気をつけよう。

自力でbuildしてみる

Raspberry Pi 4B+に64bit版OSを入れていますが、64bit版のパッケージが提供されていないようです。もう自力でしか...

ソースコードの入手

https://www.zabbix.com/download_sources

ここからダウンドードできる。
現時点の最新版をダウンロードして展開。

$ wget https://cdn.zabbix.com/zabbix/sources/stable/5.4/zabbix-5.4.4.tar.gz
$ tar xvfz zabbix-5.4.4.tar.gz

ビルドしてみる

https://www.zabbix.com/documentation/current/manual/installation/install

準備

groupとuser、必要なディレクトリを作成する。

$ sudo addgroup --system --quiet zabbix
$ sudo adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix
$ mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
$ sudo chown zabbix:zabbix /var/lib/zabbix

buildしてみる

To configure the sources for a Zabbix server and agent, you may run something like:
サーバーとエージェントを作成する。 DBはMySQL(mariadb-10.3)

$ ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi

エラーはパッケージが足りないってことで都度対応しながらエラーがなくなるまで。
(メモしてなかった)
エラーがなくなるとこういう感じ

Configuration:

  Detected OS:           linux-gnu
  Install path:          /usr/local
  Compilation arch:      linux

  Compiler:              cc
  Compiler flags:         -g -O2

  Library-specific flags:
    database:              -I/usr/include/mariadb -I/usr/include/mariadb/mysql
    libXML2:               -I/usr/include/libxml2
    Net-SNMP:               -I/usr/local/include -I/usr/lib/aarch64-linux-gnu/perl/5.28/CORE -I/usr/include/mariadb -I/usr/include/mariadb/mysql -I. -I/usr/include
    OpenIPMI:              -I/usr/include

  Enable server:         yes
  Server details:
    With database:         MySQL
    WEB Monitoring:        cURL
      SSL certificates:      /usr/local/share/zabbix/ssl/certs
      SSL keys:              /usr/local/share/zabbix/ssl/keys
    SNMP:                  yes
    IPMI:                  yes
    SSH:                   no
    TLS:                   no
    ODBC:                  no
    Linker flags:           -L/usr/lib/aarch64-linux-gnu   -L/usr/lib/aarch64-linux-gnu/       -L/usr/lib       -rdynamic
    Libraries:              -lmariadb       -lnetsnmp   -lOpenIPMI -lOpenIPMIposix -lz -lpthread -levent    -lcurl -lm -ldl  -lresolv -lxml2   -lpcre
    Configuration file:    /usr/local/etc/zabbix_server.conf
    External scripts:      /usr/local/share/zabbix/externalscripts
    Alert scripts:         /usr/local/share/zabbix/alertscripts
    Modules:               /usr/local/lib/modules

  Enable proxy:          no

  Enable agent:          yes
  Agent details:
    TLS:                   no
    Modbus:                no
    Linker flags:                -rdynamic
    Libraries:              -lz -lpthread    -lcurl -lm -ldl  -lresolv -lxml2   -lpcre
    Configuration file:    /usr/local/etc/zabbix_agentd.conf
    Modules:               /usr/local/lib/modules

  Enable agent 2:        no

  Enable web service:    no

  Enable Java gateway:   no

  LDAP support:          no
  IPv6 support:          yes

***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************

これで準備完了。
make installとあるけどインストールには権限が無いので

$ sudo make install

これでbuildされてインストールまで。しばしかかります。

続く...

作成者以外のコメントは許可されていません