Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Konfigurationseinstellungen, die das Laufzeitverhalten bestimmen.
Paginierungseinstellungen
| Property | Default | Description |
|---|---|---|
| runtime.pagination.max-Seitengröße | Definiert maximale Datensätze pro Seite | |
| runtime.pagination.default-page-size | Legt Standarddatensätze pro Antwort fest |
REST-Einstellungen
| Property | Default | Description |
|---|---|---|
| runtime.rest.path | "/api" |
Basispfad für REST-Endpunkte |
| runtime.rest.enabled | true |
Ermöglicht das Aktivieren oder Deaktivieren von REST-Anforderungen für alle Entitäten. |
| runtime.rest.request-body-strict | true |
Unzulässige zusätzliche Felder im Anforderungstext, wenn "true" ist |
GraphQL-Einstellungen
| Property | Default | Description |
|---|---|---|
| runtime.graphql.allow-introspection | true |
Ermöglicht abfragen des zugrunde liegenden GraphQL-Schemas |
| runtime.graphql.path | "/graphql" |
Basispfad für den GraphQL-Endpunkt |
| runtime.graphql.enabled | true |
Ermöglicht das Aktivieren oder Deaktivieren von GraphQL-Anforderungen für alle Entitäten |
| runtime.graphql.depth-limit | null |
Maximale zulässige Tiefe einer GraphQL-Abfrage |
| runtime.graphql.multiple-mutations.create.enabled | false |
Ermöglicht mehrfach erstellte Mutationen für alle Entitäten. |
Hosteinstellungen
| Property | Default | Description |
|---|---|---|
| runtime.host.max-response-size-mb | 158 |
Maximale Größe (MB) der Datenbankantwort, die in einem einzigen Ergebnis zulässig ist |
| runtime.host.mode | "production" |
Ausführungsmodus; "production" oder "development" |
CORS-Einstellungen
| Property | Default | Description |
|---|---|---|
| runtime.host.cors.origins | [] |
Zulässige CORS-Ursprünge |
| runtime.host.cors.allow-credentials | false |
Legt den Wert für den Access-Control-Allow-Credentials-Header fest. |
Authentifizierungseinstellungen
| Property | Default | Description |
|---|---|---|
| runtime.host.authentication.provider | null |
Authentifizierungsanbieter |
| runtime.host.authentication.jwt.audience | null |
JWT-Zielgruppe |
| runtime.host.authentication.jwt.issuer | null |
JWT-Aussteller |
Cacheeinstellungen
| Property | Default | Description |
|---|---|---|
| runtime.cache.enabled | false |
Ermöglicht das zwischenspeichern von Antworten global |
| runtime.cache.ttl-seconds | 5 |
Zeit für live (Sekunden) für den globalen Cache |
Telemetrie-Einstellungen
| Property | Default | Description |
|---|---|---|
| runtime.telemetry.application-insights.connection-string | null |
Application Insights-Verbindungszeichenfolge |
| runtime.telemetry.application-insights.enabled | false |
Aktiviert oder deaktiviert Die Telemetrie von Application Insights |
| runtime.telemetry.open-telemetry.endpoint | null |
OpenTelemetry-Sammel-URL |
| runtime.telemetry.open-telemetry.headers | {} |
OpenTelemetry-Exportheader |
| runtime.telemetry.open-telemetry.service-name | "dab" |
Name des OpenTelemetry-Diensts |
| runtime.telemetry.open-telemetry.exporter-protocol | "grpc" |
OpenTelemetry-Protokoll ("grpc" oder "httpprotobuf") |
| runtime.telemetry.open-telemetry.enabled | true |
Aktiviert oder deaktiviert OpenTelemetry |
| runtime.telemetry.log-level.namespace | null |
Außerkraftsetzung auf namespacespezifischer Protokollebene |
| runtime.health.enabled | true |
Aktiviert oder deaktiviert den Integritätsprüfungsendpunkt global |
| runtime.health.roles | null |
Zulässige Rollen für den umfassenden Integritätsendpunkt |
| runtime.health.cache-ttl-seconds | 5 |
Zeit für den Cacheeintrag für die Integritätsprüfung (Sekunden) |
| runtime.health.max-Abfrage-Parallelität | 4 |
Maximale Anzahl gleichzeitiger Integritätsprüfungsabfragen (Bereich: 1-8) |
Formatübersicht
{
"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`)
}
}
Modus (Hostlaufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
host |
Enumeration (production | development) |
❌ Nein | production |
Entwicklungsverhalten
- Enabled Nitro (ehemals Banana Cake Pop) für GraphQL-Tests
- Aktivierte Swagger-UI für REST-Tests
- Anonyme Integritätsprüfungen aktiviert
- Erweiterte Protokollierungsverknündlichkeit (Debug)
Format
{
"runtime": {
"host": {
"mode": "production" (default) | "development"
}
}
}
Maximale Antwortgröße (Hostlaufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
max-response-size-mb |
integer | ❌ Nein | 158 |
Legt die maximale Größe (in Megabyte) für ein bestimmtes Ergebnis fest. Da große Antworten das System belasten können, max-response-size-mb wird die Gesamtgröße (anders als die Zeilenanzahl) begrenzt, um eine Überladung zu verhindern, insbesondere bei großen Spalten wie Text oder JSON.
| Value | Result |
|---|---|
| nicht festgelegt | Standard verwenden |
null |
Standard verwenden |
integer |
Beliebige positive 32-Bit-Ganzzahl |
<= 0 |
Nicht unterstützt |
Format
{
"runtime": {
"host": {
"max-response-size-mb": <integer; default: 158>
}
}
}
GraphQL (Laufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
graphql |
object | ❌ Nein | - |
Globale GraphQL-Konfiguration.
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.graphql |
enabled |
boolean | ❌ Nein | None |
runtime.graphql |
path |
string | ❌ Nein | "/graphql" |
runtime.graphql |
depth-limit |
integer | ❌ Nein | Keine (unbegrenzt) |
runtime.graphql |
allow-introspection |
boolean | ❌ Nein | True |
runtime.graphql |
multiple-mutations.create.enabled |
boolean | ❌ Nein | False |
Eigenschaftsnotizen
- Unterpfade sind für die
pathEigenschaft nicht zulässig. - Wird verwendet
depth-limit, um geschachtelte Abfragen einzuschränken. - Legen Sie fest
allow-introspection,falsedass das GraphQL-Schema ausgeblendet wird. - Wird verwendet
multiple-mutations, um mehrere Entitäten in eine einzelne Mutation einzufügen.
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>
}
}
}
}
Beispiel: Mehrere Mutationen
Configuration
{
"runtime": {
"graphql": {
"multiple-mutations": {
"create": {
"enabled": true
}
}
}
},
"entities": {
"User": {
"source": "dbo.Users",
"permissions": [
{
"role": "anonymous",
"actions": ["create"] // entity permissions are required
}
]
}
}
}
GraphQL-Mutation
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 (Laufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
rest |
object | ❌ Nein | - |
Globale REST-Konfiguration.
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.rest |
enabled |
boolean | ❌ Nein | None |
runtime.rest |
path |
string | ❌ Nein | "/api" |
runtime.rest |
request-body-strict |
boolean | ❌ Nein | True |
Eigenschaftsnotizen
- Wenn global
enabledistfalse, spielt die einzelne Entitätsebeneenabledkeine Rolle. - Die
pathEigenschaft unterstützt keine Unterpfadwerte wie/api/data. -
request-body-strictwurde eingeführt, um .NET POCO-Objekte zu vereinfachen.
request-body-strict |
Behavior |
|---|---|
true |
Zusätzliche Felder im Anforderungstext verursachen eine BadRequest Ausnahme. |
false |
Zusätzliche Felder im Anforderungstext werden ignoriert. |
Format
{
"runtime": {
"rest": {
"enabled": <true> (default) | <false>,
"path": <string> (default: /api),
"request-body-strict": <true> (default) | <false>
}
}
}
Beispiel: anforderungstext-strict
- Spalten mit einem
default()Wert werden nur ignoriertINSERT, wenn ihr Wert in der Nutzlast istnull.INSERTDaher können Vorgänge indefault()Spalten, wennrequest-body-strictdies der Wert isttrue, nicht zu explizitennullWerten führen. Um dieses Verhalten zu erreichen, ist einUPDATEVorgang erforderlich. - Spalten mit einer
default()werden unabhängig vom Nutzlastwert nicht ignoriertUPDATE. - Berechnete Spalten werden immer ignoriert.
- Automatisch generierte Spalten werden immer ignoriert.
Beispieltabelle
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
);
Anforderungsnutzlast
{
"Id": 999,
"Name": "Alice",
"Age": null,
"IsAdmin": null,
"IsMinor": false,
"ExtraField": "ignored"
}
Einfügeverhalten bei 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.
Antwortnutzlast
{
"Id": 1, // Auto-generated by the database
"Name": "Alice",
"Age": 18, // Default applied
"IsAdmin": false, // Default applied
"IsMinor": true // Computed
}
Verhalten aktualisieren, wenn request-body-strict = false
UPDATE Users
SET Name = 'Alice Updated', Age = NULL
WHERE Id = 1;
-- IsMinor and ExtraField are ignored.
Antwortnutzlast
{
"Id": 1,
"Name": "Alice Updated",
"Age": null,
"IsAdmin": false,
"IsMinor": false // Recomputed by the database (false when age is `null`)
}
CORS (Hostlaufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host |
cors |
object | ❌ Nein | - |
Globale CORS-Konfiguration.
Tip
CORS steht für "Cross-Origin Resource Sharing". Es handelt sich um ein Browsersicherheitsfeature, das steuert, ob Webseiten Anforderungen an eine andere Domäne stellen können als die, die sie bereitgestellt hat.
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.cors |
allow-credentials |
boolean | ❌ Nein | False |
runtime.host.cors |
origins |
Zeichenfolgenarray | ❌ Nein | None |
Note
Die allow-credentials Eigenschaft legt den Access-Control-Allow-Credentials CORS-Header fest.
Format
{
"runtime": {
"host": {
"cors": {
"allow-credentials": <true> (default) | <false>,
"origins": ["<array-of-strings>"]
}
}
}
}
Note
Der Wildcard * ist als Wert gültig für origins.
Anbieter (Authentifizierungshostlaufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
provider |
Enumeration (AppService | EntraId | Custom | Simulator) |
❌ Nein | None |
Wählt die Authentifizierungsmethode aus. Jeder Anbieter überprüft die Identität anders. Eine schrittweise Einrichtung finden Sie in den unten verlinkten Anleitungen.
Anbieterzusammenfassung
| Provider | Anwendungsfall | Identitätsquelle | Schrittanleitung |
|---|---|---|---|
| (weggelassen) | Nur anonymer Zugriff | None | — |
AppService |
In Azure gehostete Apps (EasyAuth) |
X-MS-CLIENT-PRINCIPAL-Header |
Konfigurieren der App Service-Authentifizierung |
EntraID |
Microsoft Entra-ID (Azure AD) | JWT-Bearertoken | Konfigurieren Sie die Entra ID-Authentifizierung |
Custom |
IdPs von Drittanbietern (Okta, Auth0) | JWT-Bearertoken | Konfigurieren der benutzerdefinierten JWT-Authentifizierung |
Simulator |
Nur lokale Tests | Simuliert | Konfigurieren der Simulatorauthentifizierung |
Note
Der EntraId Anbieter wurde zuvor benannt AzureAd. Der alte Name funktioniert weiterhin aus Gründen der Kompatibilität.
Nur anonym (kein Anbieter)
Wenn der authentication Abschnitt weggelassen wird, wird DAB im modus "Nur anonym" ausgeführt. Allen Anforderungen wird die Anonymous Systemrolle zugewiesen.
{
"host": {
// authentication section omitted
}
}
AppService
Vertrauenswürdige Identitätsheader, die von Azure App Service EasyAuth eingefügt werden.
{
"host": {
"authentication": {
"provider": "AppService"
}
}
}
EntraID
Überprüft JWT-Token, die von der Microsoft Entra-ID ausgestellt wurden.
{
"host": {
"authentication": {
"provider": "EntraId",
"jwt": {
"audience": "<application-id>",
"issuer": "https://login.microsoftonline.com/<tenant-id>/v2.0"
}
}
}
}
Kundenspezifisch
Überprüft JWT-Token von Identitätsanbietern von Drittanbietern.
{
"host": {
"authentication": {
"provider": "Custom",
"jwt": {
"audience": "<api-audience>",
"issuer": "https://<your-idp-domain>/"
}
}
}
}
Simulator
Simuliert die Authentifizierung für lokale Entwicklung und Tests.
{
"host": {
"authentication": {
"provider": "Simulator"
}
}
}
Important
Der Simulator Anbieter funktioniert nur, wenn runtime.host.mode dies der Zeitpunkt ist development. DAB kann nicht gestartet werden, wenn Simulator im Produktionsmodus konfiguriert ist.
Rollenauswahl
Für alle Anbieter mit Ausnahme von Simulator wählt der X-MS-API-ROLE Header aus, welche Rolle aus den Ansprüchen des authentifizierten Benutzers verwendet werden soll. Wenn sie weggelassen wird, verwendet die Anforderung die Authenticated Systemrolle. Ausführliche Informationen zur Rollenauswertung finden Sie unter Autorisierung und Rollen.
JWT (Authentifizierungshostlaufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication |
jwt |
object | ❌ Nein | - |
Konfiguration des globalen JSON-Webtokens (JWT).
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.host.authentication.jwt |
audience |
string | ❌ Nein | None |
runtime.host.authentication.jwt |
issuer |
string | ❌ Nein | None |
Format
{
"runtime": {
"host": {
"authentication": {
"jwt": {
"audience": "<client-id>",
"issuer": "<issuer-url>"
}
}
}
}
}
Paginierung (Runtime)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
pagination |
object | ❌ Nein | - |
Globale Paginierungsgrenzwerte für REST- und GraphQL-Endpunkte.
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.pagination |
max-page-size |
int | ❌ Nein | 100,000 |
runtime.pagination |
default-page-size |
int | ❌ Nein | 100 |
runtime.pagination |
next-link-relative |
boolean | ❌ Nein | false |
Unterstützte Max-Page-Size-Werte
| Value | Result |
|---|---|
integer |
Jede positive 32-Bit-Ganzzahl wird unterstützt. |
0 |
Nicht unterstützt. |
-1 |
Standardmäßig wird der maximal unterstützte Wert verwendet. |
< -1 |
Nicht unterstützt. |
Unterstützte Standardseitenwerte
| Value | Result |
|---|---|
integer |
Eine positive ganze Zahl kleiner als die aktuelle max-page-size. |
0 |
Nicht unterstützt. |
-1 |
Standardmäßig wird die aktuelle max-page-size Einstellung festgelegt. |
< -1 |
Nicht unterstützt. |
Next-Link-relatives Verhalten
Ist next-link-relative dies trueder Grund, verwenden Paginierungswerte nextLink relative URLs anstelle absoluter URLs.
| Value | Example |
|---|---|
false (Standardwert) |
"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
Wenn der Wert größer als max-page-sizeist, werden die Ergebnisse auf max-page-size.
Beispiel: Paging in REST
Request
GET https://localhost:5001/api/users
Antwortnutzlast
{
"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=="
}
Nächste Seite anfordern
GET https://localhost:5001/api/users?$after=W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==
Beispiel: Paging in GraphQL
Anforderungsnutzlast (Abfrage)
query {
users {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Antwortnutzlast
{
"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=="
}
}
}
Nächste Seite anfordern
query {
users(after: "W3siRW50aXR5TmFtZSI6InVzZXJzIiwiRmllbGROYW1lI==") {
items {
Id
Name
Age
IsAdmin
IsMinor
}
hasNextPage
endCursor
}
}
Beispiel: Zugreifen auf max-page-size Anforderungen
Verwenden Sie den max-page-size Wert durch Festlegen $limit (REST) oder first (GraphQL) auf -1.
REST
GET https://localhost:5001/api/users?$limit=-1
GraphQL
query {
users(first: -1) {
items {
...
}
}
}
Cache (Laufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
cache |
object | ❌ Nein | - |
Globale Cachekonfiguration.
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.cache |
enabled |
boolean | ❌ Nein | False |
runtime.cache |
ttl-seconds |
integer | ❌ Nein | 5 |
Tip
Die Eigenschaft auf Entitätsebene cache.ttl-seconds wird standardmäßig auf diesen globalen Wert festgelegt.
Format
{
"runtime": {
"cache": {
"enabled": <boolean>,
"ttl-seconds": <integer>
}
}
}
Important
Wenn global enabled ist false, spielt die einzelne Entitätsebene enabled keine Rolle.
Telemetrie (Laufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
telemetry |
object | ❌ Nein | - |
Globale Telemetriekonfiguration.
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
log-level |
dictionary | ❌ Nein | None |
runtime.telemetry |
application-insights |
object | ❌ Nein | - |
runtime.telemetry |
open-telemetry |
object | ❌ Nein | - |
Konfiguriert die Ausführlichkeit der Protokollierung pro Namespace. Dies folgt standardmäßigen .NET-Protokollierungskonventionen und ermöglicht eine granulare Steuerung, obwohl davon ausgegangen wird, dass sie mit internen Daten-API-Generatoren vertraut ist. Der Daten-API-Generator ist Open Source: https://aka.ms/dab
Format
{
"runtime": {
"telemetry": {
"log-level": {
"namespace": "log-level",
"namespace": "log-level"
}
}
}
}
Tip
log-level kann sowohl in der Entwicklung als auch in der Produktion heiß neu geladen werden. Es ist derzeit die einzige Eigenschaft, die hot reload in der Produktion unterstützt.
Example
{
"runtime": {
"telemetry": {
"log-level": {
"Azure.DataApiBuilder.Core.Configurations.RuntimeConfigValidator": "debug",
"Azure.DataApiBuilder.Core": "information",
"default": "warning"
}
}
}
}
Application Insights (Telemetrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
application-insights |
object | ❌ Nein | - |
Konfiguriert die Protokollierung für Application Insights.
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.application-insights |
enabled |
boolean | ❌ Nein | False |
runtime.telemetry.application-insights |
connection-string |
string | ✔️ Ja | None |
Format
{
"runtime": {
"telemetry": {
"application-insights": {
"enabled": <true; default: true> | <false>
"connection-string": <string>
}
}
}
}
OpenTelemetry (Telemetrie)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry |
open-telemetry |
object | ❌ Nein | - |
Konfiguriert die Protokollierung für "Telemetrie öffnen".
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime.telemetry.open-telemetry |
enabled |
boolean | ❌ Nein | true |
runtime.telemetry.open-telemetry |
endpoint |
string | ✔️ Ja | None |
runtime.telemetry.open-telemetry |
headers |
string | ❌ Nein | None |
runtime.telemetry.open-telemetry |
service-name |
string | ❌ Nein | "dab" |
runtime.telemetry.open-telemetry |
exporter-protocol |
Enumeration (grpc | httpprotobuf) |
❌ Nein | grpc |
Mehrere Kopfzeilen sind , (Komma) getrennt.
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",
}
}
}
}
Erfahren Sie mehr über OTEL_EXPORTER_OTLP_HEADERS.
Note
gRPC (4317) ist schneller und unterstützt Streaming, erfordert jedoch weitere Einrichtungsschritte. HTTP/protobuf (4318) ist einfacher und einfacher zu debuggen, aber weniger effizient.
Integrität (Laufzeit)
| Parent | Property | Type | Required | Default |
|---|---|---|---|---|
runtime |
health |
object | ❌ Nein | - |
Konfiguration des globalen Integritätsprüfungsendpunkts (/health)
Verschachtelte Eigenschaften
| Parent | Property | Type | Required | Default | Bereich/Notizen |
|---|---|---|---|---|---|
runtime.health |
enabled |
boolean | ❌ Nein | true |
|
runtime.health |
roles |
Zeichenfolgenarray | ✔️ Ja* | null |
*Erforderlich im Produktionsmodus |
runtime.health |
cache-ttl-seconds |
integer | ❌ Nein | 5 |
Min: 0 |
runtime.health |
max-query-parallelism |
integer | ❌ Nein | 4 |
Min: 1, Max: 8 (klemmt) |
Verhalten bei der Entwicklung im Vergleich zur Produktion
| Condition | Entwicklungsverhalten | Produktionsverhalten |
|---|---|---|
health.enabled = falsch |
403 Status |
403 Status |
health.enabled = wahr |
Hängt von der Rolle ab | Hängt von der Rolle ab |
roles nicht angegeben oder null |
Angezeigte Integrität |
403 Status |
Aktuelle Rolle nicht in roles |
403 Status |
403 Status |
aktuelle Rolle in roles |
Angezeigte Integrität | Angezeigte Integrität |
roles Enthält anonymous |
Angezeigte Integrität | Angezeigte Integrität |
Format
{
"health": {
"enabled": <true> (default) | <false>,
"roles": [ <string> ], // required in production
"cache-ttl-seconds": <integer; default: 5>,
"max-query-parallelism": <integer; default: 4>
}
}
Note
Wenn global enabled ist false, spielt die einzelne Entitätsebene enabled keine Rolle.
Example
{
"health": {
"enabled": true,
"roles": ["admin", "support"],
"cache-ttl-seconds": 10,
"max-query-parallelism": 6
}
}