見出し画像

Zabbix が「自分がヤバい」と言ってきた問題と対応

こんにちは。エンジニアのふるやです🙃
今回は Zabbix が「自分がヤバい」と言ってきた問題と対応 について、
綴らせていただきます。

経緯

メモリ使用量が多い旨の通知が...
まさかの監視する側であるZabbixサーバーから届いていた件の
対応のご紹介となります(今思えば「まさか」でもない)

そもそも、Zabbix(ざびっくす)とは?

ZabbixはITインフラストラクチャ・コンポーネントの可用性やパフォーマンスを監視するためのエンタープライス向けソフトウェアです。Zabbixはオープンソース・ソフトウェアとして開発されており、無料でダウンロードいただくことが可能です。(引用元:公式

要は、サーバーのパフォーマンス・負荷を監視するソフトウェアです。

Zabbixを使えば監視対象のCPUやメモリが高負荷になった際、
ChatworkSlack等のWebhook APIを利用可能なサービスに
通知することも可能です。

具体的に何がどれだけヤバいのか「原因」を調べる

まず、どれぐらいメモリを使用しているのか、
コマンドで現状のメモリ使用量を確認します。
apacheかな?と推測し、絞り込みます。

$ ps aux | grep apache

php-fpmのメモリ使用量が特に多いことが判明したので、
サービスのstatusを確認します
(サービス名が分からなかったので「Zabbix php-fpm」でググりました)

$ systemctl status rh-php72-php-fpm.service

※Zabbixが使用している php-fpm のサービス名が特殊なので注意です!

$ systemctl status rh-php72-php-fpm.service

● rh-php72-php-fpm.service - The PHP FastCGI Process Manager
  Loaded: loaded (/usr/lib/systemd/system/rh-php72-php-fpm.service; enabled; vendor preset: disabled)
  Active: active (running) since ------------------------
Main PID: 23375 (php-fpm)
  Status: "Processes active: 0, idle: 8, Requests: 652, slow: 0, Traffic: 0.4req/sec"
  CGroup: /system.slice/rh-php72-php-fpm.service
          tq23375 php-fpm: master process (/etc/opt/rh/rh-php72/php-fpm.conf)
          tq23376 php-fpm: pool www
          tq23377 php-fpm: pool www
          tq23378 php-fpm: pool www
          tq23379 php-fpm: pool www
          tq23380 php-fpm: pool www
          tq23545 php-fpm: pool zabbix
          tq23769 php-fpm: pool zabbix
          mq24208 php-fpm: pool zabbix

724 18:26:27 web-server systemd[1]: Starting The PHP FastCGI Process Manager...
724 18:26:27 web-server systemd[1]: Started The PHP FastCGI Process Manager.

原因を推測できたので「対応」する

設定ファイルを変更します。
上記 status から、 /etc/opt/rh/rh-php72/*.d の下に設定ファイルがあると推測、修正します。

$ vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

以下のキーを確認し、値を変更する。

pm.max_children = 50
pm.start_servers = 1
pm.min_spare_servers = 1
pm.max_spare_servers = 3

以下のコマンドで設定を反映する。

$ systemctl reload rh-php72-php-fpm.service

メモリ使用量の改善を確認する

$ ps aux | grep apache

おまけ

本番DBのslowクエリログに、
スキーマ単位でDBサイズを取得するクエリが大量に上がっていました。
以下の通り、Zabbix アイテムにあるので、無効化します。

画像1

まとめ

「何となく動いているから」ではなく、
どういう理由で動いているのか」や「正しいのかどうか」を
確認しながら進めていこうと改めて思いました😌


以上、エンジニアふるや(@h_furuya_)が綴らせていただきました。