REST API 高度なフィルター

最終更新日: 06 年 2023 月 XNUMX 日

LogicMonitor REST API の高度なフィルターは、値が JSON 形式であるキーと値のペアに適用されます。 たとえば、 /device/devices キーに高度なフィルターを適用できる API – autoPropertiesinheritedPropertiessystemPropertiescustomProperties.

この記事では REST API を使用しています /alert/alerts と/device/devices 高度なフィルターの使用方法を説明する例として。 

注:

  • /device/devices/ API に使用される高度なフィルター構造は、/alert/alerts/ API では機能しません。
  • json_key_parameter とエスケープされた json_value_parameter は、/alert/alerts/ API では機能しません。
  • このサポート記事で使用されている例は単なるサンプルであり、ビジネス要件に合わせて変更する必要があります。
  • 高度なフィルターの構造

    次の例は、高度なフィルターの構造を示しています。

    • 通常のクエリ
    {{url}}/<api>?filter=<json_key_parameter>:"{<escaped json_value_parameter>}"&fields=<if any separated by ,>
    • 演算子が等しくない (!:) フィルター クエリ
    {{url}}/<api>?filter=<json_key_parameter>!:"{<escaped json_value_parameter>}"
    • 演算子に (~) を含むフィルター クエリ
    {{url}}<api>?filter=<json_key_parameter>~"{<escaped json_value_parameter>}"
    • 演算子を含まない (!~) フィルター クエリ
    {{url}}<api>?filter=<json_key_parameter>!~"{<escaped json_value_parameter>}"
    • 演算子 special_eq (:::) null 値と空の値の両方をチェックするフィルター クエリ
    {{url}}<api>?filter=<json_key_parameter>:::empty
    • Operator special_ne (!::) 値が空または null でないかどうかをチェックするフィルター クエリ
    {{url}}<api>?filter=<json_key_parameter>!::empty
    • Operator special_ne (!::) 値が null でないかどうかをチェックするフィルター クエリ
    {{url}}<api>?filter=<json_key_parameter>!::null
    • 演算子論理 OR (||) フィルター クエリ
    {{url}}<api>?filter=<json_key_parameter_1>:"{<escaped json_value_parameter_1>}" || <json_key_parameter_2>:"{<escaped json_value_parameter_2>}"
    • 単一および高度なフィルター クエリ
    {{url}}<api>?filter=<json_key_parameter>:"{<escaped json_value_parameter>}",<non-json_key_parameter>:<non-json_value_paramter>

    高度なフィルターのコンポーネント

    高度なフィルタ クエリのコンポーネントは次のとおりです。

    コンポーネント例による説明
    {{url}}https://<company>.logicmonitor.com/santaba/rest
    たとえば、 /device/devices & /device/groups
    の場合 /device/devices、値は autoPropertiesinheritedPropertiessystemPropertiescustomProperties
    { }たとえば、 {"name":"testPROPERTY","value":"service"}
    { }たとえば、 {\"name\":\"testPROPERTY\",\"value\":\"service\"}
    値が JSON ではないキー。 例えば、 idnamedisplayName、などなど。
    id: 100、"name": "Instance" などの単一の値
    ここで、非 JSON 値 id is 100 とのために name それは Instance

    Use Case

    高度なフィルターを使用して、JSON を値パラメーターとして使用する任意のプロパティのキーと値のペアを取得できます。

    デバイス 1 (「id」: 3793) には次のものがあります。 systemProperties.

    {
    "id": 3793,
    "name": "sfsf",
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "n/a"
    },
    {
    "name": "system.description",
    "value": "dummy"
    },
    {
    "name": "system.collectorid",
    "value": "-4"
    },
    {
    "name": "system.deviceId",
    "value": "3793"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.collectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.deviceGroupId",
    "value": "1"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1556854294"
    },
    {
    "name": "system.devicetype",
    "value": "6"
    },
    {
    "name": "system.collectorversion",
    "value": "0"
    },
    {
    "name": "system.prefcollectorid",
    "value": "-4"
    },
    {
    "name": "system.displayname",
    "value": "sfsf"
    },
    {
    "name": "system.hostname",
    "value": "sfsf"
    }
    ]
    }

    デバイス 2 (「id」: 3792) には次のものがあります。 systemProperties.

    {
    "id": 3792,
    "name": "cc",
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "n/a"
    },
    {
    "name": "system.description",
    "value": "sfsf"
    },
    {
    "name": "system.collectorid",
    "value": "-4"
    },
    {
    "name": "system.deviceId",
    "value": "3792"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.collectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.deviceGroupId",
    "value": "1"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1556852762"
    },
    {
    "name": "system.devicetype",
    "value": "6"
    },
    {
    "name": "system.collectorversion",
    "value": "0"
    },
    {
    "name": "system.prefcollectorid",
    "value": "-4"
    },
    {
    "name": "system.displayname",
    "value": "cc"
    },
    {
    "name": "system.hostname",
    "value": "cc"
    }
    ]
    }

    次の基本的なフィルター クエリを実行すると、

    {{url}}/device/devices?filter=systemProperties.name:"system.description",systemProperties.value:"sfsf"

    応答本文で、このクエリはすべてのデバイス (デバイス 1 と 2) を一覧表示します。 systemProperties 名前 "system.description」およびデバイス systemProperties 値「sfsf"

    次の高度なフィルター クエリを実行すると、

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"

    応答本文では、このクエリはデバイス (デバイス 2 のみ) をキーと値のペアでリストします。 systemProperties システムの説明:"sfsf"

    /device/devices フィルタの例

    次のセクションでは、 /device/devices フィルタ。

    /device/devices API

    フィルター構造:

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"&fields=systemProperties,name,id

    例:

    https://localdev.logicmonitor.com/santaba/rest/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"&fields=systemProperties,name,id

    /device/groups API

    フィルター構造:

    {{url}}/device/groups?filter=customProperties:"{\"name\":\"test11\",\"value\":\"test11\"}"

    例:

    https://localdev.logicmonitor.com/santaba/rest/device/groups?filter=customProperties:"{\"name\":\"test11\",\"value\":\"test11\"}"

    クエリの例

    次のセクションでは、フィルター クエリの例を示します。

    システムプロパティ

    演算子等号 (:) フィルター クエリ:

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}"&fields=systemProperties,name,id

    応答本文は、すべてのデバイスを返します systemProperties 含まれる name:system.description そして value:sfsf

    {
    "total":1,
    "items":[
    {
    "id":770544,
    "name":"10.241.242.102",
    "systemProperties":[
    {
    "name":"system.enablenetflow",
    "value":"false"
    },
    {
    "name":"system.collectorplatform",
    "value":"linux"
    },
    {
    "name":"system.description",
    "value":"sfsf"
    },
    {
    "name":"system.collectorid",
    "value":"11934"
    },
    {
    "name":"system.deviceId",
    "value":"770544"
    },
    {
    "name":"system.prefcollectordesc",
    "value":"centos-systemd-1"
    },
    {
    "name":"system.collectordesc",
    "value":"centos-systemd-1"
    },
    {
    "name":"system.groups",
    "value":"Synthetics_Resource_Group,demo:/dasdas,152_SJ_dy,DeadDeviceGrp,175_SJ_2"
    },
    {
    "name":"system.deviceGroupId",
    "value":"56255,103904,23105,21122,142395"
    },
    {
    "name":"system.resourceCreatedOn",
    "value":"1652188809"
    },
    {
    "name":"system.devicetype",
    "value":"0"
    },
    {
    "name":"system.collectorversion",
    "value":"29107"
    },
    {
    "name":"system.staticgroups",
    "value":"Synthetics_Resource_Group"
    },
    {
    "name":"system.prefcollectorid",
    "value":"11934"
    },
    {
    "name":"system.displayname",
    "value":"my test vm"
    },
    {
    "name":"system.hoststatus",
    "value":"dead-collector"
    },
    {
    "name":"system.hostname",
    "value":"10.241.242.102"
    }
    ]
    }
    ],
    "searchId":null,
    "isMin":false
    }

    カスタムプロパティ

    クエリ フィルターを実行します。 

    {{url}}/device/devices?filter=customProperties:"{\"name\":\"testPROPERTY\",\"value\":\"service\"}"&fields=customProperties,name,id

    応答本文は、すべてのデバイスを返します customProperties 含まれる name:testPROPERTY そして value:service

    {
    "total":1,
    "items":[
    {
    "id":44,
    "name":"Instance",
    "customProperties":[
    {
    "name":"testPROPERTY",
    "value":"service"
    },
    {
    "name":"same case",
    "value":"service"
    },
    {
    "name":"snmp.test",
    "value":"test"
    },
    {
    "name":"predef.bizservice.evalMembersInterval",
    "value":"30"
    },
    {
    "name":"predef.bizservice.members",
    "value":"{\"device\":[],\"instance\":[{\"deviceGroupFullPath\":\"jenny/jenny1*\",\"deviceDisplayName\":\"10.131.1.17\",\"deviceProperties\":[],\"dataSourceFullName\":\"jenny_script_time\",\"dataSourceId\":2001791,\"instanceName\":\"*\"}]}"
    },
    {
    "name":"system.categories",
    "value":""
    }
    ]
    }
    ],
    "searchId":null,
    "isMin":false
    }

    自動プロパティ

    クエリ フィルターを実行します。 

    {{url}}/device/devices?filter=autoProperties:"{\"name\":\"predef.externalResourceID\",\"value\":\"service_63\"}"&fields=autoProperties,name,id

    応答本文は、すべてのデバイスを返します autoProperties 含まれる name:predef.externalResourceID そして value:service_63

    {
    "total":1,
    "items":[
    {
    "id":63,
    "name":"gcp",
    "autoProperties":[
    {
    "name":"predef.externalResourceID",
    "value":"service_63"
    },
    {
    "name":"predef.externalResourceType",
    "value":"Service"
    }
    ]
    }
    ],
    "searchId":null,
    "isMin":false
    }

    systemProperties と inheritedProperties

    クエリ フィルターを実行します。

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.displayname\",\"value\":\"qqq1\"}",inheritedProperties:"{\"name\":\"fdfdf\",\"value\":\"121212\"}"

    応答本文は、すべてのデバイスを返します systemProperties 含まれる name:system.displayname そして value:qqq1 そして inheritedProperties name:fdfdf そして value:121212

    {
    "total": 1,
    "items": [
    {
    "id": 770544,
    "name": "10.241.242.102",
    "displayName": "my test vm",
    "deviceType": 0,
    "relatedDeviceId": -1,
    "currentCollectorId": 11934,
    "preferredCollectorId": 11934,
    "autoBalancedCollectorGroupId": 0,
    "preferredCollectorGroupId": 581,
    "preferredCollectorGroupName": "Netflow",
    "description": "sfsf",
    "createdOn": 1652188809,
    "updatedOn": 1652188809,
    "disableAlerting": false,
    "autoPropsAssignedOn": 0,
    "autoPropsUpdatedOn": 0,
    "scanConfigId": 0,
    "link": "",
    "enableNetflow": false,
    "netflowCollectorId": 0,
    "netflowCollectorGroupId": 0,
    "netflowCollectorGroupName": null,
    "isPreferredLogCollectorConfigured": false,
    "currentLogCollectorId": 0,
    "logCollectorId": 0,
    "logCollectorDescription": null,
    "logCollectorGroupId": 0,
    "logCollectorGroupName": null,
    "lastDataTime": 0,
    "lastRawdataTime": 0,
    "hostGroupIds": "56255,103904,23105,21122,142395",
    "sdtStatus": "none-none-none",
    "userPermission": "write",
    "rolePrivileges": [],
    "hostStatus": "dead-collector",
    "alertStatus": "unconfirmed-critical-none",
    "alertStatusPriority": 1,
    "awsState": 1,
    "azureState": 1,
    "gcpState": 1,
    "alertDisableStatus": "none-none-none",
    "alertingDisabledOn": null,
    "collectorDescription": "centos-systemd-1",
    "netflowCollectorDescription": null,
    "customProperties": [
    {
    "name": "sn.cmdb_url",
    "value": "https://ven02915.service-now.com/nav_to.do?uri=cmdb_ci.do?sys_id=a1750a00db11d110afef285b13961906"
    },
    {
    "name": "sn.sys_id",
    "value": "a1750a00db11d110afef285b13961906"
    },
    {
    "name": "system.categories",
    "value": ""
    }
    ],
    "resourceIds": null,
    "upTimeInSeconds": 0,
    "deletedTimeInMs": 0,
    "toDeleteTimeInMs": 0,
    "hasDisabledSubResource": false,
    "ancestorHasDisabledLogicModule": false,
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "linux"
    },
    {
    "name": "system.description",
    "value": "sfsf"
    },
    {
    "name": "system.collectorid",
    "value": "11934"
    },
    {
    "name": "system.deviceId",
    "value": "770544"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "centos-systemd-1"
    },
    {
    "name": "system.collectordesc",
    "value": "centos-systemd-1"
    },
    {
    "name": "system.groups",
    "value": "Synthetics_Resource_Group,demo:/dasdas,152_SJ_dy,DeadDeviceGrp,175_SJ_2"
    },
    {
    "name": "system.deviceGroupId",
    "value": "56255,103904,23105,21122,142395"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1652188809"
    },
    {
    "name": "system.devicetype",
    "value": "0"
    },
    {
    "name": "system.collectorversion",
    "value": "29107"
    },
    {
    "name": "system.staticgroups",
    "value": "Synthetics_Resource_Group"
    },
    {
    "name": "system.prefcollectorid",
    "value": "11934"
    },
    {
    "name": "system.displayname",
    "value": "my test vm"
    },
    {
    "name": "system.hoststatus",
    "value": "dead-collector"
    },
    {
    "name": "system.hostname",
    "value": "10.241.242.102"
    }
    ],
    "autoProperties": [],
    "inheritedProperties": [
    {
    "name": "test11",
    "value": "test11"
    },
    {
    "name": "testPropertyTel",
    "value": "tel:18618198654"
    },
    {
    "name": "testPropertyHttps",
    "value": "https://test.com"
    },
    {
    "name": "mayank.pass",
    "value": "********"
    },
    {
    "name": "test.pass",
    "value": "********"
    },
    {
    "name": "test",
    "value": "test"
    },
    {
    "name": "fdfdf",
    "value": "121212"
    },
    {
    "name": "jnj",
    "value": "jnj"
    },
    {
    "name": "snmp.community",
    "value": "********"
    },
    {
    "name": "xen.user",
    "value": "root"
    },
    {
    "name": "esx.pass",
    "value": "********"
    },
    {
    "name": "tomcat.jmxports",
    "value": "9003"
    },
    {
    "name": "netapp.user",
    "value": "abhi9999"
    },
    {
    "name": "testPropertyHttp",
    "value": "http://test.com"
    },
    {
    "name": "xen.url",
    "value": ""
    },
    {
    "name": "becca",
    "value": "something"
    },
    {
    "name": "testPropertySkype",
    "value": "skype:21268822"
    },
    {
    "name": "testPropertyMailto",
    "value": "mailto:[email protected]"
    },
    {
    "name": "mayank",
    "value": "test"
    },
    {
    "name": "fang_wan",
    "value": "192.192.178.1"
    },
    {
    "name": "SS",
    "value": "wwww"
    },
    {
    "name": "test22",
    "value": "test22"
    },
    {
    "name": "esx.user",
    "value": "adsf"
    },
    {
    "name": "test.ipsi",
    "value": " "
    },
    {
    "name": "rootProp",
    "value": "test"
    },
    {
    "name": "xen.pass",
    "value": "********"
    },
    {
    "name": "today.date",
    "value": "8June"
    },
    {
    "name": "Test_prop1",
    "value": "test1"
    },
    {
    "name": "test2",
    "value": "test2"
    },
    {
    "name": "api-property1553839486",
    "value": "value"
    },
    {
    "name": "ssh.pass",
    "value": "********"
    }
    ],
    "syntheticsCollectorIds": []
    }
    ],
    "searchId": null,
    "isMin": false
    }

    高度なフィルターでの演算子の使用法 /device/devices API 

    • 演算子が等しくない (!:) フィルター クエリ
    {{url}}/device/devices?filter=customProperties!:"{\"name\":\"predef.bizservice.evalMembersInterval\",\"value\":\"*\"}"
    • 演算子に (~) を含むフィルター クエリ
    {{url}}/device/devices?filter=customProperties~"{\"name\":\"predef.bizservice.evalMembersInterval\",\"value\":\"*\"}"
    • 演算子を含まない (!~) フィルター クエリ
    {{url}}/device/devices?filter=customProperties!~"{\"name\":\"predef.bizservice.evalMembersInterval\",\"value\":\"*\"}"

    注: 単に「含む (~)」フィルターと「含まない (!~)」フィルターを使用するだけでは、すべての可能な値を取得できるわけではありません。 代わりに、これらのフィルターは完全に一致します。 可能な値をすべて取得するには、フィルターにアスタリスク (*) を追加します。 たとえば、「ATT*」または「*ATT」と書くことができます。

    • 含まれています。
      url/device/devices/?filter=customProperties~”{\”name\”:\”FilterTest\”,\”value\”:\”ATT*\”}”&fields=id,name,customProperties
    • 含まれないもの:
      url/device/devices/?filter=customProperties!~"{\"name\":\"FilterTest\",\"value\":\"ATT*\"}"&fields=id,name,customProperties
    • 演算子 special_eq (:::) フィルター クエリ
    {{url}}/device/devices?filter=inheritedProperties:::empty

    応答本文は、継承されたプロパティを持たないすべてのデバイスを返します。 null と空の両方の空のチェック。

    • 演算子 special_ne (!::) フィルター クエリ
    {{url}}/device/devices?filter=netflowCollectorDescription!::empty

    応答本文は、netflowCollectorDescription が空でも null でもないすべてのデバイスを返します。

    • 演算子 special_ne (!::) フィルター クエリ
    {{url}}/device/devices?filter=netflowCollectorDescription!::null

    応答本文で、このクエリは netflowCollectorDescription が null ではないすべてのデバイスを提供します。

    • 演算子論理 OR (||) フィルター クエリ
    {{url}}/device/devices?filter=customProperties:"{\"name\":\"testPROPERTY\",\"value\":\"service\"}" || customProperties:"{\"name\":\"system.categories\",\"value\":\"KubernetesLogicalService\"}"
    • 単一および高度なフィルター クエリ
    {{url}}/device/devices?fields=systemProperties,name,id&filter=systemProperties:"{\"name\":\"system.description\",\"value\":\"sfsf\"}",id>100

    例: 
    クエリを実行する

    {{url}}/device/devices?filter=systemProperties:"{\"name\":\"system.hostname\",\"value\":\"ay_service1_*\"}",id>1528&fields=systemProperties,id

    応答本文で、このクエリは次の結果を返します。

    {
    "total": 1,
    "items": [
    {
    "id": 1530,
    "systemProperties": [
    {
    "name": "system.enablenetflow",
    "value": "false"
    },
    {
    "name": "system.collectorplatform",
    "value": "n/a"
    },
    {
    "name": "system.collectorid",
    "value": "-4"
    },
    {
    "name": "system.deviceId",
    "value": "1530"
    },
    {
    "name": "system.prefcollectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.collectordesc",
    "value": "Service Data Aggregator"
    },
    {
    "name": "system.groups",
    "value": "Ay_service_group"
    },
    {
    "name": "system.deviceGroupId",
    "value": "478"
    },
    {
    "name": "system.resourceCreatedOn",
    "value": "1552015277"
    },
    {
    "name": "system.devicetype",
    "value": "6"
    },
    {
    "name": "system.collectorversion",
    "value": "0"
    },
    {
    "name": "system.staticgroups",
    "value": "Ay_service_group"
    },
    {
    "name": "system.prefcollectorid",
    "value": "-4"
    },
    {
    "name": "system.displayname",
    "value": "ay_service1_CLONE1"
    },
    {
    "name": "system.hostname",
    "value": "ay_service1_CLONE1"
    }
    ]
    }
    ],
    "searchId": null,
    "isMin": false
    }

    高度なフィルターでの演算子の使用法 /alert/alerts API

    注: monitorObjectGroups のアラート フィルタは、フルパス プロパティに対してのみサポートされます。 現在、等しい (:) と含む (~) の 2 つの演算子のみがサポートされています。

    等しい (:) および含む (~) 演算子

    • リソース グループまたは monitorObjectGroups の fullpath="Devices by Type/Collectors" を持つアラートをフィルター処理します
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors"

    https://localdev.logicmonitor.com/santaba/rest/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors"
    • リソース グループ (「タイプ別のデバイス」) またはそのサブグループを持つアラートをフィルター処理します。 末尾の「*」は、サブグループも含まれていることを示します。 たとえば、リソース グループ (「Devices by Type」) には、コレクター (「Devices by Type/Collectors」) と Linux サーバー (「Devices by Type/Linux Servers」) の 2 つのサブグループがあります。 ここで、結果には、(fullpath="Devices by Type") または (fullpath="Devices by Type/Collectors") または (fullpath="Devices by Type/Linux Servers") のいずれかのリソース グループを持つアラートが含まれます。
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type*"
    • 複数のリソース グループ値に基づいてアラートをフィルター処理します (複数のフルパス値は "|" で区切る必要があります)。
      (fullpath="Devices by Type/Collectors") または (fullpath="Kubernetes Cluster: k8-test/Nodes/All") を持つアラートをフィルタリングします
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors|Kubernetes Cluster: k8-test/Nodes/All"
    • ルート グループのアラートをフィルタリングします。 ルート グループのフルパスが空の場合は、会社名 (たとえば、 qauat01) を指定する必要があります。
    {{url}}/alert/alerts?filter=monitorObjectGroups:"qauat01"
    • 「」に一致するアラートをフィルタCollectors」をリソース グループのフルパスに追加します。 「Devices by Type/Collectors」と「Collectors_Backup」のフルパスを持つ 2 つのグループがある場合、結果には両方のグループからのアラートが含まれます。
    {{url}}/alert/alerts?filter=monitorObjectGroups~"Collectors"
    • 単一および高度なフィルター クエリ
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors",startEpoch>:1653295431
    {{url}}/alert/alerts?filter=monitorObjectGroups:"Devices by Type/Collectors",type:"batchJobAlert"
    記事上で