MySQL8のバイナリーログ自動消去

MySQLからデフォルトでバイナリーログがONになったので、ストレージが足りなくなる事象が発生した。
ログを定期的に消去してログのローテーションをする設定をする。

まずはログイン

$ mysql -u root -p
Server version: 8.0.32 Source distribution

バイナリーログ設定の確認

mysql> SHOW GLOBAL VARIABLES LIKE 'log_bin';
Variable_name Value
log_bin ON
1 row in set (0.00 sec)

expire_logs_daysでログを消去するタイミングを指定する。

mysql> show variables like 'expire_logs_days';
Variable_name Value
expire_logs_days 0
1 row in set (0.01 sec) mysql> SET GLOBAL expire_logs_days = 14; ERROR 3683 (HY000): The option expire_logs_days and binlog_expire_logs_seconds cannot be used together. Please use binlog_expire_logs_seconds to set the expire time (expire_logs_days is deprecated)

とエラーを吐かれる。binlog_expire_logs_secondsを使ってくれと言われるので、秒単位で設定する。14日 (14*24*60*60秒=1209600秒)

mysql> SET GLOBAL binlog_expire_logs_seconds = 1209600;
Query OK, 0 rows affected (0.00 sec)

今度は通ったので確認。

mysql> show variables like 'binlog_expire_logs_seconds';
Variable_name Value
binlog_expire_logs_seconds 1209600
1 row in set (0.01 sec) mysql>exit

どうやら公式ドキュメントを見るとbinlog_expire_logs_secondsはデフォルトで30日(2592000秒)と設定されているようだ。この環境のストレージだと30日もたないみたい。

参考
MySQL公式 17.1.6.4 バイナリロギングのオプションと変数
https://dev.mysql.com/doc/refman/8.0/ja/replication-options-binary-log.html

RockyLinux 8にiDRAC サービスモジュールをインストールする

RockyLinux 8でiDRAC サービスモジュールをインストールする。
ちなみにWebのUIからマウントできるインストールパッケージはサポート外のOSと言われてしまい、インストールできなかった場合の対処法となる。

DELL公式サイトから、当該のパッケージをダウンロードする。
Linux向けDell EMC iDRAC Service Module、v5.1.0.0
ファイル名はOM-iSM-Dell-Web-LX-5100-3036_A00.tar.gzだった。

マニュアルに従い、解凍したディレクトリに入り# ./setup.shをするが、やはりサポート外のOSにということでインストールできなかった。

解凍したzipファイルの中にrpmファイルがあるので、OSのディストリビューションがマッチするrpmファイルを使ってインストールする。
dcism単体では依存物が足りないので、まず最初に同じ解凍したディレクトリに一緒に入っているrpmファイルでdcism-oscをインストールする。

# dnf install dcism-osc-7.1.00-129.x86_64.rmp

その後、ディレクトリを変えて

# cd ../RHEL8/x86_64/

本体をインストールする。

# dnf install dcism-5.1.0.0-3036.el8.x86_64.rpm

有効化と自動起動

# systemctl enable dcismeng.service
# systemctl status dcismeng.service

iDRACのWeb UIに戻り、OSのディストリビューションが表示されていれば正しく動作している。

RockyLinux 9 のZabbix 6.2 をZabbix 6.4へアップグレード

下記の公式情報のように2023年1月でZabbix 6.2のサポートが終わったので6.4へアップグレードします。
https://www.zabbix.com/jp/life_cycle_and_release_policy

rpmの読み込み先は以下を使って、適切な環境を選ぶ。
https://www.zabbix.com/download?zabbix=6.4&os_distribution=red_hat_enterprise_linux&os_version=9&components=server_frontend_agent&db=mysql&ws=apache


さて、本題
下記の公式ドキュメントに従って作業する。
https://www.zabbix.com/documentation/6.4/en/manual/installation/upgrade/packages/rhel

