openfalconの基本原則と使用法



Basic Principles

この記事では、openfalconの基本原理と使用法、比較的粗い粒度を紹介します。主な目的は、openfalconデータモデル、機能モジュール、運用プロセス、および使用方法を誰もがすばやく把握できるようにすることです。具体的な分解は次のとおりです。

  • 基本的な紹介
  • テクノロジーアーキテクチャ
  • データ・モデル
  • メインモジュール
  • 使い方
  • その他

まず、基本的な紹介



Open-Falconは、Xiaomiによって開発されたオープンソースのインターネットエンタープライズ監視システムソリューションです。現在、Xiaomi、Jinshanyun、Meituan、Jingdong Finance、Didiなどの企業が使用されています。

以下では、質問に従って記事全体を展開します。 まず第一に、オープンファルコンは何ができるのでしょうか?



a。主な機能は

1つのデータ収集無料構成:エージェントの自己発見、プラグインのサポート、アクティブプッシュモード

2容量レベルの拡張:本番環境での毎秒500,000のデータ収集、アラーム、ストレージ、マッピング、および持続可能な水平拡張。



3アラームポリシーの自己検出:Webインターフェイス、サポートポリシーテンプレート、テンプレートの継承と適用範囲、複数のアラームモード、およびサポートコールバックアクション。

4ユーザーフレンドリーなアラーム設定:アラームの最大数、アラームレベル設定、アラーム回復通知、アラーム一時停止、さまざまな期間のさまざまなしきい値をサポートします

価値、メンテナンスサイクルのサポート、アラーム統合のサポート。

5履歴データの効率的なクエリ:第2レベルは、1年間の数百の指標の履歴データを返します。

6ダッシュボードのユーザーフレンドリー:多次元データ表示、ユーザー定義のダッシュボードおよびその他の機能。

7アーキテクチャ設計は高可用性です。システム全体にコアシングルポイントがなく、操作と展開が簡単です。

次に、openfalconはどのプロジェクトを監視できますか?

1)基本的な監視。

CPU、負荷、メモリ、ディスク、IO、ネットワーク関連、カーネルパラメータ、ss統計出力、ポートサバイバルステータス、プロセスサバイバルステータス、コアサービスプロセスサバイバル情報収集、主要なビジネスプロセスリソース消費、NTPオフセット収集、DNS解決などコレクションこれらのインジケーターは、open-falconエージェントコンポーネントによって直接サポートされます。

2)ビジネスアプリケーションの監視。

たとえば、アプリケーションサービスが展開された後、インターフェイスの平均時間、呼び出し数、および成功率に関する統計を収集する必要があります。これらは、サービスアプリケーションの監視です。ここで、開発者はデータを収集するためのスクリプトやその他のメソッドを作成し、それをopen-falconの転送コンポーネントに送信する必要があります。

3)サードパーティのオープンソースソフトウェアの監視。

たとえば、mysql、lvs、nginx、redis、mqなどは、取得スクリプトまたはプラグインを個別に作成する必要があります。これらの一般的なソフトウェア、一般的にはオープンソースコミュニティは、対応するスクリプトを提供しています。

これは、openfalconと他の監視ソフトウェアとの比較です。


個人的には、ファルコンにはスケーラビリティと柔軟性の点で大きな利点があります。

第二に、技術アーキテクチャ

アーキテクチャや構造に関しては、グラフの方が表示に適しています。次の図は公式ウェブサイトから抜粋したもので、コンポーネントとコンポーネントの連携を確認できます。



太い緑色の線はデータ送信プロセスを示し、オレンジ色の点線は制御フロー(ポリシー、アラーム)を示し、水色の点線はクエリフローを示します。

次の図は、比較的規則的なデータフロー図であり、理解するのに役立ちます。


具体的には、全体的な運用プロセスは次のとおりです。

1、ターゲットサーバーはエージェントを実行します

2.エージェントはさまざまな監視項目の値を収集し、それらを転送に送信します。

3、転送チェックと監視項目値の整理、コンシステントハッシュシャードの実行、対応するジャッジモジュールへの受け渡し、アラームがトリガーされたかどうかの確認

4、転送は監視項目の値を整理し、コンシステントハッシュシャーディングを実行し、データストレージのためにグラフに送信します。

5.ジャッジは、特定のアラームポリシーまたはしきい値に従ってアラームを判断します。アラームがトリガーされると、アラームイベントイベントがアセンブルされ、キャッシュキューに書き込まれます。

6、イベントイベントの判断結果に応じてアラームと送信者は、テキストメッセージやメールを送信するユーザーグループのように、イベントを実行します。

7.監視項目データを受信した後、グラフはデータをRRDファイル形式で保存し、アーカイブし、照会インターフェースを提供します。

8、クエリはグラフクエリインターフェイスを呼び出し、監視データはページ表示のためにダッシュボードに転送されます。

