登録サービス - サービス・プロセスは、レジストリにその場所を登録します。これは、通常、そのホストとポート番号、時には認証の詳細、プロトコル、バージョン番号、およびオペレーティング環境を登録します。
サービス検出 - クライアント・アプリケーション・プロセスは、ロケーションサービスを得るために、レジストリにクエリを送信します。重要な役割は、利用可能なサービスのサービス発見リストを提供することです。
次のようなサービス定義の形式:
{ "サービス":{ "ID": "桟橋"、 "名前": "桟橋"、 "住所": "192.168.1.200"、 "ポート":8080、 "タグ": "DEV"]、 「チェック「:[ { "HTTP": "http://192.168.1.200:8080/health"、 "インターバル": "5S" } ] } }
健康診断のサービスに使用されている、チェック、あなたはより多く持っている、またはできない場合があり、さまざまな方法の検討。チェックは、インターフェースが追加またはHTTPランタイムによって、構成ファイルで定義されています。チェックインは、HTTPを介してノードと一致しています。
5チェック方法があります。
スクリプトのタイプは、スクリプトが提供されなければならない、そして可変間隔は、TTLタイプ場合、変数はTTLを提供しなければならない場合、またはスクリプトは、TTLの種類を確認しなければなりません
このスクリプトは、TTLサービスが自発的に領事に自分の健康を報告し、チェックサービス健康への領事イニシアチブです。
ここで設定する方法はいくつかあります
チェックは、4種類のスクリプト、HTTP、TCP、TTLでなければなりません。スクリプトスクリプトスクリプトと間隔変数の種類を提供する必要があります。HTTPタイプは、httpとIntervalフィールドを提供しなければなりません。TCP TCPおよびTTLを提供するために、間隔フィールド、TTL方式の順序の種類を提供する必要があります。自動で名前欄をチェックservice:<service-id>
することによって、の-サービスが複数ある場合は、生成service:<service-id>:<num>
世代。
スクリプトチェック(スクリプト+間隔)
この外部プログラムは、終了コードを有し、いくつかの出力を生成することができる、手段は、スクリプトに係るプラグインシステムのNagiosスクリプト出力制限と同様、予め設定された時間間隔(例えば、30秒毎に呼び出す)、コールする:健康を行うことにより、外部アプリケーションをチェック以下4Kより、4K出力はカットオフよりも大きいです。デフォルトでは、30秒のスクリプトのタイムアウト時間は - タイムアウトで設定することができます。
{ "チェック":{ "ID": "MEM-utilの"、 "名前": "メモリ使用率"、 "スクリプト": "/usr/local/bin/check_mem.py"、 "間隔": "10S"、 "タイムアウト": "1" } }
HTTPチェック(HTTP +間隔)
この検査は、要求を「取得」HTTPを作成するために、予め設定された時間間隔に従います。サービス状態を示すためにHTTPレスポンスコード:正常のような任意の2xxコード、429警告 - 多くの要求があり、他の値は失敗を示しています。
検査のこのタイプは、使用済みのカール、またはHTTP操作を処理するための外部プログラムです。デフォルトでは、HTTPをチェックすることで、要求時間は、通話要求、10秒の最大に等間隔。カスタムHTTPのチェックを使用することが可能、自由にタイムアウト時間を設定することができ、出力は以下4Kに制限されている、4K出力がカットオフよりも大きいです。
{ "チェック":{ "ID": "API"、 "名": "ポート5000上のHTTP API"、 "HTTP": "のhttp:// localhostを:5000 /健康"、 "間隔": "10S"、 "タイムアウト": "1" } }
TCPチェック(TCP +間隔)
予め設定された時間IP /ホスト名およびポートで指定した間隔は、TCP接続を作成します。サービスのステータスは、TCP接続に依存して成功する - 接続に成功すると、ステータスが「成功」であり、それ以外の状態は「重要」です。ホスト名は、IPv4とIPv6に解決した場合、それはこれらの2つのアドレスを接続しようとし、接続に成功した最初の時間は、サービスのステータスが「成功」です。
あなたは、外部スクリプトをこのように使用してヘルスチェックを実行する場合、スクリプトは「netcatを」または単純なソケット操作を使用する必要があります。
デフォルトでは、TCPのチェックは、要求時間は、通話要求、10秒の最大に等間隔。また、それは自由に設定することができます。
{ "チェック":{ "ID": "SSH"、 "名": "SSH TCPポート22上の"、 "TCP": "localhostの:22"、 "インターバル": "10S"、 "タイムアウト":「1 " } }
TTLチェック:(Timetoライブ寿命)
チェックステータスを定期的にHTTPインターフェースを介して更新されなければならない状態が、状態が異常と認識される場合、所与のTTLのために、このチェックは最後の状態を保持し、外部インターフェイスが更新されません。
概念と類似したこのメカニズム、「デッドマンスイッチは、」定期的なサービスヘルスレポートが必要です。例えば、健康APPは、定期的にHTTPステータス末尾に置くことができ、アプリは問題が、その後、TTLが満了した場合、ヘルスチェックがクリティカル状態になります。与えられた健康情報のエンドポイントの更新を確認するには、エンドポイントを通過して、エンドポイントに失敗しています。(エージェントHTTPエンドポイントを参照してください)
TTLチェックが同時にエージェントが再起動した後で既知の状態に回復することができ、その最後の既知の状態のディスクに更新します。TTL側のチェックを通じて健康状態の有効性を維持するために。
{ "チェック":{ "ID": "ウェブアプリ"、 "名": "Webアプリケーションの状態"、 "ノートは": "ウェブアプリはカールを行い、内部で10秒ごとに"、 "TTL": "30代" } }
ドッカー+インターバル
このチェックは、コンテナドッキングウィンドウを呼び出す外部プログラムパッケージに依存しています。ドッカーがドッキングウィンドウExecのAPIによってトリガ外部アプリケーションを実行します。
私たちは、領事エージェントユーザアクセスドッカーHTTP APIまたはUNIXソケットを期待しています。領事の使用$ DOCKER_HOSTドッカーAPIエンドポイントを決定します。アプリケーションが実行され、コンテナ内で実行ヘルスチェックサービスを実行し、適切な終了コードを返します。呼ばれる指定した時間間隔を確認してください。
あなたは同じホストのホスト上で複数のシェルを持っている場合は、シェルのパラメータを設定する必要があります。
出力制限4K内では、4K出力はカットオフよりも大きいです。
{ "チェック":{ "ID": "MEM-utilの"、 "名前": "Memoryutilization"、 "docker_container_id": "f972c95ebf0e"、 "シェル": "/ binに/ bashの"、 "スクリプト":「/ USR /local/bin/check_mem.py」、 "インターバル": "10S" } }
概要
各チェックは名前が含まれている必要があり、idとノート2はオプションです。あなたがIDを提供しない場合は、IDは名前に設定されています。ノードでは、IDは一意である必要があります確認してください。名前が競合している場合は、IDを設定する必要があります。
メモフィールドは、チェックの可読性を高めるために、主にあります。スクリプトは、Notesフィールドは、スクリプトで生成することができる、チェックイン。同様に、HTTPインタフェースは、外部のプログラム更新TTLチェックがメモフィールドとして提供することができる適用されます。
スクリプトをチェック
チェック・スクリプトは、チェックの状態を判断するために何かをするのは自由です。唯一の制限は次のとおりです。終了コードは、次の規則を遵守しなければなりません。
- ノーマル - 0の終了コード
- 終了コード1 - アラーム
- その他の値 - 失敗しました。
領事は、この規則に依存しています。他のスクリプトの出力は、ノートフィールドに格納されている、それは人々が見ることができるため。
健康状態の初期化
デフォルトでは、チェックが領事エージェントに登録したときに、健康状態はすぐに「緊急」に設定されています。あなたは健全な状態とみなさサービスプールに入る前に、サービスは(「通過」)を介して直接登録されている状態を防ぐことができます。いくつかのケースでは、チェックは「状態」フィールドを設定することによって達成することができ、健康チェックの初期状態を指定する必要があります。
次のとおりです。
{ "チェック":{ "ID": "MEM"、 "スクリプト": "/ binに/ check_mem"、 "間隔": "10S"、 "ステータス": "すれ違い" } }
初期状態では合格に設定されています。
サービス-boundchecks
健康(ヘルスチェック)を確認するか、おそらく指定したサービスにバインドされました。これは、ヘルスチェック状態だけではなく、ノード全体よりも、特定のサービスに影響を及ぼしていることを確認します。ヘルスチェックを結合サービスがservice_idの場を提供する必要があります。
{ "チェック":{ "ID": "ウェブアプリ"、 "名": "WebAppの状態"、 "のservice_id": "ウェブアプリケーション"、 "TTL": "30代" } }
ウェブアプリのヘルスチェックが失敗した場合は、上記の例では、それだけでウェブアプリサービス、他のサービスの有効性に影響を与えるだろう、このノードは影響を受けません。
MultipleCheck定義
チェックを複数定義し、フィールド「チェック」を使用することができ、例:
{ "チェック":[ { "ID": "CHK1"、 "名": "MEM"、 "スクリプト" "/ binに/ check_mem"、 "インターバル": "5S" }、 { "ID":「CHK2 " "名前": "/健康"、 "HTTP": "HTTP:// localhostを:5000 /健康"、 "間隔": "15S" }、 { "ID": "chk3"、 "名前":" CPU」、 "スクリプト": "/ binに/ check_cpu"、 "インターバル": "10S" }、 。.. ] }
注、実際には、スクリプトのpythonをサポートしていない、あなたはシェルスクリプトでなければならないことがわかりました