このページは、まだ日本語ではご利用いただけません。翻訳中です。
Set up the OpenTelemetry plugin to send logs and metrics to Dynatrace.
Prerequisites
- Install the
contrib
version of the OpenTelemetry Collector. Thecontrib
version is necessary for generating metrics. - Kong Gateway 3.8+
Configure Kong Gateway
Set the following parameters in your kong.conf
file:
tracing_instrumentations = all
tracing_sampling_rate = 1.0
Configure the OpenTelemetry plugin
Adjust the {OPENTELEMETRY_COLLECTOR}
variable with your own collector endpoint:
次のリクエストを行います。
curl -X POST http://localhost:8001/services/{serviceName|Id}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "opentelemetry",
"config": {
"traces_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces",
"logs_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs",
"resource_attributes": {
"service.name": "kong-dev"
}
}
}
'
SERVICE_NAME | IDを、このプラグイン構成の対象となるサービスの idまたはnameに置き換えてください。 |
独自のアクセストークン、リージョン、コントロールプレーンID、サービスIDを代入して、次のリクエストを行ってください。
curl -X POST \
https://{us|eu}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/services/{serviceId}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer TOKEN" \
--data '{"name":"opentelemetry","config":{"traces_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces","logs_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs","resource_attributes":{"service.name":"kong-dev"}}}'
地域固有のURLと個人アクセストークンの詳細については、 Konnect API referenceをご参照ください。
まず、KongPlugin リソースを作成します:
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: opentelemetry-example
plugin: opentelemetry
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
" | kubectl apply -f -
次に、次のようにserviceに注釈を付けて、KongPluginリソースをイングレスに適用します。
kubectl annotate service SERVICE_NAME konghq.com/plugins=opentelemetry-example
SERVICE_NAMEを、このプラグイン構成が対象とするサービスの名前に置き換えます。 kubectl get serviceを実行すると、利用可能なイングレスを確認できます。
注: KongPluginリソースは一度だけ定義するだけで、ネームスペース内の任意のサービス、コンシューマー、またはルートに適用できます。プラグインをクラスター全体で利用可能にしたい場合は、KongPlugin
の代わりにKongClusterPlugin
としてリソースを作成してください。
このセクションを宣言型構成ファイルに追加します。
plugins:
- name: opentelemetry
service: SERVICE_NAME|ID
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
SERVICE_NAME | IDを、このプラグイン構成の対象となるサービスの idまたはnameに置き換えてください。 |
前提条件: パーソナルアクセストークンの設定
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "kpat_YOUR_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Kong Konnectゲートウェイプラグインを作成するには、Terraform 構成に以下を追加します。
resource "konnect_gateway_plugin_opentelemetry" "my_opentelemetry" {
enabled = true
config = {
traces_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces"
logs_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs"
resource_attributes = {
service.name = "kong-dev"
}
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
service = {
id = konnect_gateway_service.my_service.id
}
}
次のリクエストを行います。
curl -X POST http://localhost:8001/routes/{routeName|Id}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "opentelemetry",
"config": {
"traces_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces",
"logs_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs",
"resource_attributes": {
"service.name": "kong-dev"
}
}
}
'
ROUTE_NAME | IDを、このプラグイン構成が対象とするルートのid またはnameに置き換えてください。 |
独自のアクセストークン、リージョン、コントロールプレーン(CP)ID、ルートIDを代入して、次のリクエストをしてください。
curl -X POST \
https://{us|eu}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/routes/{routeId}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer TOKEN" \
--data '{"name":"opentelemetry","config":{"traces_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces","logs_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs","resource_attributes":{"service.name":"kong-dev"}}}'
地域固有のURLと個人アクセストークンの詳細については、 Konnect API referenceをご参照ください。
まず、KongPlugin リソースを作成します:
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: opentelemetry-example
plugin: opentelemetry
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
" | kubectl apply -f -
次に、次のようにingressに注釈を付けて、KongPluginリソースをイングレスに適用します。
kubectl annotate ingress INGRESS_NAME konghq.com/plugins=opentelemetry-example
INGRESS_NAMEを、このプラグイン構成がターゲットとするイングレス名に置き換えます。 kubectl get ingressを実行すると、利用可能なイングレスを確認できます。
注: KongPluginリソースは一度だけ定義するだけで、ネームスペース内の任意のサービス、コンシューマー、またはルートに適用できます。プラグインをクラスター全体で利用可能にしたい場合は、KongPlugin
の代わりにKongClusterPlugin
としてリソースを作成してください。
このセクションを宣言型構成ファイルに追加します。
plugins:
- name: opentelemetry
route: ROUTE_NAME|ID
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
ROUTE_NAME | IDを、このプラグイン構成が対象とするルートのid またはnameに置き換えてください。 |
前提条件: パーソナルアクセストークンの設定
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "kpat_YOUR_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Kong Konnectゲートウェイプラグインを作成するには、Terraform 構成に以下を追加します。
resource "konnect_gateway_plugin_opentelemetry" "my_opentelemetry" {
enabled = true
config = {
traces_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces"
logs_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs"
resource_attributes = {
service.name = "kong-dev"
}
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
route = {
id = konnect_gateway_route.my_route.id
}
}
次のリクエストを行います。
curl -X POST http://localhost:8001/consumers/{consumerName|Id}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "opentelemetry",
"config": {
"traces_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces",
"logs_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs",
"resource_attributes": {
"service.name": "kong-dev"
}
}
}
'
CONSUMER_NAME | IDを、このプラグイン構成の対象となるコンシューマのidまたはnameに置き換えてください。 |
独自のアクセストークン、リージョン、コントロールプレーンID、コンシューマーIDを代入して、次のリクエストをしてください。
curl -X POST \
https://{us|eu}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/consumers/{consumerId}/plugins \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer TOKEN" \
--data '{"name":"opentelemetry","config":{"traces_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces","logs_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs","resource_attributes":{"service.name":"kong-dev"}}}'
地域固有のURLと個人アクセストークンの詳細については、 Konnect API referenceをご参照ください。
まず、KongPlugin リソースを作成します:
echo "
apiVersion: configuration.konghq.com/v1
kind: KongPlugin
metadata:
name: opentelemetry-example
plugin: opentelemetry
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
" | kubectl apply -f -
次に、次のようにKongConsumerオブジェクトに注釈を付けて、KongPluginリソースをイングレスに適用します。
kubectl annotate KongConsumer CONSUMER_NAME konghq.com/plugins=opentelemetry-example
CONSUMER_NAMEを、このプラグイン構成が対象とするコンシューマーの名前に置き換えます。 kubectl get KongConsumerを実行すると、利用可能なコンシューマを確認できます。
KongConsumerオブジェクトの詳細については、 コンシューマと認証情報のプロビジョニングをご参照ください。
注: KongPluginリソースは一度だけ定義するだけで、ネームスペース内の任意のサービス、コンシューマー、またはルートに適用できます。プラグインをクラスター全体で利用可能にしたい場合は、KongPlugin
の代わりにKongClusterPlugin
としてリソースを作成してください。
このセクションを宣言型構成ファイルに追加します。
plugins:
- name: opentelemetry
consumer: CONSUMER_NAME|ID
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
CONSUMER_NAME | IDを、このプラグイン構成の対象となるコンシューマのidまたはnameに置き換えてください。 |
前提条件: パーソナルアクセストークンの設定
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "kpat_YOUR_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Kong Konnectゲートウェイプラグインを作成するには、Terraform 構成に以下を追加します。
resource "konnect_gateway_plugin_opentelemetry" "my_opentelemetry" {
enabled = true
config = {
traces_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces"
logs_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs"
resource_attributes = {
service.name = "kong-dev"
}
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
consumer = {
id = konnect_gateway_consumer.my_consumer.id
}
}
次のリクエストを行います。
curl -X POST http://localhost:8001/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "opentelemetry",
"config": {
"traces_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces",
"logs_endpoint": "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs",
"resource_attributes": {
"service.name": "kong-dev"
}
}
}
'
独自のアクセストークン、リージョン、コントロールプレーン(CP)IDを代入して、次のリクエストをしてください。
curl -X POST \
https://{us|eu}.api.konghq.com/v2/control-planes/{controlPlaneId}/core-entities/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer TOKEN" \
--data '{"name":"opentelemetry","config":{"traces_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces","logs_endpoint":"https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs","resource_attributes":{"service.name":"kong-dev"}}}'
地域固有のURLと個人アクセストークンの詳細については、 Konnect API referenceをご参照ください。
KongClusterPlugin作成する リソースを作成し、グローバルとしてラベル付けします。
apiVersion: configuration.konghq.com/v1
kind: KongClusterPlugin
metadata:
name: <global-opentelemetry>
annotations:
kubernetes.io/ingress.class: kong
labels:
global: "true"
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
plugin: opentelemetry
宣言型構成ファイルにplugins
エントリを追加します。
plugins:
- name: opentelemetry
config:
traces_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces
logs_endpoint: https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs
resource_attributes:
service.name: kong-dev
前提条件: パーソナルアクセストークンの設定
terraform {
required_providers {
konnect = {
source = "kong/konnect"
}
}
}
provider "konnect" {
personal_access_token = "kpat_YOUR_TOKEN"
server_url = "https://us.api.konghq.com/"
}
Kong Konnectゲートウェイプラグインを作成するには、Terraform 構成に以下を追加します。
resource "konnect_gateway_plugin_opentelemetry" "my_opentelemetry" {
enabled = true
config = {
traces_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/traces"
logs_endpoint = "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp/v1/logs"
resource_attributes = {
service.name = "kong-dev"
}
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
}
Configure the OpenTelemetry Collector
Configure your OpenTelemetry Collector to send data to the Dynatrace environment.
The following example OpenTelemetry configuration shows how to export traces and logs:
receivers:
otlp:
protocols:
http:
endpoint: 0.0.0.0:4318
exporters:
otlphttp:
endpoint: "https://{your-environment-id}.live.dynatrace.com/api/v2/otlp"
headers:
"Authorization": "Api-Token <your-api-token>"
service:
pipelines:
traces:
receivers: [otlp]
processors: []
exporters: [otlphttp]
logs:
receivers: [otlp]
processors: []
exporters: [otlphttp]
Export application span metrics
To include span metrics for application traces, configure the collector exporters section of the OpenTelemetry Collector configuration file:
connectors:
spanmetrics:
dimensions:
- name: http.method
default: GET
- name: http.status_code
- name: http.route
exclude_dimensions:
- status.code
metrics_flush_interval: 15s
histogram:
disable: false
service:
pipelines:
traces:
receivers: [otlp]
processors: []
exporters: [spanmetrics]
metrics:
receivers: [spanmetrics]
processors: []
exporters: [otlphttp]