1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ZABBIX 7.0】テンプレート(2MB以上)エクスポートエラー対応

Last updated at Posted at 2024-10-14

はじめに

「ZABBIX4.0」で使用していたテンプレートを「ZABBIX7.0」にインポートしようとしたところ、アップロードサイズ制限でインポートに失敗した。

※ ファイル選択時にエラーが出た。

image.png

アップロードを行おうとしたファイルを確認すると、約「5MB」であった。

image.png

以下サイトを参考に対応しようとしたが、ZABBIXの仕様の変更?などでうまくいかなかった。なので自分なりに調べて解決できたので、ここに情報を残したいと思う。

【エクスポートしたZabbixのテンプレートのサイズが2Mを超えてしまい、インポートができなくなった人向けメモ】

解決方法(結論)

さっさと解決方法が知りたいんじゃ!という方のために、結論から先に書いときますね。

① 「upload_max_filesize」のアップロード最大サイズを上げる。
② 「memory_limit」のメモリ使用上限を上げる。
③ 「systemctl reload php-fpm」を実施し、変更した定義を適用する。

/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache

listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M ←- ★★★ここを修正する。★★★
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M ←- ★★★ここを修正する。★★★
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000

環境

ZABBIX環境を以下に記載する。

以下参照:
【検証】ZABBIX7.0 構築編

状況確認

PHP設定でアップロード最大サイズが現在どうなっているか確認してみる。

ZABBIXで使用されているPHP関連のファイルが配置されている階層は、「/usr/share/zabbix」である。そこに以下のファイルを配置し、PHPの設定状況をブラウザから確認する。

/usr/share/zabbix/info.php
<?php
phpinfo();

ブラウザアクセス:
http://<zabbix-serverのIP>/zabbix/info.php

image.png

アップロード最大サイズは「upload_max_filesize」で設定されている。「2M」になっていることがわかる。

「upload_max_filesize」設定変更

今回「PHP-FPM」をPHPの実行環境として使用しているので、「upload_max_filesize」を変更するには「/etc/php-fpm.d/zabbix.conf」を修正する必要がある。

私の場合は、アップロードするサイズが約「5MB」あるので「upload_max_filesize」を「5MB」に変更しました。

/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache

listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M ←- ★★★ここを修正する。★★★
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000

変更後は、「systemctl reload php-fpm」を実行し、変更を反映させる。
再度ブラウザからPHP設定状況を確認すると変更されていることが確認できる。

image.png

再アップロード

再度、ファイルを選択してみると、「2M」制限エラーは出てこない。
これでインポートできる!!!

image.png

っと、思ったが「想定しないエラーが発生しました。」と別のエラーが出た。
・・・。(;゚Д゚)は?

image.png

原因究明

原因究明するために、以下のフロントエンドのエラーログファイルを確認してみる。
・/var/log/php-fpm/error.log(PHP-FPM エラーログファイル)
・/var/log/httpd/error_log(Apache HTTP エラーログファイル)

再度インポートを実施し、エラーログを確認してみたところ以下のエラーが出力された。
※ PHP-FPM エラーログファイルは、特に何も出力されなかった。

/var/log/httpd/error_log
[root@RHEL8 ~]# tail -f /var/log/httpd/error_log
[Mon Oct 14 22:09:36.377876 2024] [proxy_fcgi:error] [pid 6452:tid 140362467235584] [client 192.168.10.1:53884] AH01071: Got error 'PHP message: PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /usr/share/zabbix/include/classes/html/CTag.php on line 106', referer: http://zabbixsvr/zabbix/zabbix.php?action=template.list
翻訳
 PHP 致命的なエラー:  usr/share/zabbix/include/classes/html/CTag.php on line 106', referer: http://zabbixsvr/zabbix/zabbix.php?action=template.list において、許容メモリサイズ 134217728 バイトを使い果たしました (20480 バイトを割り当てようとしました)。

どうやらPHPの処理でメモリ制限(128MB)を超える処理をしてしまったことにより、インポートが失敗したようだ。てことは、PHPのメモリ制限の上限を上げればいいってこと。

※ ブラウザから現在のメモリ制限状態を確認(memory_limit)

image.png

メモリ制限の引き上げ

メモリ制限は「memory_limit」で設定する。値を変更するには、再度「/etc/php-fpm.d/zabbix.conf」を修正する必要がある。

私の場合は、とりあえず2倍の「256MB」に変更したよ。

/etc/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache

listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/session

php_value[max_execution_time] = 300
php_value[memory_limit] = 128M ←- ★★★ここを修正する。★★★
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000

変更後は、「systemctl reload php-fpm」を実行し、変更を反映させる。
再度ブラウザからPHP設定状況を確認すると変更されていることが確認できる。

image.png

再々アップロード

再度インポートをしてみると、今度はうまくいきました。

image.png

image.png

image.png

その他

/etc/httpd/conf.d/zabbix.conf
#
# Zabbix monitoring system php web frontend
#

Alias /zabbix /usr/share/zabbix

ProxyTimeout 300

<Directory "/usr/share/zabbix">
    Options FollowSymLinks
    AllowOverride None
    Require all granted

    <IfModule dir_module>
        DirectoryIndex index.php
    </IfModule>

    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/run/php-fpm/zabbix.sock|fcgi://localhost"
    </FilesMatch>
</Directory>
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?