[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EXPAT92DA72SSR2GNAPG4Y":3,"skill-same:01M6EXPAT92DA72SSR2GNAPG4Y":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":6,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M6EXPAT92DA72SSR2GNAPG4Y","azure-monitor-query-py",null,"Azure Monitor Query SDK for Python. Use for querying Log Analytics workspaces and Azure Monitor metrics.\nTriggers: \"azure-monitor-query\", \"LogsQueryClient\", \"MetricsQueryClient\", \"Log Analytics\", \"Kusto queries\", \"Azure metrics\".","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",66,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-monitor-query-py\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"azure","azure monitor query py","monitor","query","azure monitor","python","sdk","analytics","metrics","azure-monitor","use","log","workspaces","queries","triggers","2026-11-10 10:12:30",false,"---\nname: azure-monitor-query-py\ndescription: |\n  Azure Monitor Query SDK for Python. Use for querying Log Analytics workspaces and Azure Monitor metrics.\n  Triggers: \"azure-monitor-query\", \"LogsQueryClient\", \"MetricsQueryClient\", \"Log Analytics\", \"Kusto queries\", \"Azure metrics\".\npackage: azure-monitor-query\n---\n\n# Azure Monitor Query SDK for Python\n\nQuery logs and metrics from Azure Monitor and Log Analytics workspaces.\n\n## Installation\n\n```bash\npip install azure-monitor-query\n```\n\n## Environment Variables\n\n```bash\n# Log Analytics\nAZURE_LOG_ANALYTICS_WORKSPACE_ID=\u003Cworkspace-id>\n\n# Metrics\nAZURE_METRICS_RESOURCE_URI=\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002F\u003Cprovider>\u002F\u003Ctype>\u002F\u003Cname>\n```\n\n## Authentication\n\n```python\nfrom azure.identity import DefaultAzureCredential\n\ncredential = DefaultAzureCredential()\n```\n\n## Logs Query Client\n\n### Basic Query\n\n```python\nfrom azure.monitor.query import LogsQueryClient\nfrom datetime import timedelta\n\nclient = LogsQueryClient(credential)\n\nquery = \"\"\"\nAppRequests\n| where TimeGenerated > ago(1h)\n| summarize count() by bin(TimeGenerated, 5m), ResultCode\n| order by TimeGenerated desc\n\"\"\"\n\nresponse = client.query_workspace(\n    workspace_id=os.environ[\"AZURE_LOG_ANALYTICS_WORKSPACE_ID\"],\n    query=query,\n    timespan=timedelta(hours=1)\n)\n\nfor table in response.tables:\n    for row in table.rows:\n        print(row)\n```\n\n### Query with Time Range\n\n```python\nfrom datetime import datetime, timezone\n\nresponse = client.query_workspace(\n    workspace_id=workspace_id,\n    query=\"AppRequests | take 10\",\n    timespan=(\n        datetime(2024, 1, 1, tzinfo=timezone.utc),\n        datetime(2024, 1, 2, tzinfo=timezone.utc)\n    )\n)\n```\n\n### Convert to DataFrame\n\n```python\nimport pandas as pd\n\nresponse = client.query_workspace(workspace_id, query, timespan=timedelta(hours=1))\n\nif response.tables:\n    table = response.tables[0]\n    df = pd.DataFrame(data=table.rows, columns=[col.name for col in table.columns])\n    print(df.head())\n```\n\n### Batch Query\n\n```python\nfrom azure.monitor.query import LogsBatchQuery\n\nqueries = [\n    LogsBatchQuery(workspace_id=workspace_id, query=\"AppRequests | take 5\", timespan=timedelta(hours=1)),\n    LogsBatchQuery(workspace_id=workspace_id, query=\"AppExceptions | take 5\", timespan=timedelta(hours=1))\n]\n\nresponses = client.query_batch(queries)\n\nfor response in responses:\n    if response.tables:\n        print(f\"Rows: {len(response.tables[0].rows)}\")\n```\n\n### Handle Partial Results\n\n```python\nfrom azure.monitor.query import LogsQueryStatus\n\nresponse = client.query_workspace(workspace_id, query, timespan=timedelta(hours=24))\n\nif response.status == LogsQueryStatus.PARTIAL:\n    print(f\"Partial results: {response.partial_error}\")\nelif response.status == LogsQueryStatus.FAILURE:\n    print(f\"Query failed: {response.partial_error}\")\n```\n\n## Metrics Query Client\n\n### Query Resource Metrics\n\n```python\nfrom azure.monitor.query import MetricsQueryClient\nfrom datetime import timedelta\n\nmetrics_client = MetricsQueryClient(credential)\n\nresponse = metrics_client.query_resource(\n    resource_uri=os.environ[\"AZURE_METRICS_RESOURCE_URI\"],\n    metric_names=[\"Percentage CPU\", \"Network In Total\"],\n    timespan=timedelta(hours=1),\n    granularity=timedelta(minutes=5)\n)\n\nfor metric in response.metrics:\n    print(f\"{metric.name}:\")\n    for time_series in metric.timeseries:\n        for data in time_series.data:\n            print(f\"  {data.timestamp}: {data.average}\")\n```\n\n### Aggregations\n\n```python\nfrom azure.monitor.query import MetricAggregationType\n\nresponse = metrics_client.query_resource(\n    resource_uri=resource_uri,\n    metric_names=[\"Requests\"],\n    timespan=timedelta(hours=1),\n    aggregations=[\n        MetricAggregationType.AVERAGE,\n        MetricAggregationType.MAXIMUM,\n        MetricAggregationType.MINIMUM,\n        MetricAggregationType.COUNT\n    ]\n)\n```\n\n### Filter by Dimension\n\n```python\nresponse = metrics_client.query_resource(\n    resource_uri=resource_uri,\n    metric_names=[\"Requests\"],\n    timespan=timedelta(hours=1),\n    filter=\"ApiName eq 'GetBlob'\"\n)\n```\n\n### List Metric Definitions\n\n```python\ndefinitions = metrics_client.list_metric_definitions(resource_uri)\nfor definition in definitions:\n    print(f\"{definition.name}: {definition.unit}\")\n```\n\n### List Metric Namespaces\n\n```python\nnamespaces = metrics_client.list_metric_namespaces(resource_uri)\nfor ns in namespaces:\n    print(ns.fully_qualified_namespace)\n```\n\n## Async Clients\n\n```python\nfrom azure.monitor.query.aio import LogsQueryClient, MetricsQueryClient\nfrom azure.identity.aio import DefaultAzureCredential\n\nasync def query_logs():\n    credential = DefaultAzureCredential()\n    client = LogsQueryClient(credential)\n    \n    response = await client.query_workspace(\n        workspace_id=workspace_id,\n        query=\"AppRequests | take 10\",\n        timespan=timedelta(hours=1)\n    )\n    \n    await client.close()\n    await credential.close()\n    return response\n```\n\n## Common Kusto Queries\n\n```kusto\n\u002F\u002F Requests by status code\nAppRequests\n| summarize count() by ResultCode\n| order by count_ desc\n\n\u002F\u002F Exceptions over time\nAppExceptions\n| summarize count() by bin(TimeGenerated, 1h)\n\n\u002F\u002F Slow requests\nAppRequests\n| where DurationMs > 1000\n| project TimeGenerated, Name, DurationMs\n| order by DurationMs desc\n\n\u002F\u002F Top errors\nAppExceptions\n| summarize count() by ExceptionType\n| top 10 by count_\n```\n\n## Client Types\n\n| Client | Purpose |\n|--------|---------|\n| `LogsQueryClient` | Query Log Analytics workspaces |\n| `MetricsQueryClient` | Query Azure Monitor metrics |\n\n## Best Practices\n\n1. **Use timedelta** for relative time ranges\n2. **Handle partial results** for large queries\n3. **Use batch queries** when running multiple queries\n4. **Set appropriate granularity** for metrics to reduce data points\n5. **Convert to DataFrame** for easier data analysis\n6. **Use aggregations** to summarize metric data\n7. **Filter by dimensions** to narrow metric results\n","# Azure Monitor Query SDK for Python\n\nQuery logs and metrics from Azure Monitor and Log Analytics workspaces.\n\n## Installation\n\n```bash\npip install azure-monitor-query\n```\n\n## Environment Variables\n\n```bash\n# Log Analytics\nAZURE_LOG_ANALYTICS_WORKSPACE_ID=\u003Cworkspace-id>\n\n# Metrics\nAZURE_METRICS_RESOURCE_URI=\u002Fsubscriptions\u002F\u003Csub>\u002FresourceGroups\u002F\u003Crg>\u002Fproviders\u002F\u003Cprovider>\u002F\u003Ctype>\u002F\u003Cname>\n```\n\n## Authentication\n\n```python\nfrom azure.identity import DefaultAzureCredential\n\ncredential = DefaultAzureCredential()\n```\n\n## Logs Query Client\n\n### Basic Query\n\n```python\nfrom azure.monitor.query import LogsQueryClient\nfrom datetime import timedelta\n\nclient = LogsQueryClient(credential)\n\nquery = \"\"\"\nAppRequests\n| where TimeGenerated > ago(1h)\n| summarize count() by bin(TimeGenerated, 5m), ResultCode\n| order by TimeGenerated desc\n\"\"\"\n\nresponse = client.query_workspace(\n    workspace_id=os.environ[\"AZURE_LOG_ANALYTICS_WORKSPACE_ID\"],\n    query=query,\n    timespan=timedelta(hours=1)\n)\n\nfor table in response.tables:\n    for row in table.rows:\n        print(row)\n```\n\n### Query with Time Range\n\n```python\nfrom datetime import datetime, timezone\n\nresponse = client.query_workspace(\n    workspace_id=workspace_id,\n    query=\"AppRequests | take 10\",\n    timespan=(\n        datetime(2024, 1, 1, tzinfo=timezone.utc),\n        datetime(2024, 1, 2, tzinfo=timezone.utc)\n    )\n)\n```\n\n### Convert to DataFrame\n\n```python\nimport pandas as pd\n\nresponse = client.query_workspace(workspace_id, query, timespan=timedelta(hours=1))\n\nif response.tables:\n    table = response.tables[0]\n    df = pd.DataFrame(data=table.rows, columns=[col.name for col in table.columns])\n    print(df.head())\n```\n\n### Batch Query\n\n```python\nfrom azure.monitor.query import LogsBatchQuery\n\nqueries = [\n    LogsBatchQuery(workspace_id=workspace_id, query=\"AppRequests | take 5\", timespan=timedelta(hours=1)),\n    LogsBatchQuery(workspace_id=workspace_id, query=\"AppExceptions | take 5\", timespan=timedelta(hours=1))\n]\n\nresponses = client.query_batch(queries)\n\nfor response in responses:\n    if response.tables:\n        print(f\"Rows: {len(response.tables[0].rows)}\")\n```\n\n### Handle Partial Results\n\n```python\nfrom azure.monitor.query import LogsQueryStatus\n\nresponse = client.query_workspace(workspace_id, query, timespan=timedelta(hours=24))\n\nif response.status == LogsQueryStatus.PARTIAL:\n    print(f\"Partial results: {response.partial_error}\")\nelif response.status == LogsQueryStatus.FAILURE:\n    print(f\"Query failed: {response.partial_error}\")\n```\n\n## Metrics Query Client\n\n### Query Resource Metrics\n\n```python\nfrom azure.monitor.query import MetricsQueryClient\nfrom datetime import timedelta\n\nmetrics_client = MetricsQueryClient(credential)\n\nresponse = metrics_client.query_resource(\n    resource_uri=os.environ[\"AZURE_METRICS_RESOURCE_URI\"],\n    metric_names=[\"Percentage CPU\", \"Network In Total\"],\n    timespan=timedelta(hours=1),\n    granularity=timedelta(minutes=5)\n)\n\nfor metric in response.metrics:\n    print(f\"{metric.name}:\")\n    for time_series in metric.timeseries:\n        for data in time_series.data:\n            print(f\"  {data.timestamp}: {data.average}\")\n```\n\n### Aggregations\n\n```python\nfrom azure.monitor.query import MetricAggregationType\n\nresponse = metrics_client.query_resource(\n    resource_uri=resource_uri,\n    metric_names=[\"Requests\"],\n    timespan=timedelta(hours=1),\n    aggregations=[\n        MetricAggregationType.AVERAGE,\n        MetricAggregationType.MAXIMUM,\n        MetricAggregationType.MINIMUM,\n        MetricAggregationType.COUNT\n    ]\n)\n```\n\n### Filter by Dimension\n\n```python\nresponse = metrics_client.query_resource(\n    resource_uri=resource_uri,\n    metric_names=[\"Requests\"],\n    timespan=timedelta(hours=1),\n    filter=\"ApiName eq 'GetBlob'\"\n)\n```\n\n### List Metric Definitions\n\n```python\ndefinitions = metrics_client.list_metric_definitions(resource_uri)\nfor definition in definitions:\n    print(f\"{definition.name}: {definition.unit}\")\n```\n\n### List Metric Namespaces\n\n```python\nnamespaces = metrics_client.list_metric_namespaces(resource_uri)\nfor ns in namespaces:\n    print(ns.fully_qualified_namespace)\n```\n\n## Async Clients\n\n```python\nfrom azure.monitor.query.aio import LogsQueryClient, MetricsQueryClient\nfrom azure.identity.aio import DefaultAzureCredential\n\nasync def query_logs():\n    credential = DefaultAzureCredential()\n    client = LogsQueryClient(credential)\n    \n    response = await client.query_workspace(\n        workspace_id=workspace_id,\n        query=\"AppRequests | take 10\",\n        timespan=timedelta(hours=1)\n    )\n    \n    await client.close()\n    await credential.close()\n    return response\n```\n\n## Common Kusto Queries\n\n```kusto\n\u002F\u002F Requests by status code\nAppRequests\n| summarize count() by ResultCode\n| order by count_ desc\n\n\u002F\u002F Exceptions over time\nAppExceptions\n| summarize count() by bin(TimeGenerated, 1h)\n\n\u002F\u002F Slow requests\nAppRequests\n| where DurationMs > 1000\n| project TimeGenerated, Name, DurationMs\n| order by DurationMs desc\n\n\u002F\u002F Top errors\nAppExceptions\n| summarize count() by ExceptionType\n| top 10 by count_\n```\n\n## Client Types\n\n| Client | Purpose |\n|--------|---------|\n| `LogsQueryClient` | Query Log Analytics workspaces |\n| `MetricsQueryClient` | Query Azure Monitor metrics |\n\n## Best Practices\n\n1. **Use timedelta** for relative time ranges\n2. **Handle partial results** for large queries\n3. **Use batch queries** when running multiple queries\n4. **Set appropriate granularity** for metrics to reduce data points\n5. **Convert to DataFrame** for easier data analysis\n6. **Use aggregations** to summarize metric data\n7. **Filter by dimensions** to narrow metric results\n",{"name":5,"package":39,"description":40},"azure-monitor-query","Azure Monitor Query SDK for Python. Use for querying Log Analytics workspaces and Azure Monitor metrics.\nTriggers: \"azure-monitor-query\", \"LogsQueryClient\", \"MetricsQueryClient\", \"Log Analytics\", \"Kusto queries\", \"Azure metrics\".\n","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-monitor-query-py",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill azure-monitor-query-py",{"tool":56,"command":57},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill azure-monitor-query-py",{"tool":59,"command":60},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill azure-monitor-query-py","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-monitor-query-py\u002FSKILL.md",true,[64],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},"skill-report.json","REFERENCE","参考文档",8676,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fsickn33\u002Fazure-monitor-query-py\u002Fskill-report.json",[71,85,95,103,109,116],{"skillNo":72,"name":73,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":81,"publishedAt":34},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[76],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[82,83,84],"model","model hierarchy","model hierarchy skill",{"skillNo":86,"name":87,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":88,"categories":89,"keywords":91,"publishedAt":34},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[90],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},[92,93,94],"MCP","zoom","zoom mcp",{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":34},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[25,101,102,93],"zoom apps sdk","apps",{"skillNo":104,"name":105,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":34},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[105],{"skillNo":110,"name":111,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":34},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[114],{"categoryNo":77,"categoryName":78,"taxonomyType":79,"taxonomyTypeDesc":80},[111],{"skillNo":117,"name":118,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":34},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[118]]