azure-monitor-opentelemetry-py – skill DevOps & Hạ tầng cho agent AI
Azure Monitor OpenTelemetry Distro cho Python. Dùng để thiết lập Application Insights chỉ với một dòng, có auto-instrumentation.
Cài skill azure-monitor-opentelemetry-py bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-monitor-opentelemetry-py-6e882.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /azure-monitor-opentelemetry-py – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-monitor-opentelemetry-py-6e882.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $azure-monitor-opentelemetry-py – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-monitor-opentelemetry-py-6e882.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /azure-monitor-opentelemetry-py – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/azure-monitor-opentelemetry-py-6e882.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /azure-monitor-opentelemetry-py – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Azure Monitor OpenTelemetry Distro for Python
One-line setup for Application Insights with OpenTelemetry auto-instrumentation.
Installation
pip install azure-monitor-opentelemetryEnvironment Variables
APPLICATIONINSIGHTS_CONNECTION_STRING=InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/Quick Start
from azure.monitor.opentelemetry import configure_azure_monitor
# One-line setup - reads connection string from environment
configure_azure_monitor()
# Your application code...Explicit Configuration
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor(
connection_string="InstrumentationKey=xxx;IngestionEndpoint=https://xxx.in.applicationinsights.azure.com/"
)With Flask
from flask import Flask
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello, World!"
if __name__ == "__main__":
app.run()With Django
# settings.py
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
# Django settings...With FastAPI
from fastapi import FastAPI
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}Custom Traces
from opentelemetry import trace
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("my-operation") as span:
span.set_attribute("custom.attribute", "value")
# Do work...Custom Metrics
from opentelemetry import metrics
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
meter = metrics.get_meter(__name__)
counter = meter.create_counter("my_counter")
counter.add(1, {"dimension": "value"})Custom Logs
import logging
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor()
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.info("This will appear in Application Insights")
logger.error("Errors are captured too", exc_info=True)Sampling
from azure.monitor.opentelemetry import configure_azure_monitor
# Sample 10% of requests
configure_azure_monitor(
sampling_ratio=0.1
)Cloud Role Name
Set cloud role name for Application Map:
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry.sdk.resources import Resource, SERVICE_NAME
configure_azure_monitor(
resource=Resource.create({SERVICE_NAME: "my-service-name"})
)Disable Specific Instrumentations
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor(
instrumentation_options={"flask": {"enabled": False}} # Disable Flask; others keep defaults
)Enable Live Metrics
from azure.monitor.opentelemetry import configure_azure_monitor
configure_azure_monitor(
enable_live_metrics=True
)Azure AD Authentication
from azure.monitor.opentelemetry import configure_azure_monitor
from azure.identity import DefaultAzureCredential
configure_azure_monitor(
credential=DefaultAzureCredential()
)Configure once per process. Pin and inspect the installed distro: supported libraries and defaults change, and Azure Monitor versus Microsoft OpenTelemetry distros use different APIs. Do not initialize both. [Azure SDK reference](https://github.com/Azure/azure-sdk-for-python/blob/main/sdk/monitor/azure-monitor-opentelemetry/README.md) documents instrumentation_options; confirm optional instrumentations/dependencies rather than assuming every library below is included. Telemetry leaves the process: authorize its destination/retention, redact secrets and personal data from logs/spans, limit cardinality and ingestion cost, and verify export using synthetic data. Trace sampling does not imply metrics or all logs are sampled.
Auto-Instrumentations Included
| Library | Telemetry Type |
|---------|---------------|
| Flask | Traces |
| Django | Traces |
| FastAPI | Traces |
| Requests | Traces |
| urllib3 | Traces |
| httpx | Traces |
| aiohttp | Traces |
| psycopg2 | Traces |
| pymysql | Traces |
| pymongo | Traces |
| redis | Traces |
Configuration Options
| Parameter | Description | Default |
|-----------|-------------|---------|
| connection_string | Application Insights connection string | From env var |
| credential | Azure credential for AAD auth | None |
| sampling_ratio | Explicit trace sampling fraction | Version-dependent; inspect sampler/environment |
| resource | OpenTelemetry Resource | Auto-detected |
| instrumentation_options | Per-library enabled dictionary | Version-dependent defaults |
| enable_live_metrics | Enable Live Metrics stream | Version-dependent; set explicitly |
Best Practices
1. Call configure_azure_monitor() early — Before importing instrumented libraries
2. Use environment variables for connection string in production
3. Set cloud role name for multi-service applications
4. Enable sampling in high-traffic applications
5. Use structured logging for better log analytics queries
6. Add custom attributes to spans for better debugging
7. Use AAD authentication for production workloads
When to Use
This skill is applicable to execute the workflow or actions described in the overview.
Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Skill liên quan
- azure-monitor-opentelemetry-ts – Tự động instrument ứng dụng Node.js với distributed tracing, metrics và logs.
- azure-monitor-query-java – SDK Azure Monitor Query cho Java. Thực thi truy vấn Kusto trên Log Analytics workspace…
- azure-monitor-query-py – SDK Azure Monitor Query cho Python. Dùng để truy vấn Log Analytics workspace và metric…
- azure-networking – Cấu hình Azure VNet, NSG và Azure Firewall. Triển khai mô hình hub-spoke và private…
- azure-resource-manager-cosmosdb-dotnet – SDK Azure Resource Manager cho Cosmos DB trên .NET.
- azure-resource-manager-durabletask-dotnet – SDK Azure Resource Manager cho Durable Task Scheduler trên .NET.
- azure-resource-manager-mysql-dotnet – SDK Azure MySQL Flexible Server cho .NET. Quản lý cơ sở dữ liệu cho các triển khai MySQL…
- azure-resource-manager-playwright-dotnet – SDK Azure Resource Manager cho Microsoft Playwright Testing trên .NET.