Created
April 7, 2023 08:40
-
-
Save nielsvanderkaap/ee8e45137adde8acfbcef8c4a7aa1f7f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"version": "Notebook/1.0", | |
"items": [ | |
{ | |
"type": 9, | |
"content": { | |
"version": "KqlParameterItem/1.0", | |
"parameters": [ | |
{ | |
"id": "a6247561-499c-437d-8dec-204af2562446", | |
"version": "KqlParameterItem/1.0", | |
"name": "subscription", | |
"label": "Subscription", | |
"type": 6, | |
"typeSettings": { | |
"additionalResourceOptions": [], | |
"includeAll": true, | |
"showDefault": false | |
} | |
}, | |
{ | |
"id": "1fbf15f4-c649-45f5-a311-60780866559a", | |
"version": "KqlParameterItem/1.0", | |
"name": "instance", | |
"type": 5, | |
"isRequired": true, | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"/subscriptions/{subscription:id}/providers/Microsoft.ApiManagement/service?api-version=2021-08-01\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.value\",\"columns\":[]}}]}", | |
"typeSettings": { | |
"additionalResourceOptions": [], | |
"showDefault": false | |
}, | |
"timeContext": { | |
"durationMs": 86400000 | |
}, | |
"queryType": 12, | |
"label": "Api Management Instance" | |
}, | |
{ | |
"id": "2026b50e-feb5-449d-a4f4-a6cc7fe9ef88", | |
"version": "KqlParameterItem/1.0", | |
"name": "timeRange", | |
"type": 4, | |
"isRequired": true, | |
"isGlobal": true, | |
"typeSettings": { | |
"selectableValues": [ | |
{ | |
"durationMs": 300000 | |
}, | |
{ | |
"durationMs": 900000 | |
}, | |
{ | |
"durationMs": 1800000 | |
}, | |
{ | |
"durationMs": 3600000 | |
}, | |
{ | |
"durationMs": 14400000 | |
}, | |
{ | |
"durationMs": 43200000 | |
}, | |
{ | |
"durationMs": 86400000 | |
}, | |
{ | |
"durationMs": 172800000 | |
}, | |
{ | |
"durationMs": 259200000 | |
}, | |
{ | |
"durationMs": 604800000 | |
}, | |
{ | |
"durationMs": 1209600000 | |
}, | |
{ | |
"durationMs": 2419200000 | |
}, | |
{ | |
"durationMs": 2592000000 | |
}, | |
{ | |
"durationMs": 5184000000 | |
}, | |
{ | |
"durationMs": 7776000000 | |
} | |
], | |
"allowCustom": true | |
}, | |
"value": { | |
"durationMs": 7776000000 | |
} | |
} | |
], | |
"style": "pills", | |
"queryType": 0, | |
"resourceType": "microsoft.insights/components" | |
}, | |
"name": "parameters - 9" | |
}, | |
{ | |
"type": 10, | |
"content": { | |
"chartId": "workbook6943f629-8df7-41a6-91e8-8f2a001a3de4", | |
"version": "MetricsItem/2.0", | |
"size": 0, | |
"chartType": 3, | |
"resourceType": "microsoft.apimanagement/service", | |
"metricScope": 0, | |
"resourceParameter": "instance", | |
"resourceIds": [ | |
"{instance}" | |
], | |
"timeContextFromParameter": "timeRange", | |
"timeContext": { | |
"durationMs": 7776000000 | |
}, | |
"metrics": [ | |
{ | |
"namespace": "microsoft.apimanagement/service", | |
"metric": "microsoft.apimanagement/service-Gateway Requests-Requests", | |
"aggregation": 1, | |
"splitBy": "BackendResponseCodeCategory" | |
} | |
], | |
"title": "Gateway Requests", | |
"gridSettings": { | |
"rowLimit": 10000 | |
} | |
}, | |
"customWidth": "50", | |
"name": "metric - 6" | |
}, | |
{ | |
"type": 10, | |
"content": { | |
"chartId": "workbook88474044-05ca-4615-9b5f-df340868e7f4", | |
"version": "MetricsItem/2.0", | |
"size": 0, | |
"chartType": 2, | |
"resourceType": "microsoft.apimanagement/service", | |
"metricScope": 0, | |
"resourceParameter": "instance", | |
"resourceIds": [ | |
"{instance}" | |
], | |
"timeContextFromParameter": "timeRange", | |
"timeContext": { | |
"durationMs": 7776000000 | |
}, | |
"metrics": [ | |
{ | |
"namespace": "microsoft.apimanagement/service", | |
"metric": "microsoft.apimanagement/service-Capacity-Capacity", | |
"aggregation": 4, | |
"splitBy": "Location" | |
} | |
], | |
"title": "Capacity", | |
"gridSettings": { | |
"rowLimit": 10000 | |
} | |
}, | |
"customWidth": "50", | |
"name": "metric - 7" | |
}, | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/reports/byApi?api-version=2021-08-01&$filter=timestamp ge datetime'{timeRange:startISO}' and timestamp le datetime'{timeRange:endISO}'\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.value\",\"columns\":[]}}]}", | |
"size": 3, | |
"title": "Apis for {instance:name}", | |
"noDataMessage": "Select an Api Management Instance", | |
"queryType": 12, | |
"visualization": "table", | |
"gridSettings": { | |
"formatters": [ | |
{ | |
"columnMatch": "apiId", | |
"formatter": 1 | |
}, | |
{ | |
"columnMatch": "callCountSuccess", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "green" | |
} | |
}, | |
{ | |
"columnMatch": "callCountBlocked", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "red" | |
} | |
}, | |
{ | |
"columnMatch": "callCountFailed", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "red" | |
} | |
}, | |
{ | |
"columnMatch": "callCountOther", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "orange" | |
} | |
}, | |
{ | |
"columnMatch": "callCountTotal", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "greenRed" | |
} | |
} | |
], | |
"filter": true | |
} | |
}, | |
"conditionalVisibility": { | |
"parameterName": "instance", | |
"comparison": "isNotEqualTo" | |
}, | |
"name": "Apis", | |
"styleSettings": { | |
"showBorder": true | |
} | |
}, | |
{ | |
"type": 9, | |
"content": { | |
"version": "KqlParameterItem/1.0", | |
"parameters": [ | |
{ | |
"id": "69607dc3-231a-47a1-8e3d-2badd75a6686", | |
"version": "KqlParameterItem/1.0", | |
"name": "serviceDiagnostics", | |
"type": 1, | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/diagnostics?api-version=2021-08-01&$filter=name eq 'applicationinsights'\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.value[0].properties.loggerId\",\"columns\":[]}}]}", | |
"isHiddenWhenLocked": true, | |
"queryType": 12 | |
}, | |
{ | |
"id": "293626cf-3375-4d87-aa3e-d735111c3462", | |
"version": "KqlParameterItem/1.0", | |
"name": "allApis", | |
"type": 1, | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/apis?api-version=2021-08-01\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":null}", | |
"isHiddenWhenLocked": true, | |
"queryType": 12 | |
}, | |
{ | |
"id": "e697656e-e7fd-4d67-83ac-2d3f7924336c", | |
"version": "KqlParameterItem/1.0", | |
"name": "api", | |
"label": "Select Api to view Operations", | |
"type": 2, | |
"query": "let json = todynamic('{allApis:escapejson}').value;\r\nprint output = json\r\n| mvexpand output\r\n| evaluate bag_unpack(output)\r\n| where properties.isCurrent == true\r\n| project name = name, label = strcat(tostring(properties.method), ' https://apim/', tostring(properties.path), ' \\t(', tostring(properties.displayName),', ', tostring(properties.apiVersion),')'), selected = true;\r\n\r\n", | |
"typeSettings": { | |
"additionalResourceOptions": [], | |
"showDefault": false | |
}, | |
"queryType": 0, | |
"value": "test" | |
} | |
], | |
"style": "pills", | |
"queryType": 12 | |
}, | |
"name": "parameters - 6 - Copy" | |
}, | |
{ | |
"type": 11, | |
"content": { | |
"version": "LinkItem/1.0", | |
"style": "tabs", | |
"links": [ | |
{ | |
"id": "1b272eb0-de24-478d-97fe-0f3577d950de", | |
"cellValue": "apiTab", | |
"linkTarget": "parameter", | |
"linkLabel": "Operations", | |
"subTarget": "Operations", | |
"style": "link" | |
}, | |
{ | |
"id": "9f92c573-ea31-4708-9bef-ff16121f54e0", | |
"cellValue": "apiTab", | |
"linkTarget": "parameter", | |
"linkLabel": "Api Metrics", | |
"subTarget": "Metrics", | |
"style": "link" | |
} | |
] | |
}, | |
"name": "links - 7" | |
}, | |
{ | |
"type": 12, | |
"content": { | |
"version": "NotebookGroup/1.0", | |
"groupType": "editable", | |
"items": [ | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/reports/byOperation?api-version=2021-08-01&$filter=timestamp ge datetime'{timeRange:startISO}' and timestamp le datetime'{timeRange:endISO}' and apiId eq '{api}'\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.value\",\"columns\":[]}}]}", | |
"size": 3, | |
"noDataMessage": "Select an Api Management Instance", | |
"queryType": 12, | |
"visualization": "table", | |
"gridSettings": { | |
"formatters": [ | |
{ | |
"columnMatch": "apiId", | |
"formatter": 1 | |
}, | |
{ | |
"columnMatch": "callCountSuccess", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "green" | |
} | |
}, | |
{ | |
"columnMatch": "callCountBlocked", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "red" | |
} | |
}, | |
{ | |
"columnMatch": "callCountFailed", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "red" | |
} | |
}, | |
{ | |
"columnMatch": "callCountOther", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "orange" | |
} | |
}, | |
{ | |
"columnMatch": "callCountTotal", | |
"formatter": 3, | |
"formatOptions": { | |
"palette": "greenRed" | |
} | |
} | |
], | |
"filter": true | |
} | |
}, | |
"conditionalVisibility": { | |
"parameterName": "instance", | |
"comparison": "isNotEqualTo" | |
}, | |
"name": "OperationsList", | |
"styleSettings": { | |
"showBorder": true | |
} | |
}, | |
{ | |
"type": 9, | |
"content": { | |
"version": "KqlParameterItem/1.0", | |
"parameters": [ | |
{ | |
"id": "bde9f9d4-bc9c-4312-9828-407ca971fa81", | |
"version": "KqlParameterItem/1.0", | |
"name": "apiDiagnostics", | |
"type": 1, | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/apis/{api}/diagnostics?api-version=2021-08-01&$filter=name eq 'applicationinsights'\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.value[0].properties.loggerId\",\"columns\":[]}}]}", | |
"isHiddenWhenLocked": true, | |
"queryType": 12 | |
}, | |
{ | |
"id": "73dc7826-beb8-4167-ba44-4a5bbe6cb880", | |
"version": "KqlParameterItem/1.0", | |
"name": "activeLogger", | |
"type": 1, | |
"isHiddenWhenLocked": true, | |
"criteriaData": [ | |
{ | |
"criteriaContext": { | |
"leftOperand": "apiDiagnostics", | |
"operator": "isNotNull", | |
"rightValType": "param", | |
"resultValType": "param", | |
"resultVal": "apiDiagnostics" | |
} | |
}, | |
{ | |
"criteriaContext": { | |
"operator": "Default", | |
"resultValType": "param", | |
"resultVal": "serviceDiagnostics" | |
} | |
} | |
] | |
}, | |
{ | |
"id": "bd97d700-b545-4db1-aded-bd3004e0276c", | |
"version": "KqlParameterItem/1.0", | |
"name": "apiPath", | |
"type": 1, | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/apis/{api}?api-version=2021-08-01\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.properties.path\",\"columns\":[]}}]}", | |
"isHiddenWhenLocked": true, | |
"queryType": 12 | |
}, | |
{ | |
"id": "c1213db9-5108-41d3-ba6e-487c863fbe84", | |
"version": "KqlParameterItem/1.0", | |
"name": "allOperations", | |
"type": 1, | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/apis/{api}/operations?api-version=2021-08-01\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":null}", | |
"isHiddenWhenLocked": true, | |
"queryType": 12 | |
}, | |
{ | |
"id": "9fb005af-ed26-4400-ba5b-cda6d389aff4", | |
"version": "KqlParameterItem/1.0", | |
"name": "operation", | |
"label": "Select Operation to view tracked requests", | |
"type": 2, | |
"isRequired": true, | |
"query": "let json = todynamic('{allOperations:escapejson}').value;\r\nprint output = json\r\n| mvexpand output\r\n| evaluate bag_unpack(output)\r\n| project value = name, label = strcat(tostring(properties.method), ' (', tostring(properties.displayName), ')'), group = strcat('/', '{apiPath}' , tostring(properties.urlTemplate));", | |
"typeSettings": { | |
"additionalResourceOptions": [], | |
"showDefault": false | |
}, | |
"timeContext": { | |
"durationMs": 0 | |
}, | |
"timeContextFromParameter": "timeRange", | |
"queryType": 0 | |
}, | |
{ | |
"id": "cd94d7da-5196-4a01-a8ed-ddaaaab26022", | |
"version": "KqlParameterItem/1.0", | |
"name": "activeAppInsights", | |
"type": 5, | |
"isRequired": true, | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{activeLogger:id}?api-version=2022-08-01\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.properties.resourceId\",\"columns\":[]}}]}", | |
"isHiddenWhenLocked": true, | |
"typeSettings": { | |
"additionalResourceOptions": [ | |
"value::1" | |
], | |
"showDefault": false | |
}, | |
"defaultValue": "value::1", | |
"queryType": 12 | |
} | |
], | |
"style": "pills", | |
"queryType": 12 | |
}, | |
"name": "parameters - 6" | |
}, | |
{ | |
"type": 11, | |
"content": { | |
"version": "LinkItem/1.0", | |
"style": "tabs", | |
"links": [ | |
{ | |
"id": "62c36cde-b401-48f6-a7e3-dd69bdeff202", | |
"cellValue": "detailsTab", | |
"linkTarget": "parameter", | |
"linkLabel": "Tracked Instances", | |
"subTarget": "trackedInstances", | |
"style": "link", | |
"linkIsContextBlade": true | |
}, | |
{ | |
"id": "c9d55a8b-e8df-4d81-bb87-830ccf02357a", | |
"cellValue": "detailsTab", | |
"linkTarget": "parameter", | |
"linkLabel": "Metrics", | |
"subTarget": "Metrics", | |
"style": "link" | |
} | |
] | |
}, | |
"name": "links - 6" | |
}, | |
{ | |
"type": 12, | |
"content": { | |
"version": "NotebookGroup/1.0", | |
"groupType": "editable", | |
"items": [ | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "requests\r\n| extend serviceName = tostring(customDimensions[\"Service ID\"]), apiName = tostring(customDimensions[\"API Name\"]), operationName = tostring(customDimensions[\"Operation Name\"]), requestBody = tostring(customDimensions[\"Request-Body\"]), responseBody = tostring(customDimensions[\"Response-Body\"])\r\n| where serviceName == '{instance:name}' and apiName == '{api}' and operationName == '{operation}' and timestamp between (datetime({timeRange:startISO}) .. datetime({timeRange:endISO}))\r\n", | |
"size": 3, | |
"exportedParameters": [ | |
{ | |
"fieldName": "requestBody", | |
"parameterName": "requestBody", | |
"parameterType": 1 | |
}, | |
{ | |
"fieldName": "responseBody", | |
"parameterName": "responseBody", | |
"parameterType": 1 | |
}, | |
{ | |
"fieldName": "timestamp", | |
"parameterName": "timestamp", | |
"parameterType": 1 | |
} | |
], | |
"queryType": 0, | |
"resourceType": "microsoft.insights/components", | |
"crossComponentResources": [ | |
"{activeAppInsights}" | |
], | |
"gridSettings": { | |
"formatters": [ | |
{ | |
"columnMatch": "id", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "source", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "name", | |
"formatter": 1 | |
}, | |
{ | |
"columnMatch": "itemType", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "operation_Name", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "operation_Id", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "operation_ParentId", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "operation_SyntheticSource", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "session_Id", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "user_Id", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "user_AuthenticatedId", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "user_AccountId", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "application_Version", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_Type", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_Model", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_OS", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_IP", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_City", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_StateOrProvince", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_CountryOrRegion", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "client_Browser", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "cloud_RoleName", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "cloud_RoleInstance", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "appId", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "appName", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "iKey", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "sdkVersion", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "itemId", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "itemCount", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "_ResourceId", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "serviceName", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "apiName", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "operationName", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "requestBody", | |
"formatter": 5 | |
}, | |
{ | |
"columnMatch": "responseBody", | |
"formatter": 5 | |
} | |
] | |
} | |
}, | |
"name": "query - 6" | |
}, | |
{ | |
"type": 12, | |
"content": { | |
"version": "NotebookGroup/1.0", | |
"groupType": "editable", | |
"title": "Request Body", | |
"items": [ | |
{ | |
"type": 1, | |
"content": { | |
"json": "{requestBody}" | |
}, | |
"conditionalVisibility": { | |
"parameterName": "requestBody", | |
"comparison": "isNotEqualTo" | |
}, | |
"name": "text - 7" | |
} | |
] | |
}, | |
"conditionalVisibility": { | |
"parameterName": "timestamp", | |
"comparison": "isNotEqualTo" | |
}, | |
"name": "group - 8", | |
"styleSettings": { | |
"showBorder": true | |
} | |
}, | |
{ | |
"type": 12, | |
"content": { | |
"version": "NotebookGroup/1.0", | |
"groupType": "editable", | |
"title": "Response Body", | |
"items": [ | |
{ | |
"type": 1, | |
"content": { | |
"json": "{responseBody}" | |
}, | |
"name": "text - 0" | |
} | |
] | |
}, | |
"conditionalVisibility": { | |
"parameterName": "timestamp", | |
"comparison": "isNotEqualTo" | |
}, | |
"name": "group - 8", | |
"styleSettings": { | |
"showBorder": true | |
} | |
} | |
] | |
}, | |
"conditionalVisibility": { | |
"parameterName": "detailsTab", | |
"comparison": "isEqualTo", | |
"value": "trackedInstances" | |
}, | |
"name": "TrackedInstances" | |
}, | |
{ | |
"type": 12, | |
"content": { | |
"version": "NotebookGroup/1.0", | |
"groupType": "editable", | |
"items": [ | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "", | |
"size": 0, | |
"timeContext": { | |
"durationMs": 86400000 | |
}, | |
"queryType": 0, | |
"resourceType": "microsoft.operationalinsights/workspaces" | |
}, | |
"name": "query - 0" | |
} | |
] | |
}, | |
"conditionalVisibility": { | |
"parameterName": "detailsTab", | |
"comparison": "isEqualTo", | |
"value": "auditInstances" | |
}, | |
"name": "Audit" | |
}, | |
{ | |
"type": 12, | |
"content": { | |
"version": "NotebookGroup/1.0", | |
"groupType": "editable", | |
"items": [ | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/reports/byTime?$filter=timestamp ge datetime'{timeRange:startISO}' and timestamp le datetime'{timeRange:endISO}' and apiId eq '{api}' and operationId eq '{operation}'&interval=PT15M&$select=apiTimeAvg&api-version=2022-08-01\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.value\",\"columns\":[]}}]}", | |
"size": 0, | |
"queryType": 12, | |
"visualization": "table", | |
"chartSettings": { | |
"xAxis": "timestamp" | |
} | |
}, | |
"conditionalVisibility": { | |
"parameterName": "notset", | |
"comparison": "isNotEqualTo" | |
}, | |
"name": "OperationMetrics" | |
}, | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"Merge/1.0\",\"merges\":[{\"id\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\",\"mergeType\":\"table\",\"leftTable\":\"OperationMetrics\"}],\"projectRename\":[{\"originalName\":\"[OperationMetrics].timestamp\",\"mergedName\":\"timestamp\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].interval\",\"mergedName\":\"interval\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].callCountSuccess\",\"mergedName\":\"callCountSuccess\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].callCountBlocked\",\"mergedName\":\"callCountBlocked\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].callCountFailed\",\"mergedName\":\"callCountFailed\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].callCountOther\",\"mergedName\":\"callCountOther\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].callCountTotal\",\"mergedName\":\"callCountTotal\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].bandwidth\",\"mergedName\":\"bandwidth\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].cacheHitCount\",\"mergedName\":\"cacheHitCount\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].cacheMissCount\",\"mergedName\":\"cacheMissCount\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].valueCacheHitCount\",\"mergedName\":\"valueCacheHitCount\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].valueCacheMissCount\",\"mergedName\":\"valueCacheMissCount\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].apiTimeAvg\",\"mergedName\":\"apiTimeAvg\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].apiTimeMin\",\"mergedName\":\"apiTimeMin\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].apiTimeMax\",\"mergedName\":\"apiTimeMax\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].serviceTimeAvg\",\"mergedName\":\"serviceTimeAvg\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].serviceTimeMin\",\"mergedName\":\"serviceTimeMin\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[OperationMetrics].serviceTimeMax\",\"mergedName\":\"serviceTimeMax\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[ApiMetrics].serviceTimeMax\"},{\"originalName\":\"[ApiMetrics].serviceTimeMin\"},{\"originalName\":\"[ApiMetrics].serviceTimeAvg\"},{\"originalName\":\"[ApiMetrics].apiTimeMax\"},{\"originalName\":\"[ApiMetrics].apiTimeMin\"},{\"originalName\":\"[ApiMetrics].apiTimeAvg\"},{\"originalName\":\"[ApiMetrics].valueCacheMissCount\"},{\"originalName\":\"[ApiMetrics].valueCacheHitCount\"},{\"originalName\":\"[ApiMetrics].cacheMissCount\"},{\"originalName\":\"[ApiMetrics].cacheHitCount\"},{\"originalName\":\"[ApiMetrics].bandwidth\"}]}", | |
"size": 0, | |
"title": "Operation Requests", | |
"queryType": 7, | |
"visualization": "barchart", | |
"chartSettings": { | |
"xAxis": "timestamp", | |
"yAxis": [ | |
"callCountBlocked", | |
"callCountFailed", | |
"callCountOther", | |
"callCountSuccess" | |
], | |
"showLegend": true, | |
"xSettings": { | |
"numberFormatSettings": { | |
"unit": 27, | |
"options": { | |
"style": "decimal", | |
"useGrouping": true | |
} | |
} | |
} | |
} | |
}, | |
"customWidth": "50", | |
"showPin": false, | |
"name": "query - 1" | |
}, | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"Merge/1.0\",\"merges\":[{\"id\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf418\",\"mergeType\":\"table\",\"leftTable\":\"OperationMetrics\"}],\"projectRename\":[{\"originalName\":\"[OperationMetrics].timestamp\",\"mergedName\":\"timestamp\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf418\"},{\"originalName\":\"[OperationMetrics].interval\",\"mergedName\":\"interval\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf418\"},{\"originalName\":\"[OperationMetrics].apiTimeMin\",\"mergedName\":\"apiTimeMin\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf418\"},{\"originalName\":\"[OperationMetrics].apiTimeAvg\",\"mergedName\":\"apiTimeAvg\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf418\"},{\"originalName\":\"[OperationMetrics].apiTimeMax\",\"mergedName\":\"apiTimeMax\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf418\"},{\"originalName\":\"[ApiMetrics].callCountSuccess\"},{\"originalName\":\"[ApiMetrics].callCountBlocked\"},{\"originalName\":\"[ApiMetrics].callCountFailed\"},{\"originalName\":\"[ApiMetrics].callCountOther\"},{\"originalName\":\"[ApiMetrics].callCountTotal\"},{\"originalName\":\"[ApiMetrics].bandwidth\"},{\"originalName\":\"[ApiMetrics].cacheHitCount\"},{\"originalName\":\"[ApiMetrics].cacheMissCount\"},{\"originalName\":\"[ApiMetrics].valueCacheHitCount\"},{\"originalName\":\"[ApiMetrics].valueCacheMissCount\"},{\"originalName\":\"[ApiMetrics].serviceTimeAvg\"},{\"originalName\":\"[ApiMetrics].serviceTimeMin\"},{\"originalName\":\"[ApiMetrics].serviceTimeMax\"},{\"originalName\":\"[OperationMetrics].serviceTimeMax\"},{\"originalName\":\"[OperationMetrics].serviceTimeMin\"},{\"originalName\":\"[OperationMetrics].serviceTimeAvg\"},{\"originalName\":\"[OperationMetrics].valueCacheMissCount\"},{\"originalName\":\"[OperationMetrics].valueCacheHitCount\"},{\"originalName\":\"[OperationMetrics].cacheMissCount\"},{\"originalName\":\"[OperationMetrics].cacheHitCount\"},{\"originalName\":\"[OperationMetrics].bandwidth\"},{\"originalName\":\"[OperationMetrics].callCountTotal\"},{\"originalName\":\"[OperationMetrics].callCountOther\"},{\"originalName\":\"[OperationMetrics].callCountFailed\"},{\"originalName\":\"[OperationMetrics].callCountBlocked\"},{\"originalName\":\"[OperationMetrics].callCountSuccess\"}]}", | |
"size": 0, | |
"aggregation": 1, | |
"title": "Request Duration", | |
"queryType": 7, | |
"visualization": "linechart", | |
"chartSettings": { | |
"showLegend": true, | |
"showDataPoints": true, | |
"ySettings": { | |
"numberFormatSettings": { | |
"unit": 23, | |
"options": { | |
"style": "decimal", | |
"useGrouping": true | |
} | |
} | |
} | |
} | |
}, | |
"customWidth": "50", | |
"showPin": false, | |
"name": "query - 2" | |
}, | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"Merge/1.0\",\"merges\":[{\"id\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf41b\",\"mergeType\":\"table\",\"leftTable\":\"OperationMetrics\"}],\"projectRename\":[{\"originalName\":\"[OperationMetrics].timestamp\",\"mergedName\":\"timestamp\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf41b\"},{\"originalName\":\"[OperationMetrics].interval\",\"mergedName\":\"interval\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf41b\"},{\"originalName\":\"[OperationMetrics].bandwidth\",\"mergedName\":\"bandwidth\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf41b\"},{\"originalName\":\"[ApiMetrics].callCountSuccess\"},{\"originalName\":\"[ApiMetrics].callCountBlocked\"},{\"originalName\":\"[ApiMetrics].callCountFailed\"},{\"originalName\":\"[ApiMetrics].callCountOther\"},{\"originalName\":\"[ApiMetrics].callCountTotal\"},{\"originalName\":\"[ApiMetrics].cacheHitCount\"},{\"originalName\":\"[ApiMetrics].cacheMissCount\"},{\"originalName\":\"[ApiMetrics].valueCacheHitCount\"},{\"originalName\":\"[ApiMetrics].valueCacheMissCount\"},{\"originalName\":\"[ApiMetrics].apiTimeAvg\"},{\"originalName\":\"[ApiMetrics].apiTimeMin\"},{\"originalName\":\"[ApiMetrics].apiTimeMax\"},{\"originalName\":\"[ApiMetrics].serviceTimeAvg\"},{\"originalName\":\"[ApiMetrics].serviceTimeMin\"},{\"originalName\":\"[ApiMetrics].serviceTimeMax\"},{\"originalName\":\"[OperationMetrics].cacheHitCount\"},{\"originalName\":\"[OperationMetrics].cacheMissCount\"},{\"originalName\":\"[OperationMetrics].valueCacheHitCount\"},{\"originalName\":\"[OperationMetrics].serviceTimeMax\"},{\"originalName\":\"[OperationMetrics].serviceTimeMin\"},{\"originalName\":\"[OperationMetrics].serviceTimeAvg\"},{\"originalName\":\"[OperationMetrics].apiTimeMax\"},{\"originalName\":\"[OperationMetrics].apiTimeMin\"},{\"originalName\":\"[OperationMetrics].valueCacheMissCount\"},{\"originalName\":\"[OperationMetrics].apiTimeAvg\"},{\"originalName\":\"[OperationMetrics].callCountTotal\"},{\"originalName\":\"[OperationMetrics].callCountOther\"},{\"originalName\":\"[OperationMetrics].callCountFailed\"},{\"originalName\":\"[OperationMetrics].callCountSuccess\"},{\"originalName\":\"[OperationMetrics].callCountBlocked\"}]}", | |
"size": 0, | |
"title": "Bandwidth", | |
"queryType": 7, | |
"visualization": "linechart", | |
"chartSettings": { | |
"showLegend": true, | |
"seriesLabelSettings": [ | |
{ | |
"seriesName": "PT15M", | |
"label": "Data Transferred" | |
} | |
], | |
"showDataPoints": true, | |
"ySettings": { | |
"numberFormatSettings": { | |
"unit": 36, | |
"options": { | |
"style": "decimal", | |
"useGrouping": true | |
} | |
} | |
} | |
} | |
}, | |
"customWidth": "50", | |
"showPin": false, | |
"name": "query - 3" | |
} | |
] | |
}, | |
"conditionalVisibility": { | |
"parameterName": "detailsTab", | |
"comparison": "isEqualTo", | |
"value": "Metrics" | |
}, | |
"name": "ApiMetricsTab" | |
} | |
] | |
}, | |
"conditionalVisibility": { | |
"parameterName": "apiTab", | |
"comparison": "isEqualTo", | |
"value": "Operations" | |
}, | |
"name": "OperationsTab" | |
}, | |
{ | |
"type": 12, | |
"content": { | |
"version": "NotebookGroup/1.0", | |
"groupType": "editable", | |
"items": [ | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"ARMEndpoint/1.0\",\"data\":null,\"headers\":[],\"method\":\"GET\",\"path\":\"{instance:id}/reports/byTime?$filter=timestamp ge datetime'{timeRange:startISO}' and timestamp le datetime'{timeRange:endISO}' and apiId eq '{api}'&interval=PT15M&$select=apiTimeAvg&api-version=2022-08-01\",\"urlParams\":[],\"batchDisabled\":false,\"transformers\":[{\"type\":\"jsonpath\",\"settings\":{\"tablePath\":\"$.value\",\"columns\":[]}}]}", | |
"size": 0, | |
"queryType": 12, | |
"visualization": "table", | |
"chartSettings": { | |
"xAxis": "timestamp" | |
} | |
}, | |
"conditionalVisibility": { | |
"parameterName": "notset", | |
"comparison": "isNotEqualTo" | |
}, | |
"name": "ApiMetrics" | |
}, | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"Merge/1.0\",\"merges\":[{\"id\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\",\"mergeType\":\"table\",\"leftTable\":\"ApiMetrics\"}],\"projectRename\":[{\"originalName\":\"[ApiMetrics].timestamp\",\"mergedName\":\"timestamp\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[ApiMetrics].interval\",\"mergedName\":\"interval\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[ApiMetrics].callCountSuccess\",\"mergedName\":\"callCountSuccess\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[ApiMetrics].callCountBlocked\",\"mergedName\":\"callCountBlocked\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[ApiMetrics].callCountOther\",\"mergedName\":\"callCountOther\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[ApiMetrics].callCountFailed\",\"mergedName\":\"callCountFailed\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf297\"},{\"originalName\":\"[ApiMetrics].serviceTimeMax\"},{\"originalName\":\"[ApiMetrics].serviceTimeMin\"},{\"originalName\":\"[ApiMetrics].serviceTimeAvg\"},{\"originalName\":\"[ApiMetrics].apiTimeMax\"},{\"originalName\":\"[ApiMetrics].apiTimeMin\"},{\"originalName\":\"[ApiMetrics].apiTimeAvg\"},{\"originalName\":\"[ApiMetrics].valueCacheMissCount\"},{\"originalName\":\"[ApiMetrics].valueCacheHitCount\"},{\"originalName\":\"[ApiMetrics].cacheMissCount\"},{\"originalName\":\"[ApiMetrics].cacheHitCount\"},{\"originalName\":\"[ApiMetrics].bandwidth\"},{\"originalName\":\"[ApiMetrics].callCountTotal\"}]}", | |
"size": 0, | |
"title": "Api Requests", | |
"queryType": 7, | |
"visualization": "barchart", | |
"chartSettings": { | |
"xAxis": "timestamp", | |
"yAxis": [ | |
"callCountBlocked", | |
"callCountFailed", | |
"callCountOther", | |
"callCountSuccess" | |
], | |
"showLegend": true, | |
"xSettings": { | |
"numberFormatSettings": { | |
"unit": 27, | |
"options": { | |
"style": "decimal", | |
"useGrouping": true | |
} | |
} | |
} | |
} | |
}, | |
"customWidth": "50", | |
"showPin": false, | |
"name": "query - 1" | |
}, | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"Merge/1.0\",\"merges\":[{\"id\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2a5\",\"mergeType\":\"table\",\"leftTable\":\"ApiMetrics\"}],\"projectRename\":[{\"originalName\":\"[ApiMetrics].timestamp\",\"mergedName\":\"timestamp\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2a5\"},{\"originalName\":\"[ApiMetrics].interval\",\"mergedName\":\"interval\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2a5\"},{\"originalName\":\"[ApiMetrics].apiTimeMin\",\"mergedName\":\"apiTimeMin\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2a5\"},{\"originalName\":\"[ApiMetrics].apiTimeAvg\",\"mergedName\":\"apiTimeAvg\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2a5\"},{\"originalName\":\"[ApiMetrics].apiTimeMax\",\"mergedName\":\"apiTimeMax\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2a5\"},{\"originalName\":\"[ApiMetrics].callCountSuccess\"},{\"originalName\":\"[ApiMetrics].callCountBlocked\"},{\"originalName\":\"[ApiMetrics].callCountFailed\"},{\"originalName\":\"[ApiMetrics].callCountOther\"},{\"originalName\":\"[ApiMetrics].callCountTotal\"},{\"originalName\":\"[ApiMetrics].bandwidth\"},{\"originalName\":\"[ApiMetrics].cacheHitCount\"},{\"originalName\":\"[ApiMetrics].cacheMissCount\"},{\"originalName\":\"[ApiMetrics].valueCacheHitCount\"},{\"originalName\":\"[ApiMetrics].valueCacheMissCount\"},{\"originalName\":\"[ApiMetrics].serviceTimeAvg\"},{\"originalName\":\"[ApiMetrics].serviceTimeMin\"},{\"originalName\":\"[ApiMetrics].serviceTimeMax\"}]}", | |
"size": 0, | |
"aggregation": 1, | |
"title": "Request Duration", | |
"queryType": 7, | |
"visualization": "linechart", | |
"chartSettings": { | |
"showLegend": true, | |
"showDataPoints": true, | |
"ySettings": { | |
"numberFormatSettings": { | |
"unit": 23, | |
"options": { | |
"style": "decimal", | |
"useGrouping": true | |
} | |
} | |
} | |
} | |
}, | |
"customWidth": "50", | |
"showPin": false, | |
"name": "query - 2" | |
}, | |
{ | |
"type": 3, | |
"content": { | |
"version": "KqlItem/1.0", | |
"query": "{\"version\":\"Merge/1.0\",\"merges\":[{\"id\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2f6\",\"mergeType\":\"table\",\"leftTable\":\"ApiMetrics\"}],\"projectRename\":[{\"originalName\":\"[ApiMetrics].timestamp\",\"mergedName\":\"timestamp\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2f6\"},{\"originalName\":\"[ApiMetrics].interval\",\"mergedName\":\"interval\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2f6\"},{\"originalName\":\"[ApiMetrics].bandwidth\",\"mergedName\":\"bandwidth\",\"fromId\":\"4bb2e307-7b18-4829-a5a7-89ef16fcf2f6\"},{\"originalName\":\"[ApiMetrics].callCountSuccess\"},{\"originalName\":\"[ApiMetrics].callCountBlocked\"},{\"originalName\":\"[ApiMetrics].callCountFailed\"},{\"originalName\":\"[ApiMetrics].callCountOther\"},{\"originalName\":\"[ApiMetrics].callCountTotal\"},{\"originalName\":\"[ApiMetrics].cacheHitCount\"},{\"originalName\":\"[ApiMetrics].cacheMissCount\"},{\"originalName\":\"[ApiMetrics].valueCacheHitCount\"},{\"originalName\":\"[ApiMetrics].valueCacheMissCount\"},{\"originalName\":\"[ApiMetrics].apiTimeAvg\"},{\"originalName\":\"[ApiMetrics].apiTimeMin\"},{\"originalName\":\"[ApiMetrics].apiTimeMax\"},{\"originalName\":\"[ApiMetrics].serviceTimeAvg\"},{\"originalName\":\"[ApiMetrics].serviceTimeMin\"},{\"originalName\":\"[ApiMetrics].serviceTimeMax\"}]}", | |
"size": 0, | |
"title": "Bandwidth", | |
"queryType": 7, | |
"visualization": "linechart", | |
"chartSettings": { | |
"showLegend": true, | |
"seriesLabelSettings": [ | |
{ | |
"seriesName": "PT15M", | |
"label": "Data Transferred" | |
} | |
], | |
"showDataPoints": true, | |
"ySettings": { | |
"numberFormatSettings": { | |
"unit": 36, | |
"options": { | |
"style": "decimal", | |
"useGrouping": true | |
} | |
} | |
} | |
} | |
}, | |
"customWidth": "50", | |
"showPin": false, | |
"name": "query - 3" | |
} | |
] | |
}, | |
"conditionalVisibility": { | |
"parameterName": "apiTab", | |
"comparison": "isEqualTo", | |
"value": "Metrics" | |
}, | |
"name": "ApiMetricsTab" | |
} | |
], | |
"$schema": "https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment