Udostępnij przez


Runtime

Ustawienia konfiguracji określające zachowanie środowiska uruchomieniowego.

Ustawienia stronicowania

Property Default Description
runtime.pagination.max rozmiar strony Definiuje maksymalną liczbę rekordów na stronę
runtime.pagination.default-page-size Ustawia domyślne rekordy na odpowiedź

Ustawienia REST

Property Default Description
runtime.rest.path "/api" Ścieżka podstawowa dla punktów końcowych REST
runtime.rest.enabled true Umożliwia włączanie lub wyłączanie żądań REST dla wszystkich jednostek
runtime.rest.request-body-strict true Nie zezwala na nadmiarowe pola w treści żądania, gdy jest to prawda

Ustawienia języka GraphQL

Property Default Description
runtime.graphql.allow-introspection true Umożliwia wykonywanie zapytań względem bazowego schematu GraphQL
runtime.graphql.path "/graphql" Ścieżka podstawowa punktu końcowego GraphQL
runtime.graphql.enabled true Umożliwia włączanie lub wyłączanie żądań GraphQL dla wszystkich jednostek
runtime.graphql.depth-limit null Maksymalna dozwolona głębokość zapytania GraphQL
runtime.graphql.multiple-mutacje.create.enabled false Umożliwia tworzenie mutacji dla wszystkich jednostek

Ustawienia hosta

Property Default Description
runtime.host.max-response-size-mb 158 Maksymalny rozmiar (MB) odpowiedzi bazy danych dozwolony w jednym wyniku
runtime.host.mode "production" Tryb działania; "production" lub "development"

Ustawienia mechanizmu CORS

Property Default Description
runtime.host.cors.origins [] Dozwolone źródła mechanizmu CORS
runtime.host.cors.allow-credentials false Ustawia wartość nagłówka Access-Control-Allow-Credentials

Ustawienia uwierzytelniania

Property Default Description
runtime.host.authentication.provider null Dostawca uwierzytelniania
runtime.host.authentication.jwt.audience null Odbiorcy JWT
runtime.host.authentication.jwt.issuer null Wystawca JWT

Ustawienia pamięci podręcznej

Property Default Description
runtime.cache.enabled false Umożliwia buforowanie odpowiedzi globalnie
runtime.cache.ttl-seconds 5 Czas wygaśnięcia (w sekundach) dla globalnej pamięci podręcznej

Ustawienia telemetrii

Property Default Description
runtime.telemetry.application-insights.connection-string null Parametry połączenia usługi Application Insights
runtime.telemetry.application-insights.enabled false Włącza lub wyłącza telemetrię usługi Application Insights
runtime.telemetry.open-telemetry.endpoint null Adres URL modułu zbierającego OpenTelemetry
runtime.telemetry.open-telemetry.headers {} Nagłówki eksportu OpenTelemetry
runtime.telemetry.open-telemetry.service-name "dab" Nazwa usługi OpenTelemetry
runtime.telemetry.open-telemetry.exporter-protocol "grpc" Protokół OpenTelemetry ("grpc" lub "httpprotobuf")
runtime.telemetry.open-telemetry.enabled true Włącza lub wyłącza funkcję OpenTelemetry
runtime.telemetry.log-level.namespace null Zastępowanie poziomu dziennika specyficznego dla przestrzeni nazw
runtime.health.enabled true Włącza lub wyłącza globalny punkt końcowy sprawdzania kondycji
runtime.health.roles null Dozwolone role dla kompleksowego punktu końcowego kondycji
runtime.health.cache-ttl-s 5 Czas wygaśnięcia (w sekundach) dla wpisu pamięci podręcznej raportu kontroli kondycji
runtime.health.max równoległość zapytań 4 Maksymalna liczba współbieżnych zapytań dotyczących sprawdzania kondycji (zakres: 1–8)

Omówienie formatu

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer|null> (default: `100000`),
      "default-page-size": <integer|null> (default: `100`)
    },
    "rest": {
      "path": <string> (default: "/api"),
      "enabled": <true>|<false>,
      "request-body-strict": <true>|<false> (default: `true`)
    },
    "graphql": {
      "path": <string> (default: "/graphql"),
      "enabled": <true>|<false>,
      "allow-introspection": <true>|<false>,
      "depth-limit": <integer|null> (default: `null`),
      "multiple-mutations": {
        "create": {
          "enabled": <true>|<false> (default: `false`)
        }
      }
    },
    "host": {
      "mode": <"production"> (default) | <"development">,
      "max-response-size-mb": <integer|null> (default: `158`),
      "cors": {
        "origins": [ "<string>" ],
        "allow-credentials": <true>|<false> (default: `false`)
      },
      "authentication": {
        "provider": <string> (default: "AppService"),
        "jwt": {
          "audience": "<string>",
          "issuer": "<string>"
        }
      }
    }
  },
  "cache": {
    "enabled": <true>|<false> (default: `false`),
    "ttl-seconds": <integer> (default: `5`)
  },
  "telemetry": {
    "application-insights": {
      "connection-string": "<string>",
      "enabled": <true>|<false> (default: `true`)
    },
    "open-telemetry": {
      "endpoint": "<string>",
      "headers": "<string>",
      "service-name": <string> (default: "dab"),
      "exporter-protocol": <"grpc"> (default) | <"httpprotobuf">,
      "enabled": <true>|<false> (default: `true`)
    },
    "log-level": {
      // namespace keys
      "<namespace>": <"trace"|"debug"|"information"|"warning"|"error"|"critical"|"none"|null>
    }
  },
  "health": {
    "enabled": <true>|<false> (default: `true`),
    "roles": [ "<string>" ],
    "cache-ttl-seconds": <integer> (default: `5`),
    "max-query-parallelism": <integer> (default: `4`)
  }
}

Tryb (środowisko uruchomieniowe hosta)

Parent Property Typ Required Default
runtime host wyliczenie (production | development) ❌ Nie production

Zachowanie programistyczne

  • Enabled Nitro (dawniej Banana Cake Pop) na potrzeby testowania GraphQL
  • Włączony interfejs użytkownika struktury Swagger na potrzeby testowania REST
  • Włączone anonimowe kontrole kondycji
  • Zwiększona szczegółowość rejestrowania (debugowanie)

Format

{
  "runtime": {
    "host": {
      "mode": "production" (default) | "development"
    }
  }
}

Maksymalny rozmiar odpowiedzi (środowisko uruchomieniowe hosta)

Parent Property Typ Required Default
runtime.host max-response-size-mb liczba całkowita ❌ Nie 158

Ustawia maksymalny rozmiar (w megabajtach) dla dowolnego wyniku. Ponieważ duże odpowiedzi mogą przeciążać system, max-response-size-mb powoduje ograniczenie całkowitego rozmiaru (innego niż liczba wierszy), aby zapobiec przeciążeniu, co jest szczególnie w przypadku dużych kolumn, takich jak tekst lub JSON.

Value Result
nie ustawiono Użyj wartości domyślnej
null Użyj wartości domyślnej
integer Dowolna dodatnia liczba całkowita 32-bitowa
<= 0 Niewspierane

Format

{
  "runtime": {
    "host": {
      "max-response-size-mb": <integer; default: 158>
    }
  }
}

GraphQL (środowisko uruchomieniowe)

Parent Property Typ Required Default
runtime graphql obiekt ❌ Nie -

Konfiguracja globalnego języka GraphQL.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.graphql enabled boolean ❌ Nie None
runtime.graphql path ciąg ❌ Nie "/graphql"
runtime.graphql depth-limit liczba całkowita ❌ Nie Brak (nieograniczona)
runtime.graphql allow-introspection boolean ❌ Nie True
runtime.graphql multiple-mutations.create.enabled boolean ❌ Nie False

Uwagi dotyczące właściwości

  • Ścieżki podrzędne nie są dozwolone dla path właściwości .
  • Użyj depth-limit polecenia , aby ograniczyć zagnieżdżone zapytania.
  • Ustaw allow-introspection wartość na , aby false ukryć schemat GraphQL.
  • Służy multiple-mutations do wstawiania wielu jednostek w jednej mutacji.

Format

{
  "runtime": {
    "graphql": {
      "enabled": <true> (default) | <false>
      "depth-limit": <integer|null> (default: `null`),
      "path": <string> (default: /graphql),
      "allow-introspection": <true> (default) | <false>,
      "multiple-mutations": {
        "create": {
          "enabled": <true> (default) | <false>
        }
    }
  }
}

Przykład: wiele mutacji

Configuration

{
  "runtime": {
    "graphql": {
      "multiple-mutations": {
        "create": {
          "enabled": true
        }
      }
    }
  },
  "entities": {
    "User": {
      "source": "dbo.Users",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["create"] // entity permissions are required
        }
      ]
    }
  }
}

