Ubuntu20.04へZabbix4.4.xをインストールする


Ubuntu20.04はインストール直後のパッケージではzabbix-4.0がインストール可能です。しかし、以前は4.4.4を使っていたので、最新版の4.4.8をインストールします。

途中で以下のエラーが出たので序に対策しました。動けば良し!!(笑)

# Zabbix4.4.8インストール中、ブラウザでのセットアップ画面で表示されたエラー
# DBのinformation_schema.schemataテーブルから文字コードを確認している際に
# エラーになっているのだが、DBはきちんとutf8で作成しているので、
# エラー処理自体を無条件にスルーするように修正しました。

Undefined index: table_name [zabbix.php:21 → require_once() → ZBase->run() → ZBase->processRequest() → CView->getOutput() → include() → make_status_of_zbx() → MysqlDbBackend->checkEncoding() → MysqlDbBackend->checkTablesEncoding() → DBfetchColumn() in include/db.inc.php:1009]

対象環境

  • Ubuntu19.10
  • Apache2
  • Mysql8.0
  • php7.3
  • systemd

インストール

次回自分がインストールしたときに困らなければいいので、コピペで行けるようにしておきます。

# パスワードは適宜変更してください。
export DBPASSWD='yourzabbixPasswrd0d9s)'

sudo mysql
create database zabbix DEFAULT CHARACTER SET UTF8;
CREATE USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourzabbixPasswrd0d9s)';
GRANT ALL ON zabbix.* TO 'zabbix'@'localhost';
flush privileges;
exit;

cd /tmp
wget https://cdn.zabbix.com/stable/4.4.8/zabbix-4.4.8.tar.gz
tar -zxvf zabbix-4.4.8.tar.gz
cd zabbix-4.4.8/database/mysql/
sudo mysql zabbix < schema.sql
sudo mysql zabbix < images.sql
sudo mysql zabbix < data.sql

# 日本語表示できるようにする
localedef -f UTF-8 -i ja_JP ja_JP

sudo groupadd zabbix
sudo useradd -g zabbix -s /bin/bash zabbix
sudo apt-get install apache2 php php-mysql libapache2-mod-php php-mbstring php-xml \
	php-gd php-bcmath php-ldap build-essential libmysqlclient-dev libssl-dev \
	libsnmp-dev libevent-dev libopenipmi-dev libcurl4-openssl-dev libxml2-dev \
	libssh2-1-dev libpcre3-dev libldap2-dev libiksemel-dev libcurl4-openssl-dev \
	libgnutls28-dev  unixodbc unixodbc-dev

cd /tmp/zabbix-4.4.8
./configure --enable-server --enable-agent --with-mysql \
	--with-openssl --with-net-snmp --with-openipmi --with-libcurl \
	--with-libxml2 --with-ssh2  --with-unixodbc

make && sudo make install
sudo cp /usr/local/etc/zabbix_server.conf /usr/local/etc/zabbix_server.conf.org

sudo sed -i 's/^LogFile=.*/LogFile=\/var\/log\/zabbix_server.log/g' /usr/local/etc/zabbix_server.conf 
sudo sed -i 's/^[# ]*DBHost=.*/DBHost=localhost/g' /usr/local/etc/zabbix_server.conf
sudo sed -i 's/^DBName=.*/DBName=zabbix/g' /usr/local/etc/zabbix_server.conf
sudo sed -i 's/^DBUser=.*/DBUser=zabbix/g' /usr/local/etc/zabbix_server.conf

# rootで実行してください
echo "DBPassword=${DBPASSWD}" >> /usr/local/etc/zabbix_server.conf

# ログファイルを作成してパーミッション付与
touch /var/log/zabbix_server.log
chown zabbix:zabbix /var/log/zabbix_server.log
touch /var/log/zabbix_agentd.log
chown zabbix:zabbix /var/log/zabbix_agentd.log

mv /tmp/zabbix-4.4.8/frontends/php /var/www/html/zabbix
sudo cp /etc/php/7.4/apache2/php.ini /etc/php/7.4/apache2/php.ini.bak
sudo sed -i 's/^post_max_size =./post_max_size = 32M/g' /etc/php/7.4/apache2/php.ini 
sudo sed -i 's/^max_execution_time =./max_execution_time = 300/g' /etc/php/7.4/apache2/php.ini
sudo sed -i 's/^memory_limit =./memory_limit = 256M/g' /etc/php/7.4/apache2/php.ini 
sudo sed -i 's/^max_input_time =./max_input_time = 300/g' /etc/php/7.4/apache2/php.ini
sudo sed -i 's/;date.timezone =/date.timezone = "Asia\/Tokyo"/g' /etc/php/7.4/apache2/php.ini

sudo service apache2 restart

Zabbixの設定

ウェブブラウザで、zabbixをインストールしたサーバのURL(http://host/zabbix)へアクセスする。

DB接続エラー対策

上記画面まで来た後に、DB接続できません的なエラーが出ました。

簡単にコードを見たところ、./include/classes/db/MysqlDbBackend.phpの82行目あたりの以下のコードでエラーとなっているようでした。

文字コードはDB作成時に明確にUTF8を指定しているので、このチェック処理はなくてもいいと勝手に判断して、チェック処理を全部コメントアウトし、常にtrueを返すように以下のように修正しました。

        protected function checkTablesEncoding(array $DB) {
        return true;
        }

修正後、apache2を再起動して再度、該当画面でDB情報を入れたところ、次にいけました。

Finishを押すと、ログイン画面へ遷移する。 デフォルトユーザーパスワードはAdmin/zabbix。

zabbix-server,zabbix-agentdをsystemdに登録

個人的にsystemdで管理したかったので以下ファイルを作成しました。Ubuntu20.04への適用に問題はないと思いますが、自己責任で利用してください。

上記の*.serviceファイルをsystemdに登録する方法は以下。

cd /tmp
wget https://eco.senritu.net/wp-content/uploads/zabbix-agent.zip
wget https://eco.senritu.net/wp-content/uploads/zabbix-server.zip

unzip zabbix-agent.zip
unzip zabbix-server.zip

sudo mv zabbix-agent.service /etc/systemd/system/
sudo mv zabbix-server.service /etc/systemd/system/

sudo systemctl daemon-reload

# 動作確認
sudo systemctl start zabbix-agent.service
sudo systemctl start zabbix-server.service

# 自動起動するように設定する
sudo systemctl enable zabbix-agent.service
sudo systemctl enable zabbix-server.service

最後に

途中で根本原因の追究を行わずに結果オーライで修正しています。mysqlの設定も幾つか試してみたのですが、状況が改善しなかった為そのようにしました。

同件エラーで調べたところ、中国のサイトで同件を発見したのですが、全く回答は付いておらず・・・・どなたか教えて頂けると幸甚です。

タグ , . ブックマークする パーマリンク.

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください