user3437721
user3437721

Reputation: 2299

Azure function Open Telemetry

I currently have an Azure APIM which uses the event-metric policy to send custom metrics to application insights:

<emit-metric name="appid-info" namespace="app-stats">
    <dimension name="api-name" value="@(context.Api.Name)" />
    <dimension name="app-id" value="@(context.Variables.GetValueOrDefault<string>("appid"))" />
</emit-metric>

This is just a small sample.

I am starting to using a function app which is called from the APIM, and I want to emit the same metrics in the python function app as I do in the APIM:

https://learn.microsoft.com/en-us/python/api/overview/azure/monitor-opentelemetry-exporter-readme?view=azure-python-preview#metric-instrument-usage

I start by using the import:

from azure.monitor.opentelemetry.exporter import AzureMonitorLogExporter

Then I created a function which can be called:

def log_to_app_insights():
    """Log data to Azure Application Insights"""
    try:
        exporter = AzureMonitorMetricExporter(
        connection_string=os.environ["APPLICATIONINSIGHTS_CONNECTION_STRING"]
    )

    except Exception as e:
        logging.error(f"Failed to log to Application Insights: {str(e)}")

Note that I have set the connection string as an env variable on the function.

What do I need to do next - I want to be able to call this function at the end of the function execution (preferably async).

But the MS example above mentioned Periodic Readers and timers etc. I just want to emit the custom metrics to my namespace from the function so they appear as the same way as the emit-metrics.

Is this possible?

Upvotes: 0

Views: 35

Answers (0)

Related Questions