# systemctl stop zabbix-server
# systemctl stop zabbix-proxy
# rpm -Uvh rpm -Uvh https://repo.zabbix.com/zabbix/6.4/rhel/9/x86_64/zabbix-release-6.4-1.el9.noarch.rpm

アップグレード

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-agent
アップグレード済み:
  zabbix-agent-6.4.0-release1.el9.x86_64          zabbix-apache-conf-6.4.0-release1.el9.noarch   zabbix-server-mysql-6.4.0-release1.el9.x86_64   zabbix-web-6.4.0-release1.el9.noarch   zabbix-web-deps-6.4.0-release1.el9.noarch  
  zabbix-web-japanese-6.4.0-release1.el9.noarch   zabbix-web-mysql-6.4.0-release1.el9.noarch    

完了しました!

zabbixの再起動

# systemctl start zabbix-server
# systemctl start zabbix-agent

必要ならば以下を実行

# systemctl start zabbix-proxy
# systemctl start zabbix-agent2

じつはアップグレードの途中で以下のエラーが出た。

エラー: 
 問題: 競合するリクエスト
  - libevent-2.1.so.6()(64bit) が提供されません zabbix-server-mysql-6.4.0-release1.el8.x86_64 に必要です
  - libevent_pthreads-2.1.so.6()(64bit) が提供されません zabbix-server-mysql-6.4.0-release1.el8.x86_64 に必要です
  - libnetsnmp.so.35()(64bit) が提供されません zabbix-server-mysql-6.4.0-release1.el8.x86_64 に必要です

小一時間ほど調べて、リポジトリの読み込み先を間違えていた。(RHEL9とするべきところをRHEL8を読み込んでいた。)

RHEL9にZabbix6.0LTSのzabbix-agent2をインストールする

RHEL9にZabbix6.0LTSのzabbix-agent2をインストールする

$ sudo rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
$ sudo dnf clean all
$ sudo dnf -y install zabbix-agent2
$ vim /etc/zabbix/zabbix_agent2.conf
Server=
ServerActive=

Server=,ServerActive=2項目にZabbix-serverのIPアドレスを入力

zabbix-agent2の自動起動設定と起動

$ sudo systemctl enable zabbix-agent2.service 
$ sudo systemctl start zabbix-agent2.service 

Firewallの設定

$ sudo firewall-cmd --permanent --add-service zabbix-agent
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-services 
cockpit ssh zabbix-agent

ちなみにfirewallの設定はcockpitのネットワーキング->ファイアウォールからでも設定できる。

RHEL8で時刻合わせ

まずあるかどうか

$ chronyc --version
chronyc (chrony) version 4.1 (+READLINE +SECHASH +IPV6 +DEBUG)


なければインストール

# yum -y install chrony

起動しているか?

# systemctl status chronyd
● chronyd.service - NTP client/server
   Loaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:chronyd(8)
           man:chrony.conf(5)

止まっているので起動する

# systemctl start chronyd

自動起動設定もする

# systemctl enable chronyd
Created symlink /etc/systemd/system/multi-user.target.wants/chronyd.service → /usr/lib/systemd/system/chronyd.service.

時刻合わせする

# chronyc makestep
200 OK

APCのUPSで自動シャットダウンを設定する

apcupsdを使って自動シャットダウンを設定する。
環境はCentOS 7
UPSには、AP9630 UPS Network Management Card 2を取り付けて、ネットワーク経由で停電のシグナルを受け取る構成にした。

apcupsdのインストール

# yum install epel-release
# yum install apcupsd

apcupsdの設定

# vim /etc/apcupsd/apcupsd.conf
UPSCABLE ether
UPSTYPE pcnet
DEVICE 192.168.1.2:apc:admin user phrase
TIMEOUT 60

TIMEOUT 60は停電検知からシャットダウンするまでの時間。

DEVICE 192.168.1.2:apc:admin user phraseのパスワードはWebUIのログインにつかうパスワードとは違うadmin user phraseがデフォルトとして設定されている。

