DiagnosticArgs

data class DiagnosticArgs(val alwaysLogErrors: Output<Boolean>? = null, val apiManagementLoggerId: Output<String>? = null, val apiManagementName: Output<String>? = null, val backendRequest: Output<DiagnosticBackendRequestArgs>? = null, val backendResponse: Output<DiagnosticBackendResponseArgs>? = null, val frontendRequest: Output<DiagnosticFrontendRequestArgs>? = null, val frontendResponse: Output<DiagnosticFrontendResponseArgs>? = null, val httpCorrelationProtocol: Output<String>? = null, val identifier: Output<String>? = null, val logClientIp: Output<Boolean>? = null, val operationNameFormat: Output<String>? = null, val resourceGroupName: Output<String>? = null, val samplingPercentage: Output<Double>? = null, val verbosity: Output<String>? = null) : ConvertibleToJava<DiagnosticArgs>

Manages an API Management Service Diagnostic.

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 exampleLogger = new azure.apimanagement.Logger("example", {
name: "example-apimlogger",
apiManagementName: exampleService.name,
resourceGroupName: example.name,
applicationInsights: {
instrumentationKey: exampleInsights.instrumentationKey,
},
});
const exampleDiagnostic = new azure.apimanagement.Diagnostic("example", {
identifier: "applicationinsights",
resourceGroupName: example.name,
apiManagementName: exampleService.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_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_diagnostic = azure.apimanagement.Diagnostic("example",
identifier="applicationinsights",
resource_group_name=example.name,
api_management_name=example_service.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 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 exampleDiagnostic = new Azure.ApiManagement.Diagnostic("example", new()
{
Identifier = "applicationinsights",
ResourceGroupName = example.Name,
ApiManagementName = exampleService.Name,
ApiManagementLoggerId = exampleLogger.Id,
SamplingPercentage = 5,
AlwaysLogErrors = true,
LogClientIp = true,
Verbosity = "verbose",
HttpCorrelationProtocol = "W3C",
FrontendRequest = new Azure.ApiManagement.Inputs.DiagnosticFrontendRequestArgs
{
BodyBytes = 32,
HeadersToLogs = new[]
{
"content-type",
"accept",
"origin",
},
},
FrontendResponse = new Azure.ApiManagement.Inputs.DiagnosticFrontendResponseArgs
{
BodyBytes = 32,
HeadersToLogs = new[]
{
"content-type",
"content-length",
"origin",
},
},
BackendRequest = new Azure.ApiManagement.Inputs.DiagnosticBackendRequestArgs
{
BodyBytes = 32,
HeadersToLogs = new[]
{
"content-type",
"accept",
"origin",
},
},
BackendResponse = new Azure.ApiManagement.Inputs.DiagnosticBackendResponseArgs
{
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
}
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.NewDiagnostic(ctx, "example", &apimanagement.DiagnosticArgs{
Identifier: pulumi.String("applicationinsights"),
ResourceGroupName: example.Name,
ApiManagementName: exampleService.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.DiagnosticFrontendRequestArgs{
BodyBytes: pulumi.Int(32),
HeadersToLogs: pulumi.StringArray{
pulumi.String("content-type"),
pulumi.String("accept"),
pulumi.String("origin"),
},
},
FrontendResponse: &apimanagement.DiagnosticFrontendResponseArgs{
BodyBytes: pulumi.Int(32),
HeadersToLogs: pulumi.StringArray{
pulumi.String("content-type"),
pulumi.String("content-length"),
pulumi.String("origin"),
},
},
BackendRequest: &apimanagement.DiagnosticBackendRequestArgs{
BodyBytes: pulumi.Int(32),
HeadersToLogs: pulumi.StringArray{
pulumi.String("content-type"),
pulumi.String("accept"),
pulumi.String("origin"),
},
},
BackendResponse: &apimanagement.DiagnosticBackendResponseArgs{
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.Logger;
import com.pulumi.azure.apimanagement.LoggerArgs;
import com.pulumi.azure.apimanagement.inputs.LoggerApplicationInsightsArgs;
import com.pulumi.azure.apimanagement.Diagnostic;
import com.pulumi.azure.apimanagement.DiagnosticArgs;
import com.pulumi.azure.apimanagement.inputs.DiagnosticFrontendRequestArgs;
import com.pulumi.azure.apimanagement.inputs.DiagnosticFrontendResponseArgs;
import com.pulumi.azure.apimanagement.inputs.DiagnosticBackendRequestArgs;
import com.pulumi.azure.apimanagement.inputs.DiagnosticBackendResponseArgs;
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 exampleLogger = new Logger("exampleLogger", LoggerArgs.builder()
.name("example-apimlogger")
.apiManagementName(exampleService.name())
.resourceGroupName(example.name())
.applicationInsights(LoggerApplicationInsightsArgs.builder()
.instrumentationKey(exampleInsights.instrumentationKey())
.build())
.build());
var exampleDiagnostic = new Diagnostic("exampleDiagnostic", DiagnosticArgs.builder()
.identifier("applicationinsights")
.resourceGroupName(example.name())
.apiManagementName(exampleService.name())
.apiManagementLoggerId(exampleLogger.id())
.samplingPercentage(5)
.alwaysLogErrors(true)
.logClientIp(true)
.verbosity("verbose")
.httpCorrelationProtocol("W3C")
.frontendRequest(DiagnosticFrontendRequestArgs.builder()
.bodyBytes(32)
.headersToLogs(
"content-type",
"accept",
"origin")
.build())
.frontendResponse(DiagnosticFrontendResponseArgs.builder()
.bodyBytes(32)
.headersToLogs(
"content-type",
"content-length",
"origin")
.build())
.backendRequest(DiagnosticBackendRequestArgs.builder()
.bodyBytes(32)
.headersToLogs(
"content-type",
"accept",
"origin")
.build())
.backendResponse(DiagnosticBackendResponseArgs.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
exampleLogger:
type: azure:apimanagement:Logger
name: example
properties:
name: example-apimlogger
apiManagementName: ${exampleService.name}
resourceGroupName: ${example.name}
applicationInsights:
instrumentationKey: ${exampleInsights.instrumentationKey}
exampleDiagnostic:
type: azure:apimanagement:Diagnostic
name: example
properties:
identifier: applicationinsights
resourceGroupName: ${example.name}
apiManagementName: ${exampleService.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 Diagnostics can be imported using the resource id, e.g.

$ pulumi import azure:apimanagement/diagnostic:Diagnostic example /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mygroup1/providers/Microsoft.ApiManagement/service/instance1/diagnostics/applicationinsights

Constructors

Link copied to clipboard
constructor(alwaysLogErrors: Output<Boolean>? = null, apiManagementLoggerId: Output<String>? = null, apiManagementName: Output<String>? = null, backendRequest: Output<DiagnosticBackendRequestArgs>? = null, backendResponse: Output<DiagnosticBackendResponseArgs>? = null, frontendRequest: Output<DiagnosticFrontendRequestArgs>? = null, frontendResponse: Output<DiagnosticFrontendResponseArgs>? = null, httpCorrelationProtocol: Output<String>? = null, identifier: Output<String>? = null, logClientIp: Output<Boolean>? = null, operationNameFormat: Output<String>? = null, resourceGroupName: Output<String>? = null, samplingPercentage: Output<Double>? = null, verbosity: Output<String>? = null)

Properties

Link copied to clipboard
val alwaysLogErrors: Output<Boolean>? = null

Always log errors. Send telemetry if there is an erroneous condition, regardless of sampling settings.

Link copied to clipboard
val apiManagementLoggerId: Output<String>? = null

The id of the target API Management Logger where the API Management Diagnostic should be saved.

Link copied to clipboard
val apiManagementName: Output<String>? = null

The Name of the API Management Service where this Diagnostic should be created. Changing this forces a new resource to be created.

Link copied to clipboard

A backend_request block as defined below.

Link copied to clipboard

A backend_response block as defined below.

Link copied to clipboard

A frontend_request block as defined below.

Link copied to clipboard

A frontend_response block as defined below.

Link copied to clipboard
val httpCorrelationProtocol: Output<String>? = null

The HTTP Correlation Protocol to use. Possible values are None, Legacy or W3C.

Link copied to clipboard
val identifier: Output<String>? = null

The diagnostic identifier for the API Management Service. At this time the supported values are applicationinsights and azuremonitor. Changing this forces a new resource to be created.

Link copied to clipboard
val logClientIp: Output<Boolean>? = null

Log client IP address.

Link copied to clipboard
val operationNameFormat: Output<String>? = null

The format of the Operation Name for Application Insights telemetries. Possible values are Name, and Url.

Link copied to clipboard
val resourceGroupName: Output<String>? = null

The Name of the Resource Group where the API Management Service exists. Changing this forces a new resource to be created.

Link copied to clipboard
val samplingPercentage: Output<Double>? = null

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.

Link copied to clipboard
val verbosity: Output<String>? = null

Logging verbosity. Possible values are verbose, information or error.

Functions

Link copied to clipboard
open override fun toJava(): DiagnosticArgs