Reputation: 2299
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:
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