Mutacja GraphQL

mutation {
  createUsers(input: [
    { name: "Alice", age: 30, isAdmin: true },
    { name: "Bob", age: 25, isAdmin: false },
    { name: "Charlie", age: 35, isAdmin: true }
  ]) {
    id
    name
    age
    isAdmin
  }
}

REST (środowisko uruchomieniowe)

Parent Property Typ Required Default
runtime rest obiekt ❌ Nie -

Globalna konfiguracja REST.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.rest enabled boolean ❌ Nie None
runtime.rest path ciąg ❌ Nie "/api"
runtime.rest request-body-strict boolean ❌ Nie True

Uwagi dotyczące właściwości

  • Jeśli wartość globalna enabled to false, pojedynczy poziom enabled jednostki nie ma znaczenia.
  • Właściwość path nie obsługuje wartości podścieżki, takich jak /api/data.
  • request-body-strict wprowadzono w celu uproszczenia obiektów POCO platformy .NET.
request-body-strict Behavior
true Dodatkowe pola w treści żądania powodują BadRequest wyjątek.
false Dodatkowe pola w treści żądania są ignorowane.

Format

{
  "runtime": {
    "rest": {
      "enabled": <true> (default) | <false>,
      "path": <string> (default: /api),
      "request-body-strict": <true> (default) | <false>
    }
  }
}

Przykład: żądanie-treść-ścisłe

  • Kolumny z wartością default() są ignorowane tylko wtedy INSERT , gdy ich wartość w ładunku to null. W związku INSERT z tym operacje w default() kolumnach, gdy request-body-strict ma wartość true, nie mogą powodować jawnych null wartości. Aby osiągnąć to zachowanie, wymagana UPDATE jest operacja.
  • Kolumny z elementem default() nie są ignorowane UPDATE niezależnie od wartości ładunku.
  • Obliczone kolumny są zawsze ignorowane.
  • Kolumny generowane automatycznie są zawsze ignorowane.

Przykładowa tabela

CREATE TABLE Users (
    Id INT PRIMARY KEY IDENTITY, -- auto-generated column
    Name NVARCHAR(50) NOT NULL,
    Age INT DEFAULT 18, -- column with default
    IsAdmin BIT DEFAULT 0, -- column with default
    IsMinor AS IIF(Age <= 18, 1, 0) -- computed column
);

Dane żądania

{
  "Id": 999,
  "Name": "Alice",
  "Age": null,
  "IsAdmin": null,
  "IsMinor": false,
  "ExtraField": "ignored"
}

Wstaw zachowanie, gdy request-body-strict = false

INSERT INTO Users (Name) VALUES ('Alice');
-- Default values for Age (18) and IsAdmin (0) are applied by the database.
-- IsMinor is ignored because it’s a computed column.
-- ExtraField is ignored.
-- The database generates the Id value.

Ładunek danych odpowiedzi

{
  "Id": 1,          // Auto-generated by the database
  "Name": "Alice",
  "Age": 18,        // Default applied
  "IsAdmin": false, // Default applied
  "IsMinor": true   // Computed
}

Aktualizowanie zachowania w przypadku request-body-strict = false

UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.

Ładunek danych odpowiedzi

{
  "Id": 1,
  "Name": "Alice Updated",
  "Age": null,
  "IsAdmin": false,
  "IsMinor": false // Recomputed by the database (false when age is `null`)
}

CORS (środowisko uruchomieniowe hosta)

Parent Property Typ Required Default
runtime.host cors obiekt ❌ Nie -

Globalna konfiguracja mechanizmu CORS.

Tip

CORS oznacza "Współużytkowanie zasobów między źródłami". Jest to funkcja zabezpieczeń przeglądarki, która kontroluje, czy strony internetowe mogą wysyłać żądania do innej domeny niż ta, która je obsłużyła.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.host.cors allow-credentials boolean ❌ Nie False
runtime.host.cors origins tablica ciągów ❌ Nie None

Note

Właściwość allow-credentials ustawia Access-Control-Allow-Credentials nagłówek CORS.

Format

{
  "runtime": {
    "host": {
      "cors": {
        "allow-credentials": <true> (default) | <false>,
        "origins": ["<array-of-strings>"]
      }
    }
  }
}

