为每个要自动检测的 Pod 添加一个 Pod 模板注释
编辑为每个要自动检测的 Pod 添加一个 Pod 模板注释编辑
要自动检测部署,请更新其 spec.template.metadata.annotations
以包含 co.elastic.apm/attach
键。Webhook 将此键的值与 Helm 值文件定义的 webhookConfig.agents
值匹配。
例如,如果您的 Webhook 值文件包含以下内容
... webhookConfig: agents: java: ...
那么您的 co.elastic.apm/attach
值应为 java
apiVersion: apps/v1 kind: Deployment metadata: # ... spec: replicas: 1 template: metadata: annotations: co.elastic.apm/attach: java labels: # ... spec: #...
APM 连接器配置 |
通过 spec.template.metadata.annotations
值,您可以为每个部署设置自定义环境变量和镜像。例如,您的 Helm 值文件可能配置了多个部署:java-dev
可能与 java-prod
具有不同的 APM 环境,而 backend2
使用与其他部署不同的 APM 代理。
agents: java-dev: image: docker.elastic.co/observability/apm-agent-java:latest artifact: "/usr/agent/elastic-apm-agent.jar" environment: ELASTIC_APM_SERVER_URL: "http://192.168.1.10:8200" ELASTIC_APM_ENVIRONMENT: "dev" ELASTIC_APM_LOG_LEVEL: "debug" ELASTIC_APM_PROFILING_INFERRED_SPANS_ENABLED: "true" JAVA_TOOL_OPTIONS: "-javaagent:/elastic/apm/agent/elastic-apm-agent.jar" java-prod: image: docker.elastic.co/observability/apm-agent-java:1.44.0 artifact: "/usr/agent/elastic-apm-agent.jar" environment: ELASTIC_APM_SERVER_URL: "http://192.168.1.11:8200" ELASTIC_APM_ENVIRONMENT: "prod" ELASTIC_APM_LOG_LEVEL: "info" ELASTIC_APM_PROFILING_INFERRED_SPANS_ENABLED: "true" JAVA_TOOL_OPTIONS: "-javaagent:/elastic/apm/agent/elastic-apm-agent.jar" backend2: image: docker.elastic.co/observability/apm-agent-nodejs:latest artifact: "/opt/nodejs/node_modules/elastic-apm-node" environment: NODE_OPTIONS: "-r /elastic/apm/agent/elastic-apm-node/start" ELASTIC_APM_SERVER_URL: "http://192.168.1.11:8200" ELASTIC_APM_SERVICE_NAME: "petclinic" ELASTIC_APM_LOG_LEVEL: "info"
在 values.yaml
中定义的唯一 webhookConfig.agents
值是 java
和 nodejs
。使用其他值时,您必须显式指定 image
、artifact
和 *OPTIONS
值。
Webhook 和此处定义的环境变量优先于 Kubernetes 部署中定义的值 - 覆盖它们。例如,如果您的镜像使用 JAVA_TOOL_OPTIONS,则您的镜像设置的值将被忽略,而优先使用此处或 values.yaml
中设置的值。