データフロー
Qmonus SDKで、リソースのメトリック情報を収集・加工・蓄積・転送するための機構としてCollector
とReflector
を提供しています。
Collector
は、収集ターゲットと収集項目及び収集手段を管理し、最小周期60秒の内部クロックで定期的に収集対象を決定し、指定されたプロトコルに従って事前定義された収集アイテムを収集します。
Reflector
は、収集データにマッチングする条件とアクションを管理、Collector
によって収集されたデータに対して様々な加工や一時キャッシュ、及び外部転送などのカスタムアクションを実行します。収集データに対するマッチング条件は高速ルックアップを実現するため、ツリー展開されリフレクションツリーとして管理されます。
Collector
とReflector
は、同一のRedisクラスターに属し、キュー結合することで、データの永続性を確保しながら高速なデータフローを実現します。
各種ジョブの動作について
データフロー図に記載されている各種ジョブ(Collection Manager M など)の役割を以下表にて解説します。
Role | Job | Master/Slave | Description |
---|---|---|---|
Collection Manager | Master | 起動パラメータcollection_trigger_inteval 周期で最新のCollection を検索し、collector.job.queue にエントリします。処理開始時に collector.job.queue が停滞している場合は、キューをクリアし、時間内に収集できなかったデータを破棄します。 |
|
Collection Consumer | Master/Slave | 常時collector.job.queue を監視し、最大一括読み取りサイズ(起動パラメータcollection_bulk_size )まで読み取り、収集処理を多重実行します。収集結果は、 collector.data.queue にエントリします。 |
|
Reflection Consumer | Master/Slave | 常時collector.data.queue を監視し、最大一括読み取りサイズ(起動パラメータreflection_bulk_size )まで読み取り、collection_sniffer_mode が有効な場合は、collector.data.sniffer.queue にエントリします。キャッシュがリフレクションに設定されている場合、データは時間制限付きでキャッシュされます。 組込み関数 push_metrics をreflectorスクリプトで実行すると、metrics.send.queue にエントリされます。 |
|
Reflection Sniffer | Master | 常時collector.data.sniffer.queue を監視し、最大一括読み取りサイズ(起動パラメータcollection_sniffer_bulk_size )まで読み取り、 |
|
Reflection Sender | Master | 常時metrics.send.queue を監視し、最大一括読み取りサイズ(起動パラメータmetrics_send_bulk_size )まで読み取り、指定されたメトリックサーバーに転送されます(現在Zabbixプロトコルのみサポート)。送信が成功した場合、送信データバックアップモードの場合は metrics.sent.queue にエントリされます。送信が失敗した場合、未送信データのバックアップモードでは、metrics.unsent.queue にエントリされます。 |
|
Reflection Sent Metrics Writer |
Master | 常時metrics.sent.queue を監視し、最大一括読み取りサイズ(起動パラメータmetrics_send_bulk_size )まで読み取り、送信済データテーブルに保存します。 |
|
Reflection Unsent Metrics Writer |
Master | 常時metrics.unsent.queue を監視し、最大一括読み取りサイズ(起動パラメータmetrics_send_bulk_size )まで読み取り、未送信データテーブルに保存します。 |
|
Sent Metrics Expire | Master | 送信済データテーブルを定期的に検索し、起動パラメータmetrics_sent_expire_days を超えるレコードを削除します。 |
|
Unsent Metrics Expire | Master | 未送信データテーブルを定期的に検索し、起動パラメータmetrics_unsent_expire_days を超えるレコードを削除します。 |
データ収集を行うCollection Consumer
とアクション実行を担当するReflection Consumer
は、master/slaveノード上のすべてのプロセスによって駆動し、それ以外のジョブはmasterノードのリーダープロセスでのみ実行されます。
起動パラメータ
起動パラメータが影響を及ぼすコンポーネントの対応関係は次のとおりです。デフォルト値などはDocs » Appendix » チューニングパラメータ
を参考にしてください。
障害発生時の影響範囲について
各種プロセスの動作を阻害する障害が発生した場合の影響有無を以下の表に記載しています。