Note

Symbol wieloznaczny * jest prawidłowy jako wartość .origins

Dostawca (środowisko uruchomieniowe hosta uwierzytelniania)

Parent Property Typ Required Default
runtime.host.authentication provider wyliczenie (AppService | EntraId | Custom | Simulator) ❌ Nie None

Wybiera metodę uwierzytelniania. Każdy dostawca weryfikuje tożsamość inaczej. Aby uzyskać instrukcje krok po kroku, zobacz przewodniki z instrukcjami poniżej.

Podsumowanie dostawcy

Provider Przypadek użycia Źródło tożsamości Przewodnik z instrukcjami
(pominięto) Dostęp tylko anonimowy None
AppService Aplikacje hostowane na platformie Azure (EasyAuth) X-MS-CLIENT-PRINCIPAL Nagłówka Konfigurowanie uwierzytelniania usługi App Service
EntraID Microsoft Entra ID (Azure AD) Token elementu nośnego JWT Konfigurowanie uwierzytelniania Entra ID
Custom Dostawcy tożsamości innych firm (Okta, Auth0) Token elementu nośnego JWT Konfigurowanie niestandardowego uwierzytelniania JWT
Simulator Tylko lokalne testowanie Symulowany Konfigurowanie uwierzytelniania symulatora

Note

EntraId Dostawca wcześniej nosił nazwę AzureAd. Stara nazwa nadal działa pod kątem zgodności.

Tylko anonimowy (bez dostawcy)

authentication Gdy sekcja zostanie pominięta, daB działa w trybie tylko anonimowym. Wszystkie żądania są przypisywane Anonymous do roli systemu.

{
  "host": {
    // authentication section omitted
  }
}

AppService

Nagłówki tożsamości zaufania wprowadzone przez usługę Azure App Service EasyAuth.

{
  "host": {
    "authentication": {
      "provider": "AppService"
    }
  }
}

EntraID

Weryfikuje tokeny JWT wystawione przez identyfikator Firmy Microsoft Entra.

{
  "host": {
    "authentication": {
      "provider": "EntraId",
      "jwt": {
        "audience": "<application-id>",
        "issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
      }
    }
  }
}

Custom

Weryfikuje tokeny JWT od dostawców tożsamości innych firm.

{
  "host": {
    "authentication": {
      "provider": "Custom",
      "jwt": {
        "audience": "<api-audience>",
        "issuer": "https://<your-idp-domain>/"
      }
    }
  }
}

Symulator

Symuluje uwierzytelnianie na potrzeby lokalnego programowania i testowania.

{
  "host": {
    "authentication": {
      "provider": "Simulator"
    }
  }
}

Important

Dostawca Simulator działa tylko wtedy, gdy runtime.host.mode ma wartość development. Nie można uruchomić narzędzia DAB, jeśli symulator jest skonfigurowany w trybie produkcyjnym.

Wybór roli

W przypadku wszystkich dostawców z wyjątkiem symulatora X-MS-API-ROLE nagłówek wybiera rolę do użycia z oświadczeń uwierzytelnionego użytkownika. W przypadku pominięcia żądanie używa Authenticated roli systemu. Aby uzyskać szczegółowe informacje na temat oceny ról, zobacz Autoryzacja i role.

JWT (środowisko uruchomieniowe hosta uwierzytelniania)

Parent Property Typ Required Default
runtime.host.authentication jwt obiekt ❌ Nie -

Globalna konfiguracja tokenu internetowego JSON (JWT).

Diagram obsługi tokenów internetowych JSON w narzędziu Data API Builder.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.host.authentication.jwt audience ciąg ❌ Nie None
runtime.host.authentication.jwt issuer ciąg ❌ Nie None

Format

{
  "runtime": {
    "host": {
      "authentication": {
        "jwt": {
          "audience": "<client-id>",
          "issuer": "<issuer-url>"
        }
      }
    }
  }
}

Stronicowanie (środowisko uruchomieniowe)

Parent Property Typ Required Default
runtime pagination obiekt ❌ Nie -

Globalne limity stronicowania dla punktów końcowych REST i GraphQL.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.pagination max-page-size int ❌ Nie 100,000
runtime.pagination default-page-size int ❌ Nie 100
runtime.pagination next-link-relative boolean ❌ Nie false

