このページは、まだ日本語ではご利用いただけません。翻訳中です。
Note: The OpenTelemetry plugin’s tracing capabilities only work when Kong Gateway’s tracing_instrumentations
configuration is enabled.
The OpenTelemetry plugin is fully compatible with the OpenTelemetry specification and can be used with any OpenTelemetry compatible backend.
There are two ways to set up an OpenTelemetry backend:
Set up Kong Gateway
The OpenTelemetry tracing capability supported by this plugin requires the following Kong Gateway configuration:
-
tracing_instrumentations = all
: Enables all possible tracing instrumentations.
Valid values can be found in Kong’s configuration reference.
-
tracing_sampling_rate = 1.0
: Tracing instrumentation sampling rate.
Tracer samples a fixed percentage of all spans following the sampling rate.
Set the sampling rate to a lower value to reduce the impact of the instrumentation on Kong Gateway’s proxy performance in production.
Set up an OpenTelemetry compatible backend
This section is optional if you are using a OpenTelemetry compatible APM vendor.
All the supported vendors are listed in the OpenTelemetry’s Vendor support.
Jaeger natively supports OpenTelemetry starting with v1.35 and can be used with the OpenTelemetry plugin.
Deploy a Jaeger instance with Docker:
docker run --name jaeger \
-e COLLECTOR_OTLP_ENABLED=true \
-p 16686:16686 \
-p 4317:4317 \
-p 4318:4318 \
jaegertracing/all-in-one:1.36
-
The COLLECTOR_OTLP_ENABLED
environment variable must be set to true
to enable the OpenTelemetry Collector.
-
The 4318
port is the OTLP/HTTP port and the 4317
port is the OTLP/GRPC port that isn’t supported by the OpenTelemetry plugin yet.
Set up an OpenTelemetry Collector
This section is required if you are using an incompatible OpenTelemetry APM vendor.
Create a config file (otelcol.yaml
) for the OpenTelemetry Collector:
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
logging:
loglevel: debug
zipkin:
endpoint: "http://some.url:9411/api/v2/spans"
tls:
insecure: true
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [logging, zipkin]
logs:
receivers: [otlp]
processors: [batch]
exporters: [logging]
Run the OpenTelemetry Collector with Docker:
docker run --name opentelemetry-collector \
-p 4317:4317 \
-p 4318:4318 \
-p 55679:55679 \
-v $(pwd)/otelcol.yaml:/etc/otel-collector-config.yaml \
otel/opentelemetry-collector-contrib:0.52.0 \
--config=/etc/otel-collector-config.yaml
See the OpenTelemetry Collector documentation for more information.
serviceで有効にする
routeで有効にする
consumerで有効にする
グローバルに有効にする
Kong Admin API
Konnect API
Kubernetes
Declarative (YAML)
Konnect Terraform
次のリクエストを行います。
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": "http://<opentelemetry-backend>:4318/v1/traces",
"logs_endpoint": "http://<opentelemetry-backend>:4318/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":"http://<opentelemetry-backend>:4318/v1/traces","logs_endpoint":"http://<opentelemetry-backend>:4318/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: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/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: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/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 = "http://<opentelemetry-backend>:4318/v1/traces"
logs_endpoint = "http://<opentelemetry-backend>:4318/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
}
}
Kong Admin API
Konnect API
Kubernetes
Declarative (YAML)
Konnect Terraform
次のリクエストを行います。
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": "http://<opentelemetry-backend>:4318/v1/traces",
"logs_endpoint": "http://<opentelemetry-backend>:4318/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":"http://<opentelemetry-backend>:4318/v1/traces","logs_endpoint":"http://<opentelemetry-backend>:4318/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: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/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: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/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 = "http://<opentelemetry-backend>:4318/v1/traces"
logs_endpoint = "http://<opentelemetry-backend>:4318/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
}
}
Kong Admin API
Konnect API
Kubernetes
Declarative (YAML)
Konnect Terraform
次のリクエストを行います。
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": "http://<opentelemetry-backend>:4318/v1/traces",
"logs_endpoint": "http://<opentelemetry-backend>:4318/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":"http://<opentelemetry-backend>:4318/v1/traces","logs_endpoint":"http://<opentelemetry-backend>:4318/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: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/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: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/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 = "http://<opentelemetry-backend>:4318/v1/traces"
logs_endpoint = "http://<opentelemetry-backend>:4318/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
}
}
Kong Admin API
Konnect API
Kubernetes
Declarative (YAML)
Konnect Terraform
次のリクエストを行います。
curl -X POST http://localhost:8001/plugins/ \
--header "accept: application/json" \
--header "Content-Type: application/json" \
--data '
{
"name": "opentelemetry",
"config": {
"traces_endpoint": "http://<opentelemetry-backend>:4318/v1/traces",
"logs_endpoint": "http://<opentelemetry-backend>:4318/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":"http://<opentelemetry-backend>:4318/v1/traces","logs_endpoint":"http://<opentelemetry-backend>:4318/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: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/v1/logs
resource_attributes:
service.name: kong-dev
plugin: opentelemetry
宣言型構成ファイルにplugins
エントリを追加します。
plugins:
- name: opentelemetry
config:
traces_endpoint: http://<opentelemetry-backend>:4318/v1/traces
logs_endpoint: http://<opentelemetry-backend>:4318/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 = "http://<opentelemetry-backend>:4318/v1/traces"
logs_endpoint = "http://<opentelemetry-backend>:4318/v1/logs"
resource_attributes = {
service.name = "kong-dev"
}
}
control_plane_id = konnect_gateway_control_plane.my_konnect_cp.id
}