9、ダッシュボードはページをレンダリングし、曲線レポートグラフを表示します。

10、ポータルは、ユーザーがマシンのグループ化、アラームポリシー、式、nodata、およびその他の構成を構成するためのページを提供します。

第三に、データモデル

柔軟で強力なデータモデルは、監視システムの効率と柔軟性を向上させることができます(このセクションで説明するデータモデルは、監視項目データモデルと呼ばれる必要があります)。 オープンファルコンのデータモデルはどのように見えますか?デザインの本来の意図は何ですか?

オープンファルコンの「監視項目」モデルは次のとおりです。

{{

メトリック:cpu.busy、//アイテム名を監視する

エンドポイント:open-falcon-host、//ターゲットサーバーのホスト名

タグ:srv = falcon、group = az1、//タグタグ、機能は集約して分類することであり、アラーム戦略を装備しているとより便利です。

値:10、//アイテムの値を監視する

タイムスタンプ: `date +%s`、//取得時間

counterType:GAUGE、//アイテムタイプを監視します。

ステップ:60 //収集間隔。 2番目。

}

このモデルの主な利点は次のとおりです。1つは複数の次元からアラームを簡単に構成できること、もう1つは自律的なデータ収集に柔軟に対応できることです。

タグの使用などの最初のポイントは、マシンを分類する際に役割を果たします。たとえば、host1、host2、およびhost3の3つのマシンがあります。タグが「group = java」、「group = java」、「group =」「Erlang」として設定されている場合、アラームポリシー「metric = cpu / group = java」を設定すると、Javaタグマシンでのみ有効になります(つまり、 host1、host2)。

2番目のポイントは、エージェントが検出から多くの基本的なシステムインジケーターを収集しますが、ビジネスアプリケーションは収集してレポートするスクリプトを作成する必要があるためです。ここで、openfalconは、仕様の定義と同等の監視項目モデルを定義します。開発者がオブジェクト(mysql、redisなど)を監視する必要がある場合は、データを収集し、仕様に従って監視項目モデルをパッケージ化してから、レポートするだけで済みます。

オープンファルコンはどのような監視項目を使用していますか?

主に3つのタイプがあります。

(1)ゲージ:温度など、収集された元の値を直接使用した測定値

(2)カウンター:データの継続的な増加を記録します。増加または減少するだけです。車の走行距離、ネットワークカードの流出、cpu_idleなど。

(3)DERIVE:COUNTERと同様の変化率ですが、増減できます。

第四に、メインモジュール

4-1。エージェント

  • まず第一に、エージェントとは何ですか?

エージェントは、Goによって開発されたデーモンプログラムであり、マシンのさまざまなデータとインジケータの自己発見収集に使用されます。ターゲットマシンにデプロイされ、サーバー側で構成を実行する必要がなく、インストール後に起動して動作するのが、open-falconの「データコレクター」です。

  • 主な機能は?

1)発見からさまざまな種類のデータと指標を収集し、転送を報告します

2)hbsとのハートビート接続通信を実行し、ホストステータスを報告し、プラグインと監視プロセスを同期し、ポートを監視します

  • 収集できるデータは何ですか?

基本的な監視項目(ハードウェア、負荷)、ビジネスアプリケーション監視データ、各種オープンソースソフトウェア監視データなど。

  • 鷹はどのように集められますか?

1)基本的な監視

システムファイルを読み取るか、基本的なコマンドを実行してから、元の値を処理するのが一般的です。たとえば、CPUとメモリの情報は/ proc / statを読み取ることで取得され、/ proc / meminfoポートの監視では、指定されたポートがss –lnによってリッスン状態にあるかどうかを判断します。

2)ビジネスアプリケーションの監視

これは通常、「プラグイン」または「コレクションスクリプト」によって実装され、それ自体で作成する必要があります。たとえば、インターフェイスが呼び出された回数、費やされた時間、失敗の数、および成功の数は、このカテゴリに属します。 (ログ、基本的な統計ツール)

3)オープンソースソフトウェアの監視

コレクションスクリプトは、オープンソースコミュニティで入手できます。

  • エージェントを拡張する方法-プラグイン?

基本的な監視項目に加えて、ユーザーがエージェントの機能を拡張してより多くのインジケーターを収集したい場合があります。openfalconはプラグインメカニズムを提供します。プラグインの使用は、公式のgitドキュメントを参照できます。以下の著者からの抜粋は、実際にはスクリプトを収集して同期的に実行する方法の一部です。

'プラグインデザインのアイデア:

a)データを収集するためのスクリプトを書く

b)データを収集する必要があるマシンにスクリプトを配布します

c)このスクリプトを時々実行するcronを作成します

d)スクリプトの出力を収集し、サーバーのインターフェイスを呼び出してデータをプッシュします

