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 |
expire_logs_daysでログを消去するタイミングを指定する。
mysql> show variables like 'expire_logs_days';
Variable_name | Value |
expire_logs_days | 0 |
とエラーを吐かれる。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 |
どうやら公式ドキュメントを見ると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
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の設定
# 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アドレスを設定する。
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
以上で問題解決した。