ククログ

株式会社クリアコード > ククログ > collectd 6.0でのAPI変更に対応する方法の概要

collectd 6.0でのAPI変更に対応する方法の概要

システムやアプリケーションのメトリクス情報をあつめるソフトウェアの1つにcollectdがあります。

この記事を書いている時点のcollectdの最新版は5.12ですが、次期バージョンである6.0も並行して開発が進められています。 今回は、collectd 6.0の動向と、それを踏まえてcollectd 6.0でのAPI変更に対応する方法の概要について紹介します。

collectd 6.0の現状について

今年の9月の段階では、年内にリリースしたい意向があったようですが、現在ではいつリリースされるかは未定となっています。 これはほとんどのプラグインが6.0で導入されるAPIの変更に追従できていないためです。 メンテナンスされていないプラグインは削除されることでしょう。

なお現在の対応状況については、 collectdのプロジェクトボードにて一覧できます。

この記事を書いている時点で、6.0の開発に関する167のTODOが残っています。

collectd 6.0の動向を追いかけたい人は、Community callsのページを参照するとよいでしょう。

collectd 5.xはどうなるのか

5.x系は5.12までとの話もあったようですが、5.13のリリースが予定されています。 ただし、CIの問題があり、レビューやマージ作業がすすんでいません。そのため、リリース次期は未定です。

collectd 6.0に対応するには

5.xから6.0にプラグインを移行させるために参考になるドキュメントには、V5 to v6 migration guideがあります。 ただし、これだけだと心もとないので、すでに移植されているcpuプラグインやwritre_stackdriverプラグインを参考にするのがよいようです。

Luaプラグインの場合も概ね上記のガイドにそって移植する必要がありました。

  • data_set_t *value_list_t *metric_family_t *を使うように置き換える
  • metric_family_t *を使うようになることにともない、メタデータへのアクセスはmeta_data_xxxのAPIを使うように書き換える
  • メタデータのキーはmeta_data_tocで取得する
  • メタデータの型はmeta_data_typeでキーに対応する型を取得する
  • メタデータの値はmeta_data_get_xxxで型にあわせたAPIを都度呼び出す

上記のようなことに留意して移植する必要があります。

なお、collectd-6.0ブランチにgoogle-interns-2020ブランチもあとからマージされる予定となっており、プラグイン作者にとっては、さらに追加で修正作業が必要になることも予想されます。

まとめ

今回は、collectd 6.0でのAPI変更に対応する方法の概要について紹介しました。 Luaのプラグインを6.0に対応させましたが、まだマージされていません。 collectd 6.0の開発は手がとても足りておらず、他にもたくさんのプラグインが対応待ちの状態なので、興味があったらぜひ開発に参加してみてください。

参考となるヘッダファイル