Obsługiwane wartości maksymalnego rozmiaru strony

Value Result
integer Obsługiwana jest dowolna dodatnia liczba całkowita 32-bitowa.
0 Niewspierane.
-1 Wartość domyślna to maksymalna obsługiwana wartość.
< -1 Niewspierane.

Wartości obsługiwane przez domyślny rozmiar strony

Value Result
integer Dowolna dodatnia liczba całkowita mniejsza niż bieżąca max-page-size.
0 Niewspierane.
-1 Wartość domyślna bieżącego ustawienia max-page-size.
< -1 Niewspierane.

Gdy next-link-relative wartość to true, wartości stronicowania nextLink używają względnych adresów URL zamiast bezwzględnych adresów URL.

Value Example
false (ustawienie domyślne) "nextLink": "https://localhost:5001/api/users?$after=..."
true "nextLink": "/api/users?$after=..."

Format

{
  "runtime": {
    "pagination": {
      "max-page-size": <integer; default: 100000>,
      "default-page-size": <integer; default: 100>,
      "next-link-relative": <boolean; default: false>
    }
  }
}

Note

Gdy wartość jest większa niż max-page-size, wyniki są ograniczone do max-page-sizewartości .

Przykład: stronicowanie w interfejsie REST

Request

GET https://localhost:5001/api/users

Ładunek danych odpowiedzi

{
  "value": [
    {
      "Id": 1,
      "Name": "Alice",
      "Age": 30,
      "IsAdmin": true,
      "IsMinor": false
    },
    {
      "Id": 2,
      "Name": "Bob",
      "Age": 17,
      "IsAdmin": false,
      "IsMinor": true
    }
  ],
  "nextLink": "https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
}

Żądaj następnej strony

GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==

Przykład: stronicowanie w narzędziu GraphQL

Ładunek żądania (zapytanie)

query {
  users {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Ładunek danych odpowiedzi

{
  "data": {
    "users": {
      "items": [
        {
          "Id": 1,
          "Name": "Alice",
          "Age": 30,
          "IsAdmin": true,
          "IsMinor": false
        },
        {
          "Id": 2,
          "Name": "Bob",
          "Age": 17,
          "IsAdmin": false,
          "IsMinor": true
        }
      ],
      "hasNextPage": true,
      "endCursor": "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI=="
    }
  }
}

Żądaj następnej strony

query {
  users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
    items {
      Id
      Name
      Age
      IsAdmin
      IsMinor
    }
    hasNextPage
    endCursor
  }
}

Przykład: uzyskiwanie dostępu do żądań max-page-size

max-page-size Użyj wartości, ustawiając $limit wartość (REST) lub first (GraphQL) na -1.

REST

GET https://localhost:5001/api/users?$limit=-1

GraphQL

query {
  users(first: -1) {
    items {
      ...
    }
  }
}

Pamięć podręczna (środowisko uruchomieniowe)

Parent Property Typ Required Default
runtime cache obiekt ❌ Nie -

Konfiguracja globalnej pamięci podręcznej.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.cache enabled boolean ❌ Nie False
runtime.cache ttl-seconds liczba całkowita ❌ Nie 5

Tip

Właściwość na poziomie cache.ttl-seconds jednostki jest domyślnie ustawiona na tę wartość globalną.

Format

{
  "runtime": {
    "cache":  {
      "enabled": <boolean>,
      "ttl-seconds": <integer>
    }
  }
}

Important

Jeśli wartość globalna enabled to false, pojedynczy poziom enabled jednostki nie ma znaczenia.

Telemetria (środowisko uruchomieniowe)

Parent Property Typ Required Default
runtime telemetry obiekt ❌ Nie -

Globalna konfiguracja telemetrii.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.telemetry log-level dictionary ❌ Nie None
runtime.telemetry application-insights obiekt ❌ Nie -
runtime.telemetry open-telemetry obiekt ❌ Nie -

Konfiguruje szczegółowość rejestrowania dla przestrzeni nazw. Jest to zgodne ze standardowymi konwencjami rejestrowania platformy .NET i umożliwia szczegółową kontrolę, chociaż zakłada ona pewną znajomość wewnętrznych elementów konstruktora interfejsu API danych. Konstruktor interfejsu API danych to open source: https://aka.ms/dab

Format

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "namespace": "log-level",
        "namespace": "log-level"
      }
    }
  }
}

