APIを介したサービスの作成
最終更新日: 30 年 2022 月 XNUMX 日概要
LM Service Insightを使用すると、LogicMonitorで論理的な「サービス」を作成することにより、サービスレベルで作成および監視できます。 LM Service Insightのリリースは、新しい包括的な用語「リソース」と同時に行われました。 リソースには、デバイス、サービス、クラウドリソース、kubernetesリソース(ポッド、ノード、サービス、デプロイなど)が含まれ、今後、新しいタイプが追加されます。 下位互換性を確保するために、APIリソースの名前を変更しませんでした。 そのため、サービスのAPI管理は、実際にはデバイスリソースを介して行われます。ここで、サービスはデバイスの一種です(デバイスのAPIエンドポイントは実際にはリソースAPIエンドポイントと見なすことができます)。 これは、デバイスAPIリソースを使用してサービスをプログラムで管理(追加、作成、更新、削除)できることを意味します。 このドキュメントは、そのための例と追加情報を提供します。
UIでのサービスの作成は、次のXNUMXつの部分で構成されます。
- デバイスとインスタンスをグループ化してサービスを作成する
- サービス メンバー間でデータを集約するように構成された DataSource の作成
APIを使用すると、次のXNUMXつの手順が実行されます。
- タイプ 6 のデバイスを追加します (POST /device/devices)
- データソースを追加する
API を介してサービス自体を簡単に追加し、UI を介して作成された、または API を介してインポートされた DataSources を使用して、データを集計するためにサービスに自動的に適用することができます。
詳細と必須フィールド
サービスを作成するためにデバイスタイプ6を指定する以外に、他の多くの要件があります。 最も重要なのは、サービスメンバーがプロパティを介して指定されることです。 以下は、/ device / devicesエンドポイントでサービスを作成するために必要なすべてのフィールドを示す表です。
上記の必須フィールドに加えて、サービスの作成時に含めることができるオプションのフィールドがいくつかあります(メンバーシップの再評価率など)。
次のサンプルスクリプトは、プロパティ「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))