Api Diagnostic Args
Manages a API Management Service API Diagnostics Logs.
Example Usage
import * as pulumi from "@pulumi/pulumi";
import * as azure from "@pulumi/azure";
const example = new azure.core.ResourceGroup("example", {
name: "example-resources",
location: "West Europe",
});
const exampleInsights = new azure.appinsights.Insights("example", {
name: "example-appinsights",
location: example.location,
resourceGroupName: example.name,
applicationType: "web",
});
const exampleService = new azure.apimanagement.Service("example", {
name: "example-apim",
location: example.location,
resourceGroupName: example.name,
publisherName: "My Company",
publisherEmail: "company@mycompany.io",
skuName: "Developer_1",
});
const exampleApi = new azure.apimanagement.Api("example", {
name: "example-api",
resourceGroupName: example.name,
apiManagementName: exampleService.name,
revision: "1",
displayName: "Example API",
path: "example",
protocols: ["https"],
"import": {
contentFormat: "swagger-link-json",
contentValue: "https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/refs/heads/main/internal/services/apimanagement/testdata/api_management_api_swagger.json",
},
});
const exampleLogger = new azure.apimanagement.Logger("example", {
name: "example-apimlogger",
apiManagementName: exampleService.name,
resourceGroupName: example.name,
applicationInsights: {
instrumentationKey: exampleInsights.instrumentationKey,
},
});
const exampleApiDiagnostic = new azure.apimanagement.ApiDiagnostic("example", {
identifier: "applicationinsights",
resourceGroupName: example.name,
apiManagementName: exampleService.name,
apiName: exampleApi.name,
apiManagementLoggerId: exampleLogger.id,
samplingPercentage: 5,
alwaysLogErrors: true,
logClientIp: true,
verbosity: "verbose",
httpCorrelationProtocol: "W3C",
frontendRequest: {
bodyBytes: 32,
headersToLogs: [
"content-type",
"accept",
"origin",
],
},
frontendResponse: {
bodyBytes: 32,
headersToLogs: [
"content-type",
"content-length",
"origin",
],
},
backendRequest: {
bodyBytes: 32,
headersToLogs: [
"content-type",
"accept",
"origin",
],
},
backendResponse: {
bodyBytes: 32,
headersToLogs: [
"content-type",
"content-length",
"origin",
],
},
});
import pulumi
import pulumi_azure as azure
example = azure.core.ResourceGroup("example",
name="example-resources",
location="West Europe")
example_insights = azure.appinsights.Insights("example",
name="example-appinsights",
location=example.location,
resource_group_name=example.name,
application_type="web")
example_service = azure.apimanagement.Service("example",
name="example-apim",
location=example.location,
resource_group_name=example.name,
publisher_name="My Company",
publisher_email="company@mycompany.io",
sku_name="Developer_1")
example_api = azure.apimanagement.Api("example",
name="example-api",
resource_group_name=example.name,
api_management_name=example_service.name,
revision="1",
display_name="Example API",
path="example",
protocols=["https"],
import_={
"content_format": "swagger-link-json",
"content_value": "https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/refs/heads/main/internal/services/apimanagement/testdata/api_management_api_swagger.json",
})
example_logger = azure.apimanagement.Logger("example",
name="example-apimlogger",
api_management_name=example_service.name,
resource_group_name=example.name,
application_insights={
"instrumentation_key": example_insights.instrumentation_key,
})
example_api_diagnostic = azure.apimanagement.ApiDiagnostic("example",
identifier="applicationinsights",
resource_group_name=example.name,
api_management_name=example_service.name,
api_name=example_api.name,
api_management_logger_id=example_logger.id,
sampling_percentage=5,
always_log_errors=True,
log_client_ip=True,
verbosity="verbose",
http_correlation_protocol="W3C",
frontend_request={
"body_bytes": 32,
"headers_to_logs": [
"content-type",
"accept",
"origin",
],
},
frontend_response={
"body_bytes": 32,
"headers_to_logs": [
"content-type",
"content-length",
"origin",
],
},
backend_request={
"body_bytes": 32,
"headers_to_logs": [
"content-type",
"accept",
"origin",
],
},
backend_response={
"body_bytes": 32,
"headers_to_logs": [
"content-type",
"content-length",
"origin",
],
})
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Azure = Pulumi.Azure;
return await Deployment.RunAsync(() =>
{
var example = new Azure.Core.ResourceGroup("example", new()
{
Name = "example-resources",
Location = "West Europe",
});
var exampleInsights = new Azure.AppInsights.Insights("example", new()
{
Name = "example-appinsights",
Location = example.Location,
ResourceGroupName = example.Name,
ApplicationType = "web",
});
var exampleService = new Azure.ApiManagement.Service("example", new()
{
Name = "example-apim",
Location = example.Location,
ResourceGroupName = example.Name,
PublisherName = "My Company",
PublisherEmail = "company@mycompany.io",
SkuName = "Developer_1",
});
var exampleApi = new Azure.ApiManagement.Api("example", new()
{
Name = "example-api",
ResourceGroupName = example.Name,
ApiManagementName = exampleService.Name,
Revision = "1",
DisplayName = "Example API",
Path = "example",
Protocols = new[]
{
"https",
},
Import = new Azure.ApiManagement.Inputs.ApiImportArgs
{
ContentFormat = "swagger-link-json",
ContentValue = "https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/refs/heads/main/internal/services/apimanagement/testdata/api_management_api_swagger.json",
},
});
var exampleLogger = new Azure.ApiManagement.Logger("example", new()
{
Name = "example-apimlogger",
ApiManagementName = exampleService.Name,
ResourceGroupName = example.Name,
ApplicationInsights = new Azure.ApiManagement.Inputs.LoggerApplicationInsightsArgs
{
InstrumentationKey = exampleInsights.InstrumentationKey,
},
});
var exampleApiDiagnostic = new Azure.ApiManagement.ApiDiagnostic("example", new()
{
Identifier = "applicationinsights",
ResourceGroupName = example.Name,
ApiManagementName = exampleService.Name,
ApiName = exampleApi.Name,
ApiManagementLoggerId = exampleLogger.Id,
SamplingPercentage = 5,
AlwaysLogErrors = true,
LogClientIp = true,
Verbosity = "verbose",
HttpCorrelationProtocol = "W3C",
FrontendRequest = new Azure.ApiManagement.Inputs.ApiDiagnosticFrontendRequestArgs
{
BodyBytes = 32,
HeadersToLogs = new[]
{
"content-type",
"accept",
"origin",
},
},
FrontendResponse = new Azure.ApiManagement.Inputs.ApiDiagnosticFrontendResponseArgs
{
BodyBytes = 32,
HeadersToLogs = new[]
{
"content-type",
"content-length",
"origin",
},
},
BackendRequest = new Azure.ApiManagement.Inputs.ApiDiagnosticBackendRequestArgs
{
BodyBytes = 32,
HeadersToLogs = new[]
{
"content-type",
"accept",
"origin",
},
},
BackendResponse = new Azure.ApiManagement.Inputs.ApiDiagnosticBackendResponseArgs
{
BodyBytes = 32,
HeadersToLogs = new[]
{
"content-type",
"content-length",
"origin",
},
},
});
});
package main
import (
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/apimanagement"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/appinsights"
"github.com/pulumi/pulumi-azure/sdk/v6/go/azure/core"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := core.NewResourceGroup(ctx, "example", &core.ResourceGroupArgs{
Name: pulumi.String("example-resources"),
Location: pulumi.String("West Europe"),
})
if err != nil {
return err
}
exampleInsights, err := appinsights.NewInsights(ctx, "example", &appinsights.InsightsArgs{
Name: pulumi.String("example-appinsights"),
Location: example.Location,
ResourceGroupName: example.Name,
ApplicationType: pulumi.String("web"),
})
if err != nil {
return err
}
exampleService, err := apimanagement.NewService(ctx, "example", &apimanagement.ServiceArgs{
Name: pulumi.String("example-apim"),
Location: example.Location,
ResourceGroupName: example.Name,
PublisherName: pulumi.String("My Company"),
PublisherEmail: pulumi.String("company@mycompany.io"),
SkuName: pulumi.String("Developer_1"),
})
if err != nil {
return err
}
exampleApi, err := apimanagement.NewApi(ctx, "example", &apimanagement.ApiArgs{
Name: pulumi.String("example-api"),
ResourceGroupName: example.Name,
ApiManagementName: exampleService.Name,
Revision: pulumi.String("1"),
DisplayName: pulumi.String("Example API"),
Path: pulumi.String("example"),
Protocols: pulumi.StringArray{
pulumi.String("https"),
},
Import: &apimanagement.ApiImportArgs{
ContentFormat: pulumi.String("swagger-link-json"),
ContentValue: pulumi.String("https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/refs/heads/main/internal/services/apimanagement/testdata/api_management_api_swagger.json"),
},
})
if err != nil {
return err
}
exampleLogger, err := apimanagement.NewLogger(ctx, "example", &apimanagement.LoggerArgs{
Name: pulumi.String("example-apimlogger"),
ApiManagementName: exampleService.Name,
ResourceGroupName: example.Name,
ApplicationInsights: &apimanagement.LoggerApplicationInsightsArgs{
InstrumentationKey: exampleInsights.InstrumentationKey,
},
})
if err != nil {
return err
}
_, err = apimanagement.NewApiDiagnostic(ctx, "example", &apimanagement.ApiDiagnosticArgs{
Identifier: pulumi.String("applicationinsights"),
ResourceGroupName: example.Name,
ApiManagementName: exampleService.Name,
ApiName: exampleApi.Name,
ApiManagementLoggerId: exampleLogger.ID(),
SamplingPercentage: pulumi.Float64(5),
AlwaysLogErrors: pulumi.Bool(true),
LogClientIp: pulumi.Bool(true),
Verbosity: pulumi.String("verbose"),
HttpCorrelationProtocol: pulumi.String("W3C"),
FrontendRequest: &apimanagement.ApiDiagnosticFrontendRequestArgs{
BodyBytes: pulumi.Int(32),
HeadersToLogs: pulumi.StringArray{
pulumi.String("content-type"),
pulumi.String("accept"),
pulumi.String("origin"),
},
},
FrontendResponse: &apimanagement.ApiDiagnosticFrontendResponseArgs{
BodyBytes: pulumi.Int(32),
HeadersToLogs: pulumi.StringArray{
pulumi.String("content-type"),
pulumi.String("content-length"),
pulumi.String("origin"),
},
},
BackendRequest: &apimanagement.ApiDiagnosticBackendRequestArgs{
BodyBytes: pulumi.Int(32),
HeadersToLogs: pulumi.StringArray{
pulumi.String("content-type"),
pulumi.String("accept"),
pulumi.String("origin"),
},
},
BackendResponse: &apimanagement.ApiDiagnosticBackendResponseArgs{
BodyBytes: pulumi.Int(32),
HeadersToLogs: pulumi.StringArray{
pulumi.String("content-type"),
pulumi.String("content-length"),
pulumi.String("origin"),
},
},
})
if err != nil {
return err
}
return nil
})
}
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azure.core.ResourceGroup;
import com.pulumi.azure.core.ResourceGroupArgs;
import com.pulumi.azure.appinsights.Insights;
import com.pulumi.azure.appinsights.InsightsArgs;
import com.pulumi.azure.apimanagement.Service;
import com.pulumi.azure.apimanagement.ServiceArgs;
import com.pulumi.azure.apimanagement.Api;
import com.pulumi.azure.apimanagement.ApiArgs;
import com.pulumi.azure.apimanagement.inputs.ApiImportArgs;
import com.pulumi.azure.apimanagement.Logger;
import com.pulumi.azure.apimanagement.LoggerArgs;
import com.pulumi.azure.apimanagement.inputs.LoggerApplicationInsightsArgs;
import com.pulumi.azure.apimanagement.ApiDiagnostic;
import com.pulumi.azure.apimanagement.ApiDiagnosticArgs;
import com.pulumi.azure.apimanagement.inputs.ApiDiagnosticFrontendRequestArgs;
import com.pulumi.azure.apimanagement.inputs.ApiDiagnosticFrontendResponseArgs;
import com.pulumi.azure.apimanagement.inputs.ApiDiagnosticBackendRequestArgs;
import com.pulumi.azure.apimanagement.inputs.ApiDiagnosticBackendResponseArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new ResourceGroup("example", ResourceGroupArgs.builder()
.name("example-resources")
.location("West Europe")
.build());
var exampleInsights = new Insights("exampleInsights", InsightsArgs.builder()
.name("example-appinsights")
.location(example.location())
.resourceGroupName(example.name())
.applicationType("web")
.build());
var exampleService = new Service("exampleService", ServiceArgs.builder()
.name("example-apim")
.location(example.location())
.resourceGroupName(example.name())
.publisherName("My Company")
.publisherEmail("company@mycompany.io")
.skuName("Developer_1")
.build());
var exampleApi = new Api("exampleApi", ApiArgs.builder()
.name("example-api")
.resourceGroupName(example.name())
.apiManagementName(exampleService.name())
.revision("1")
.displayName("Example API")
.path("example")
.protocols("https")
.import_(ApiImportArgs.builder()
.contentFormat("swagger-link-json")
.contentValue("https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/refs/heads/main/internal/services/apimanagement/testdata/api_management_api_swagger.json")
.build())
.build());
var exampleLogger = new Logger("exampleLogger", LoggerArgs.builder()
.name("example-apimlogger")
.apiManagementName(exampleService.name())
.resourceGroupName(example.name())
.applicationInsights(LoggerApplicationInsightsArgs.builder()
.instrumentationKey(exampleInsights.instrumentationKey())
.build())
.build());
var exampleApiDiagnostic = new ApiDiagnostic("exampleApiDiagnostic", ApiDiagnosticArgs.builder()
.identifier("applicationinsights")
.resourceGroupName(example.name())
.apiManagementName(exampleService.name())
.apiName(exampleApi.name())
.apiManagementLoggerId(exampleLogger.id())
.samplingPercentage(5)
.alwaysLogErrors(true)
.logClientIp(true)
.verbosity("verbose")
.httpCorrelationProtocol("W3C")
.frontendRequest(ApiDiagnosticFrontendRequestArgs.builder()
.bodyBytes(32)
.headersToLogs(
"content-type",
"accept",
"origin")
.build())
.frontendResponse(ApiDiagnosticFrontendResponseArgs.builder()
.bodyBytes(32)
.headersToLogs(
"content-type",
"content-length",
"origin")
.build())
.backendRequest(ApiDiagnosticBackendRequestArgs.builder()
.bodyBytes(32)
.headersToLogs(
"content-type",
"accept",
"origin")
.build())
.backendResponse(ApiDiagnosticBackendResponseArgs.builder()
.bodyBytes(32)
.headersToLogs(
"content-type",
"content-length",
"origin")
.build())
.build());
}
}
resources:
example:
type: azure:core:ResourceGroup
properties:
name: example-resources
location: West Europe
exampleInsights:
type: azure:appinsights:Insights
name: example
properties:
name: example-appinsights
location: ${example.location}
resourceGroupName: ${example.name}
applicationType: web
exampleService:
type: azure:apimanagement:Service
name: example
properties:
name: example-apim
location: ${example.location}
resourceGroupName: ${example.name}
publisherName: My Company
publisherEmail: company@mycompany.io
skuName: Developer_1
exampleApi:
type: azure:apimanagement:Api
name: example
properties:
name: example-api
resourceGroupName: ${example.name}
apiManagementName: ${exampleService.name}
revision: '1'
displayName: Example API
path: example
protocols:
- https
import:
contentFormat: swagger-link-json
contentValue: https://raw.githubusercontent.com/hashicorp/terraform-provider-azurerm/refs/heads/main/internal/services/apimanagement/testdata/api_management_api_swagger.json
exampleLogger:
type: azure:apimanagement:Logger
name: example
properties:
name: example-apimlogger
apiManagementName: ${exampleService.name}
resourceGroupName: ${example.name}
applicationInsights:
instrumentationKey: ${exampleInsights.instrumentationKey}
exampleApiDiagnostic:
type: azure:apimanagement:ApiDiagnostic
name: example
properties:
identifier: applicationinsights
resourceGroupName: ${example.name}
apiManagementName: ${exampleService.name}
apiName: ${exampleApi.name}
apiManagementLoggerId: ${exampleLogger.id}
samplingPercentage: 5
alwaysLogErrors: true
logClientIp: true
verbosity: verbose
httpCorrelationProtocol: W3C
frontendRequest:
bodyBytes: 32
headersToLogs:
- content-type
- accept
- origin
frontendResponse:
bodyBytes: 32
headersToLogs:
- content-type
- content-length
- origin
backendRequest:
bodyBytes: 32
headersToLogs:
- content-type
- accept
- origin
backendResponse:
bodyBytes: 32
headersToLogs:
- content-type
- content-length
- origin
Import
API Management Service API Diagnostics Logs can be imported using the resource id
, e.g.
$ pulumi import azure:apimanagement/apiDiagnostic:ApiDiagnostic example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/group1/providers/Microsoft.ApiManagement/service/instance1/apis/api1/diagnostics/diagnostic1
Constructors
Properties
Always log errors. Send telemetry if there is an erroneous condition, regardless of sampling settings.
The ID (name) of the Diagnostics Logger.
The name of the API Management Service instance. Changing this forces a new API Management Service API Diagnostics Logs to be created.
A backend_request
block as defined below.
A backend_response
block as defined below.
A frontend_request
block as defined below.
A frontend_response
block as defined below.
The HTTP Correlation Protocol to use. Possible values are None
, Legacy
or W3C
.
Identifier of the Diagnostics Logs. Possible values are applicationinsights
and azuremonitor
. Changing this forces a new API Management Service API Diagnostics Logs to be created.
Log client IP address.
The format of the Operation Name for Application Insights telemetries. Possible values are Name
, and Url
. Defaults to Name
.
The name of the Resource Group where the API Management Service API Diagnostics Logs should exist. Changing this forces a new API Management Service API Diagnostics Logs to be created.
Sampling (%). For high traffic APIs, please read this documentation to understand performance implications and log sampling. Valid values are between 0.0
and 100.0
.