APIを介したサービスの作成

最終更新日: 30 年 2022 月 XNUMX 日

概要

LM Service Insightを使用すると、LogicMonitorで論理的な「サービス」を作成することにより、サービスレベルで作成および監視できます。 LM Service Insightのリリースは、新しい包括的な用語「リソース」と同時に行われました。 リソースには、デバイス、サービス、クラウドリソース、kubernetesリソース(ポッド、ノード、サービス、デプロイなど)が含まれ、今後、新しいタイプが追加されます。 下位互換性を確保するために、APIリソースの名前を変更しませんでした。 そのため、サービスのAPI管理は、実際にはデバイスリソースを介して行われます。ここで、サービスはデバイスの一種です(デバイスのAPIエンドポイントは実際にはリソースAPIエンドポイントと見なすことができます)。 これは、デバイスAPIリソースを使用してサービスをプログラムで管理(追加、作成、更新、削除)できることを意味します。 このドキュメントは、そのための例と追加情報を提供します。

UIでのサービスの作成は、次のXNUMXつの部分で構成されます。

  1. デバイスとインスタンスをグループ化してサービスを作成する
  2. サービス メンバー間でデータを集約するように構成された DataSource の作成

APIを使用すると、次のXNUMXつの手順が実行されます。

  1. タイプ 6 のデバイスを追加します (POST /device/devices)
  2. データソースを追加する

API を介してサービス自体を簡単に追加し、UI を介して作成された、または API を介してインポートされた DataSources を使用して、データを集計するためにサービスに自動的に適用することができます。

詳細と必須フィールド

サービスを作成するためにデバイスタイプ6を指定する以外に、他の多くの要件があります。 最も重要なのは、サービスメンバーがプロパティを介して指定されることです。 以下は、/ device / devicesエンドポイントでサービスを作成するために必要なすべてのフィールドを示す表です。

プロパティ

説明

デバイスの場合、これはホスト名またはIPアドレスです。 サービスの場合、クラスターIPでクラスターを表現しようとしているのでない限り、このフィールドはスペースを含まない表示名にすることができます。 文字列 「名前」:「製品サービス」
displayName サービスの表示名–これにより、サービスがリソースツリーにどのように表示されるかが決まります。 文字列 「displayName」:「レポートサービス」
PreferredCollectorId サービスの場合、これは常に-4である必要があります。これは、データ集約がLogicMonitorのバックエンドで発生することを示します。 整数 「preferredCollectorId」:-4
デバイスタイプ サービスの場合、これは常に6である必要があります。 整数 「deviceType」:6
predef.bizservice.members このフィールドはカスタムプロパティであり、サービスにグループ化する必要があるデバイスとインスタンスを定義します。 トップレベルのオブジェクトは「デバイス」と「インスタンス」です(それぞれデバイスとインスタンスを追加できます)。 値は文字列であるため、値内の二重引用符はエスケープする必要がある場合があることに注意してください。 たとえば、Pythonでは、値文字列内のすべての二重引用符の前に「\\」を配置します。 JSONオブジェクト “ customProperties”:[{“ name”:” predef.bizservice.members”、” value”:” {“ device”:[{“ deviceGroupFullPath”:” *”、” deviceDisplayName”:” *”、” deviceProperties”: [{“ name”:” kubernetes.label.app”、” value”:” argus”}]}]、” instance”:[]}”}]
predef.bizservice.evalMembersInterval これはカスタムプロパティであり、サービスのメンバーシップが再評価される頻度を制御します。 JSONオブジェクト “ customProperties”:[{“ name”:” predef.bizservice.members”、” value”:” 30”}]

上記の必須フィールドに加えて、サービスの作成時に含めることができるオプションのフィールドがいくつかあります(メンバーシップの再評価率など)。

プロパティ

説明

hostGroupId サービスが含まれるグループのID。複数のグループIDはコンマで区切る必要があります。 文字列 「hostGroupIds」:「2,34」
説明 サービスの説明 文字列 「説明」:「生産報告サービス」
無効にするアラート このサービスのアラートが無効(true)か有効(false)かを示します ブーリアン 「disableAlerting」:false
カスタムプロパティ このサービスのカスタムプロパティを定義します。 各プロパティには名前と値が必要です。 JSONオブジェクト “ customProperties”:[{“ name”:” team”、” value”:” prod”}、{“ name”:” location”、” value”:” Santa Barbara、CA”}]

次のサンプルスクリプトは、プロパティ「kubernetes.label.app = argus」を持つすべてのデバイスをグループ化する「ReportingService」という名前のサービスを追加します。 メンバーの再評価間隔は30分に設定されています。

#!/ usr / bin / envpythonインポートリクエストimportjson import hashlib import base64 import time import hmac #Account Info AccessId = 'xxxxx' AccessKey = 'yyyy' Company = 'ACCOUNT' #Request Info httpVerb = 'POST' resourcePath = ' / device / devices'queryParams = '?v = 2'data =' {"name": "testAPIService"、 "displayName": "Reporting Service"、 "deviceType":6、 "preferredCollectorId":-4、 "customProperties" :[{"name": "predef.bizService.evalMembersInterval"、 "value": "30"}、{"name": "predef.bizservice.members"、 "value": "{\\" device \\ " :[{\\ "deviceGroupFullPath \\":\\ "* \\"、\\ "deviceDisplayName \\":\\ "* \\"、\\ "deviceProperties \\":[{\\ "name \ \ ":\\" kubernetes.label.app \\ "、\\" value \\ ":\\" argus \\ "}]}]、\\" instance \\ ":[]}"}]} '#Construct URL url =' https:// '+ Company +'。logicmonitor.com / santaba / rest '+ resourcePath + queryParams#現在の時刻をミリ秒単位で取得epoch = str(int(time.time()* 1000)) #Concatenateリクエストの詳細requestVars = httpVerb + epoch + data + resourcePath#Construct署名hmac = hmac.new(AccessKey.encode()、 msg = requestVars.encode()、digestmod = hashlib.sha256).hexdigest()signature = base64.b64encode(hmac.encode())#ヘッダーの構築auth = 'LMv1' + AccessId + ':' + Signature.decode() + ':' +エポックヘッダー= {'Content-Type': 'application / json'、 'Authorization':auth}#リクエストレスポンスを作成= requests.post(url、data = data、headers = headers)#ステータスを出力し、応答の本文print( '応答ステータス:'、response.status_code)parsed = json.loads(response.content)print(json.dumps(parsed、indent = 4))