このページは、まだ日本語ではご利用いただけません。翻訳中です。
    
  
      
        
            
              
              古いプラグインバージョンのドキュメントを閲覧しています。
            
              
              
            
        
      
      
  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
}