データフロー

Qmonus SDKで、リソースのメトリック情報を収集・加工・蓄積・転送するための機構としてCollectorReflectorを提供しています。

Collectorは、収集ターゲットと収集項目及び収集手段を管理し、最小周期60秒の内部クロックで定期的に収集対象を決定し、指定されたプロトコルに従って事前定義された収集アイテムを収集します。
Reflectorは、収集データにマッチングする条件とアクションを管理、Collectorによって収集されたデータに対して様々な加工や一時キャッシュ、及び外部転送などのカスタムアクションを実行します。収集データに対するマッチング条件は高速ルックアップを実現するため、ツリー展開されリフレクションツリーとして管理されます。
CollectorReflectorは、同一の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)まで読み取り、読み取った収集データをFrontalに通知します。(Production環境では、無効にすることを推奨)
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 » チューニングパラメータを参考にしてください。

障害発生時の影響範囲について

各種プロセスの動作を阻害する障害が発生した場合の影響有無を以下の表に記載しています。