LoginSignup
6
7

More than 1 year has passed since last update.

Zabbix をUbuntu 20.04 で構築する

Last updated at Posted at 2021-01-11

はじめに

Network を設計・構築した後、長い運用が始まる. Network 機器は機械だから当然に壊れる. 想定していないTraffic が流れる、通信品質が劣化する。何かの方法で観測し続け、監視する必要がある。
Cisco でもどこでも自前の監視システムを提供しているが、下手にそれを入れるとベンダロックに繋がる。
Network 機器ベンダから独立していて、ソースコードが公開されていて、どこかが保守を提供してくれるものが望ましい。 というわけで Zabbix.

Zabbix サーバの構築

基本的には Zabbix の公式サイト に従えば良い。ただ、Zabbix を動作させるためには Webサーバと Database サーバを自前で用意する必要があり、その辺りの情報が書いていない。Document もあるにはあるのだが、日本語版は Zabbix 2.2までしかなく、ローカライゼーションのための情報が役に立たない。つらい。

ターゲット環境

  • Zabbix 5.0 LTS
  • Ubuntu 20.04
  • PostgreSQL 12.5
  • Apache HTTP Server 2.4.41

PostgreSQL/Apache HTTP ServerはUbuntu 20.04の標準 Repositoryのものを利用した。
Database はMariaDB/PostgreSQLのどちらかから選べる。MariaDBを使った構築例が多かったが、ここでは PostgreSQL を採用した。

普段は PostgreSQL を使っているのでこの判断をした。のだが、構築のために調査をしていたら、Zabbix での Databaseは更新系処理が多いため、参照系処理が多い他のDatabaseとは共存させるべきでないらしい。単体で作るのならあえて PostgreSQLにこだわるべきでなかったかもしれない。

構築に必要な関連ソフトウェアのインストール

sudo apt install postgresql postgresql-contrib
sudo apt install apache2 libapache2-mod-php 

PostgreSQL/Apache HTTP Serverをインストール。実体として入るのは下記になる。

sudo apt install postgresql postgresql-contrib libpq5 postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common sysstat
sudo apt install apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php libapache2-mod-php7.4 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0 php7.4-cli php7.4-json php7.4-opcache php7.4-readline

Zabbixを動かした後の不具合対処や追加機能で他に入れるパッケージがあるが、それは後で。

Zabbix 本体のインストール

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
sudo dpkg -i zabbix-release_5.0-1+$(lsb_release -sc)_all.deb
sudo apt update
sudo apt -y install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-agent zabbix-apache-conf

これは公式サイト通り。

PostgreSQLに Zabbix用Databaseを作成

sudo -u postgres createuser --pwprompt zabbix

Zabbix が利用するDatabaseを作成する。--pwprompt はパスワードを作成するためのオプションで、このコマンドを実行すると、Databaseを利用する際のPasswordを決めるよう要求される。ので、適当に設定。

sudo -u postgres createdb -O zabbix zabbix

zabbixユーザ権限で、zabbixという名前のDatabase を作成する。

zcat /usr/share/doc/zabbix-server-pgsql*/create.sql.gz | sudo -u zabbix psql zabbix

create.sql.gz は先にインストールしたzabbix-server-pgsql に含まれるファイル。
解凍するとかなり長いSQLが出てくる。これをPostgreSQL の zabbix Databaseに流し込む。

Zabbix 6.0ではファイルのパスが以下のように変わっていた。

 zcat /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

Zabbix 起動に必要な設定

/etc/zabbix/zabbix_server.conf

### Option: DBPassword
#       Database password.
#       Comment this line if no password is used.
#
# Mandatory: no
# Default:
# DBPassword= ← コメントアウトを解除し、先に設定したZabbix DB の Password を入力。

/etc/zabbix/apache.conf

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all

    <IfModule mod_php5.c>
     (snip)
        # php_value date.timezone Europe/Riga ← コメントアウトを解除し、Asia/Tokyoとかにする
    </IfModule>
    <IfModule mod_php7.c>
     (snip)
        # php_value date.timezone Europe/Riga ← コメントアウトを解除し、Asia/Tokyoとかにする
    </IfModule>
</Directory>

ここで編集した/etc/zabbix/apache.conf は パッケージ zabbix-apache-conf に含まれていた。

Zabbix の起動

sudo  systemctl restart zabbix-server zabbix-agent apache2
sudo  systemctl enable zabbix-server zabbix-agent apache2

これでhttp://サーバのアドレス/zabbix/ へアクセスすると、Zabbixのsetup wizardが立ち上がる。
デフォルトのログインアカウントはAdmin/zabbix.

これでブラウザからZabbixへアクセスできる。 Zabbixの起動画面

初期カスタマイズ

【前準備】Linuxサーバ自体の日本語対応

Zabbixの日本語対応を行う場合、Zabbixが動いているサーバ自体が日本語対応しているかの確認を実施する。

$ locale -a |grep JP
ja_JP.utf8

もしコメントアウトされていた場合、/etc/locale.gen を編集し、コメントアウトを解除する。

$ sudo local-gen
Generating locales (this might take a while)...
  en_AG.UTF-8... done
(snip)
  ja_JP.UTF-8... done
Generation complete.

Zabbixの日本語化

左下のUser Setting メニュー から変更可能。

グラフの日本語化

使用帯域を表すGraph表示の一部が正しく表示できない問題があった。Zabbix の Graph表示用フォントが日本語に対応していないことが問題。

sudo apt install fonts-takao-pgothic
sudo update-alternatives --install /usr/share/zabbix/assets/fonts/graphfont.ttf zabbix-frontend-font /usr/share/fonts/truetype/takao-gothic/TakaoPGothic.ttf 20

RHELの例では lnで直接書き換える手法も見たが、Ubuntuではupdate-alternativesを使うのがお作法。

SNMP Trap 受信

Zabbix でも SNMP Trapを受信できる。ただ、Zabbix自体では受信できず、snmptrapdで受信/snmpttで成形したものを表示する形で行う。Zabbix自体はsnmptrapdのラッパーとして動作。4.0/5.0でも同様で、そういうPolicyで設計されている様子。

ただ、Zabbix でSNMP Trap を扱うのは結構大変で実装方法はかなり複雑。別の記事に整理した。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7