Tip

log-level mogą być ładowane na gorąco zarówno w środowisku deweloperskim, jak i produkcyjnym. Jest to obecnie jedyna właściwość, która obsługuje przeładowywanie na gorąco w środowisku produkcyjnym.

Example

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

Application Insights (telemetria)

Parent Property Typ Required Default
runtime.telemetry application-insights obiekt ❌ Nie -

Konfiguruje rejestrowanie w usłudze Application Insights.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.telemetry.application-insights enabled boolean ❌ Nie False
runtime.telemetry.application-insights connection-string ciąg ✔️ Tak None

Format

{
  "runtime": {
    "telemetry": {
      "application-insights": {
        "enabled": <true; default: true> | <false>
        "connection-string": <string>
      }
    }
  }
}

OpenTelemetry (telemetria)

Parent Property Typ Required Default
runtime.telemetry open-telemetry obiekt ❌ Nie -

Konfiguruje rejestrowanie w celu otwarcia telemetrii.

Właściwości zagnieżdżone

Parent Property Typ Required Default
runtime.telemetry.open-telemetry enabled boolean ❌ Nie true
runtime.telemetry.open-telemetry endpoint ciąg ✔️ Tak None
runtime.telemetry.open-telemetry headers ciąg ❌ Nie None
runtime.telemetry.open-telemetry service-name ciąg ❌ Nie "dab"
runtime.telemetry.open-telemetry exporter-protocol wyliczenie (grpc | httpprotobuf) ❌ Nie grpc

Wiele nagłówków jest , rozdzielonych przecinkami.

Format

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": <true> (default) | <false>,
        "endpoint": <string>,
        "headers": <string>,
        "service-name": <string> (default: "dab"),
        "exporter-protocol": <"grpc" (default) | "httpprotobuf">
      }
    }
  }
}

Example

{
  "runtime": {
    "telemetry": {
      "open-telemetry": {
        "enabled": true,
        // a gRPC endpoint example
        "endpoint": "http://localhost:4317",
        // an HTTP/protobuf endpoint example
        "endpoint": "http://localhost:4318/v1/metrics",
        "headers": "api-key=key,other-config-value=value",
        "service-name": "dab",
      }
    }
  }
}

Dowiedz się więcej o OTEL_EXPORTER_OTLP_HEADERS.

Note

Funkcja gRPC (4317) jest szybsza i obsługuje przesyłanie strumieniowe, ale wymaga wykonania większej liczby kroków konfiguracji. Protokół HTTP/protobuf (4318) jest prostszy i łatwiejszy do debugowania, ale mniej wydajny.

Kondycja (środowisko uruchomieniowe)

Parent Property Typ Required Default
runtime health obiekt ❌ Nie -

Konfiguracja globalnego punktu końcowego sprawdzania kondycji (/health).

Właściwości zagnieżdżone

Parent Property Typ Required Default Zakres/notatki
runtime.health enabled boolean ❌ Nie true
runtime.health roles tablica ciągów ✔️ Tak* null *Wymagane w trybie produkcyjnym
runtime.health cache-ttl-seconds liczba całkowita ❌ Nie 5 Min: 0
runtime.health max-query-parallelism liczba całkowita ❌ Nie 4 Min: 1, Maks. 8 (zaciśnięty)

Zachowanie w środowisku deweloperskim a produkcyjnym

Condition Zachowanie programistyczne Zachowanie produkcyjne
health.enabled = fałsz 403 stan 403 stan
health.enabled = prawda Zależy od roli Zależy od roli
roles pominięty lub null Wyświetlona kondycja 403 stan
bieżąca rola nie jest w roles 403 stan 403 stan
bieżąca rola w roles Wyświetlona kondycja Wyświetlona kondycja
roles Zawiera anonymous Wyświetlona kondycja Wyświetlona kondycja

Format

{
  "health": {
    "enabled": <true> (default) | <false>,
    "roles": [ <string> ], // required in production
    "cache-ttl-seconds": <integer; default: 5>,
    "max-query-parallelism": <integer; default: 4>
  }
}

Note

Jeśli wartość globalna enabled to false, pojedynczy poziom enabled jednostki nie ma znaczenia.

Example

{
  "health": {
    "enabled": true,
    "roles": ["admin", "support"],
    "cache-ttl-seconds": 10,
    "max-query-parallelism": 6
  }
}