採用情報

お問い合わせ

BLOG

Zabbix テック・ラウンジ

2022 年 03 月 23 日

MIRACLE ZBX 6.0 開発における Zabbix への OSS 活動について

MIRACLE ZBX 6.0 の開発を通じて、フォーク元のオープンソースソフトウェア Zabbix に対していくつかのパッチ投稿や不具合報告をおこないました。今回はその活動と内容について紹介します。

MIRACLE ZBX と Zabbix について

Zabbix は Zabbix LLC 社が開発しているオープンソースソフトウェア(OSS)です。MIRACLE ZBX は弊社がユーザからの要望に迅速に対応するために Zabbix からフォークした OSS です。弊社と Zabbix LLC 社とは直接的なつながりはありませんが、MIRACLE ZBX の開発中に発見した Zabbix の不具合に関し、Zabbix へ修正用のパッチ投稿や不具合報告をすることで、OSS のアップストリームへ少しでも貢献できるよう努めています。

MIRACLE ZBX 6.0 の開発においては、2021 年の 8 月 25 日にリリースされた Zabbix 6.0.0alpha1 の頃からつねに開発版のリリースを追跡し、弊社で提供している MIRACLE LINUX 系のみならず Solaris・HP-UX・AIX などでのビルドやテストをおこなってきました。この開発体制が幸いし、早期に Zabbix の問題を発見しパッチ投稿や不具合報告へつなげることができました。

今回は MIRACLE ZBX 6.0 開発中に作成した Jira チケットをいくつか紹介します。これによって弊社の OSS 貢献に対する取り組みの一部を知っていただければ幸いです。

パッチ投稿と不具合報告の一覧

次の表にまとめているのが弊社エンジニアによって作成された Jira チケットの一覧です。

課題 バージョン 概要
ZBX-20085 6.0.0alpha5 Solaris 11 sparc でエージェントのビルドに失敗する問題を報告しました。
ZBX-20362 6.0.0beta1 CentOS 7 でビルドに失敗する問題を報告しました。
ZBX-20371 6.0.0beta1 エージェント 2 が CentOS 7 でクラッシュする問題を報告しました。
ZBX-20417 6.0.0beta1 HP-UX で vfs.file.get の値を取得できない問題に対してパッチを投稿しました。
ZBX-20446 6.0.0beta2 ハウスキーパー処理の不具合に対してパッチを投稿しました。
ZBX-20481 6.0.0beta2 Zabbix プロキシの DB アップグレード中にエラーが発生する問題を報告しました。
ZBX-20515 6.0.0beta3 AIX でビルドに失敗する問題を報告しました。

前述した開発体制によって、特定のプラットフォームでビルドに失敗する問題を 3 件報告できました。テスト中に発見した問題については、そのまま Zabbix へ報告したものもあれば、弊社にて開発したパッチを投稿したものもあります。今回はこれらの中から、パッチを投稿した 2 件の課題について紹介します。

ZBX-20417 - HP-UX で vfs.file.get の値を取得できない

6.0.0beta1 にて、HP-UX のエージェントから vfs.file.get を取得しようとすると ZBX_NOTSUPPORTED: Cannot obtain file or directory name というエラーが出る問題を見つけました。調査したところ、HP-UX のライブラリ関数 realpath() の挙動が GNU 版の realpath() と異なっていることが原因でエラーが発生していると判明しました。

弊社にてパッチを作成し、修正されていることを確認したうえで Zabbix へパッチ投稿をしました。Jira の課題キーは ZBX-20417 です。 Zabbix のエンジニアからコメントをいただき、パッチへの修正やレビューをしていただいたうえで master ブランチにマージされました。

ZBX-20446 - ハウスキーパー処理が終了しない

6.0.0beta2 にて、ハウスキーパーの処理が終了せずハングしているように見える問題を見つけました。Jira の課題キーは ZBX-20446 です。デバッグログを調査した結果、監査ログに対するハウスキーパー処理のなかで、存在しない監査ログの ID をもとに DB からレコードを削除しようと試み続けていたことがわかりました。

ソースコード解析とテスト環境の調査によって、Zabbix 5.0 系と 6.0 系では監査ログの ID が数値から英数字 25 桁の文字列(CUID)になっていることが判明しました。しかし 6.0.0beta2 の監査ログのハウスキーパー処理では、数値の ID をもとにレコードを削除する実装のままでした。これが存在しない監査ログの ID を削除しようとしていた挙動の原因でした。

そこで、弊社にて修正用のパッチを開発し Zabbix へ投稿しました。弊社で書いたコードにはメモリ関連の不具合がありそのままのかたちではマージされませんでしたが、Zabbix のエンジニアによってコードの修正と master ブランチへのマージがおこなわれました。

おわりに

MIRACLE ZBX 6.0 開発中に Zabbix へ報告した不具合報告とパッチ投稿について紹介しました。弊社が開発したパッチにも何かしらの ‐特にメモリ周りの‐ 問題を抱えていたこともあり完全なかたちで Zabbix のリリースブランチへ取り込まれることはありませんでしたが、Zabbix のエンジニアによる迅速な対応によって問題そのものは早期に解決できました。

また、MIRACLE ZBX パッケージを MIRACLE LINUX 系のみならず商用 UNIX や Windows 向けにもビルドし提供し続ける開発体制によって、Linux 以外の環境におけるビルドの不具合を早くから報告できました。

今後も MIRACLE ZBX 開発チームでは開発中に発見した不具合やその修正パッチをアップストリームへ積極的に共有していくことで、OSS への貢献を続けていきます。


Zabbix 7.0 新機能調査報告書 無料ダウンロード
本記事に関連するリンク
CentOS 7 延長サポートサービス
デジタルトランスフォーメーションのための電子認証基盤 iTrust
SSL/TLS サーバー証明書 SureServer Prime