Network Management Card 2の設定

Network Management Card 2のWebUIにログインして、
Configuration→PowerChute Clientsと進み、自動シャットダウンを行うホストのIPアドレスを設定する。

自動起動設定とステータス表示

# systemctl restart apcupsd.service
# systemctl enable apcupsd.service
# apcaccess status
MODEL : Smart-UPS 3000 RM XL
STATUS : ONLINE

STATUS : ONLINEとなっていればOK

zabbix5.0で監視ホストを追加するとzabbix-serverが止まる問題の対処法

問題

以下の環境でZabbix5.0を本格的に使い始めたら、Zabbixの管理画面で、Zabbixサーバーの起動:いいえとなってしまった。
直近の操作としては、ホストを60台ほど追加した後であった。
Zabbix5.0整備直後にも同じような表示となった事があったが、このときは# vim /etc/zabbix/web/zabbix.conf.phpの$ZBX_SERVER= 'hoge.hoge.jp';で指定しているホスト名を追記したところ改善した。
これとは、原因が違うようである。

環境
# cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)
# zabbix_server -V
zabbix_server (Zabbix) 5.0.2
# mysql -V
mysql  Ver 8.0.17 for Linux on x86_64 (Source distribution)
原因の調査
# systemctl status zabbix-server.service
● zabbix-server.service - Zabbix Server
   Loaded: loaded (/usr/lib/systemd/system/zabbix-server.service; enabled; vendor preset: disabled)
   Active: activating (auto-restart) (Result: exit-code) since Tue 2020-08-11 09:37:08 JST; 3s ago
  Process: 364563 ExecStop=/bin/kill -SIGTERM $MAINPID (code=exited, status=1/FAILURE)
  Process: 364558 ExecStart=/usr/sbin/zabbix_server -c $CONFFILE (code=exited, status=0/SUCCESS)
Main PID: 364560 (code=exited, status=0/SUCCESS)

# tail /var/log/messages |grep zabbix
Aug 11 13:14:15 hoge-zabbix systemd[1]: zabbix-server.service: Failed with result 'exit-code'.
Aug 11 13:14:25 hoge-zabbix systemd[1]: zabbix-server.service: Service RestartSec=10s expired, scheduling restart.
Aug 11 13:14:25 hoge-zabbix systemd[1]: zabbix-server.service: Scheduled restart job, restart counter is at 39857.
Aug 11 13:14:25 hoge-zabbix systemd[1]: Stopped Zabbix Server.
Aug 11 13:14:25 hoge-zabbix systemd[1]: Starting Zabbix Server...
Aug 11 13:14:25 hoge-zabbix systemd[1]: zabbix-server.service: Supervising process 375418 which is not our child. We'll most likely not notice when it exits.
Aug 11 13:14:25 hoge-zabbix systemd[1]: Started Zabbix Server.
Aug 11 13:14:25 hoge-zabbix kill[375420]: kill: 十分な引数がありません
Aug 11 13:14:25 hoge-zabbix systemd[1]: zabbix-server.service: Control process exited, code=exited status=1
Aug 11 13:14:25 hoge-zabbix systemd[1]: zabbix-server.service: Failed with result 'exit-code'.

再起動しようとしたらコケるみたい。

解決策

ググるとキャッシュを増やしてやるといいらしい。監視対象が増えるとキャッシュが多く必要になるが、デフォルトの設定値だと60台監視するには足りないようだ。

vim /etc/zabbix/zabbix_server.conf
### Option: CacheSize
#       Size of configuration cache, in bytes.
#       Shared memory size for storing host, item and trigger data.
#
# Mandatory: no
# Range: 128K-64G
# Default:
# CacheSize=8M
CacheSize=1024M

デフォルトでは8Mだったので、深く考えずに1024M割り当ててみた。

# systemctl restart zabbix-server.service

以上で問題解決した。