e)オンライン、オフラインに移行し、要件に応じてアップグレードします。

  • エージェントのワークフロー:



4-2。転送コンポーネント

  • 転送とは何ですか?

データのトランジットポイントを監視するOpen-falconのバックエンドポータル。

  • 転送の役割は?

データ受信インターフェイスとカスタムスクリプトプッシュデータを提供します

メモリキュー内のデータをグラフに送信し、コンシステントハッシュアルゴリズムに従ってモジュールを判断します(強調)

バックエンドインスタンスごとに固定長のキューを作成します

各バックエンドインスタンスのRPC接続プールを維持します



ここで、バックエンドの各グラフまたはジャッジインスタンスは、rpc接続プールと固定長のキューキューを作成します。ここには2つの小さなポイントがあります。1。固定長のキューキューは、ピークトラフィックに対処するように設計されています。ピーク時間データの一部を失うことで、バックエンドグラフとジャッジコンポーネントが影響を受けないことが保証されます。 2. openfalconのv1.0バージョンでは、各Aグラフインスタンスは複数のIPを持つことができ、転送は各IPに同じデータを送信しますが、ジャッジにはインスタンスごとに1つのIPしか存在できません。

  • ワークフローを転送しますか?



4-3。グラフコンポーネント

  • グラフとは何ですか? グラフの責任は?

監視データを保存し、監視データを提供するための効率的なクエリインターフェイス。

  • グラフのグラフ図(プロジェクトgitから取得):

4-4。ジャッジ&アラーム&センダーコンポーネント

これらの3つのコンポーネントはアラームのリンクであり、アラームがトリガーされたかどうかを判断する役割を果たします。理論的には、モジュールに進化させることができます。興味のある人は、コード、多くの一致するロジックを見ることができます。

ジャッジ:ポリシーをキャッシュに記録し、監視項目がアラームポリシーをトリガーするかどうかを判断し、アラームイベントを送信します。

アラームと送信者:アラームイベントを読んで、メールやテキストメッセージなどを送信します。

4-5。 hbsコンポーネント

  • hbs、hbsの責任は何ですか?

ハートビートサーバー、ハートビートサーバー、その他は「構成センター」の役割を引き受けます。

1)エージェントは、hbsからの「アラームポリシー」、「プロセスサバイバルモニタリング」、「ポートサバイバルモニタリング」およびその他の情報を同期できます。

2)エージェントは定期的にハートビート情報を送信し、hbsはホストテーブルの保守を担当します

  • Hbsワークフロー:



5.使い方は?

5.1ターゲット

(1)基本的な監視項目の監視方法は?

(2)プラグインを使用して「サードパーティアプリケーション」を監視するにはどうすればよいですか? 「ポート/プロセス」を監視する方法は?

(3)「アラームルール」の設定方法は?

(4)hostGroup、template、expression、nodata、uicの使用方法は?

(5)マシンをより適切に管理するにはどうすればよいですか? hostName、hostGroup命名規則など

5.2最初に理解すべきいくつかの概念

(1)、マシンのグループ化

(2)、ユーザーグループ

(3)、テンプレート

(4)、式

(5)、アラーム戦略

(6)、コールバックアクション

5.3基本的な監視項目の収集方法は?

エージェントをターゲットマシンに展開し、正しく構成して、起動します。

5.4 mysql / lvs / nginxなどの「サードパーティアプリケーション」を監視する方法は?

スクリプトを自分で作成するか、open-falconに報告するか、オープンソースのプラグインまたはスクリプトを使用します

https://book.open-falcon.org/zh/philosophy/data-collect.html

5.5 「ポートの存続」、「プロセスの存続」を監視する方法は?

ポートページで、式またはテンプレートを追加して、指定したプロセスまたはポートのアラームポリシーを構成します。

5.6マシンのグループ化とアラームポリシーテンプレートを使用していますか?

連絡開始当初は特に面倒でした。その後、コードが引き出され、関係が分析され、モデルと関係図が整理されました。すべてが明らかになりました。次の図は、ホストグループマシングループ管理、Tempalteアラームポリシーテンプレート、モデル関係UML図です。 UMLダイアグラムの理解に焦点を合わせてから、ページに移動して操作および比較します。


b。



c。



5.7式の使い方は? 「ポリシー式」と「ポリシーテンプレート」の違いは何ですか?

式は単純で、タグを組み合わせるときにポリシー式を使用できます。

たとえば、カテゴリを区別できない場合、すべての監視項目にタグが付けられるわけではありません。手動分類のみが使用されます。つまり、「マシンのグループ化」が使用され、「ポリシーテンプレート」が「マシンのグループ化」にバインドされます。

第六に、他

他の人は、nodata、aggravationなど、ドキュメントまたはコード自体を裏返す必要があります。この記事を通して、open-falconの操作メカニズム、データモデル、およびその使用方法を習得したいと思います。