Skip to content

[OBSOLETE] HAPI 1 Programmer's Guide

teruo-oshida edited this page May 16, 2016 · 1 revision

HAPI は Hatohol の入力を拡張する仕組みです。 Hatohol Arm Plugin Interface の頭文字をとったものです。

Hatohol Server プロセスの外部にプラグイン・プロセスを設置して、入力を処理することが可能です。

Hatohol が定義する複数の内部データ・クラスについて、一通りの入力をすることが出来ます。 対応クラスおよび機能を限定する一方で、ペイロードを JSON テキストで構成し、LL との親和性を高めたプロトコルも存在します。

Zabbix については、Hatohol Server ビルトイン実装とほぼ同等の入力を処理できるプラグインが、Project Hatohol からリリースされています。 OpenStack Ceilometer については、イベント等を入力できるプラグインが、Project Hatohol からリリースされています。 fluentd については、イベントを入力できるプラグインが、Project Hatohol からリリースされています。

HAPI では通信経路に AMQP を利用します。 Hatohol Server 上では、HAPI は AMQP のキュー毎に1サーバと識別されます。 実際にはキューは PtoP モードのキューがペアで使用されます。

AMQP broker は Hatohol システム上で単一である必要はありません。 キューは相互に関連せず、独立しています。

都合、End to End の接続および識別は、broker URL とキュー名にて行われます。

HAPI プロトコルには、バイナリプロトコルと、JSON テキストプロトコルと、2種類が存在します。 バイナリプロトコルは AMQP version xx を利用しています。 テキストプロトコルは AMQP version 0.9.1 を利用しています。

HAPI バイナリプロトコルでは、C++ でプラグインを作成するためのライブラリが用意されています。 Project Hatohol からリリースされている Zabbix プラグインおよび Ceilometer プラグインは、このライブラリを利用して作成されています。

server/common/HatoholArmPluginInterface.h

HAPI テキストプロトコルについて、データフォーマットが下記 URL にて解説されています。

https://github.com/project-hatohol/hatohol/wiki/HAPI-JSON