在GKE上快速使用Elastic APM、日志、基础设施加eBPF分析监控OpenTelemetry Demo应用程序
首先
您可以使用此OpenTelemetry演示,在Kubernetes上轻松运行应用程序,并尝试各种Elastic可观察性功能。
https://opentelemetry.io/docs/demo/kubernetes-deployment/.
本文概述了如何使用GKE。
步骤
创建GKE集群并部署Otel Demo应用程序。
我会在以下位置创建GKE集群。按照Demo应用文档的步骤,部署Otel Demo应用。
CLUSTER_NAME=nobu-test-cluster
REGION=us-east4
gcloud container clusters create $CLUSTER_NAME --region=$REGION
gcloud components install gke-gcloud-auth-plugin
gcloud container clusters get-credentials $CLUSTER_NAME --region=$REGION
kubectl get namespaces
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install $CLUSTER_NAME open-telemetry/opentelemetry-demo
kubectl get deployments
获取连接到弹性云的信息。
在Kibana的APM页面上点击”添加数据”。


将连接到Elasticsearch的配置应用于Demo应用中的OTel Collector。
请创建以下Helm values文件。请将之前记录的URL和令牌替换为下面的和。(令牌的格式为:Authorization: “Bearer QlXHQrkIEFY6IMiNCl”)
default:
envOverrides:
- name: OTEL_RESOURCE_ATTRIBUTES
value: service.name=$(OTEL_SERVICE_NAME),service.namespace=opentelemetry-demo,deployment.environment=sample-GKE
opentelemetry-collector:
config:
exporters:
otlphttp/elastic:
endpoint: "<ELASTIC_APM_SERVER_URL>"
headers:
# Elastic APM Server secret token
Authorization: "Bearer <ELASTIC_APM_SECRET_TOKEN>"
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [otlphttp/elastic]
metrics:
receivers: [otlp]
exporters: [logging, otlphttp/elastic]
logs:
receivers: [otlp]
exporters: [logging, otlphttp/elastic]
使用以下命令,将上述配置应用到Kubernetes中。
helm upgrade $CLUSTER_NAME open-telemetry/opentelemetry-demo --values my-values-file.yaml

弹性代理的安装
上記にてOpenTelemetryのテレメトリーはElasticに取り込むことができました。
さらにElastic Agentを監視対象のKubernetesクラスタのDaemonsetとしてインストールすることで、Kubernetesの各種メトリクスや、コンテナログを収集することができます。
Elastic Agentのインストールは、Fleet機能で集中管理するタイプと、スタンドアロンで集中管理しないタイプがあります。今回はさくっとできるスタンドアロンでの手順です。以下のドキュメントを参照しています。
https://www.elastic.co/guide/en/fleet/current/running-on-kubernetes-standalone.html

その後、Elastic Agentのインストール手順を実施していきます。
Kubernetesのメトリック収集のために以下を実施
git clone https://github.com/kubernetes/kube-state-metrics.git
kubectl apply -k kube-state-metrics
下载用于将Elastic Agent部署到Kubernetes的部署文件。
curl -L -O https://raw.githubusercontent.com/elastic/elastic-agent/8.11/deploy/kubernetes/elastic-agent-standalone-kubernetes.yaml


以下でElastic AgentをDaemonsetとしてデプロイします。
kubectl create -f elastic-agent-standalone-kubernetes.yaml
kubectl -n kube-system get pods

通过分析日志,查看APM的相关性。
当您安装Elastic Agent时,会自动与OpenTelemetry收集的信息进行关联。
你可以从APM(应用性能管理)的每个服务的Infrastructure选项卡中查看它所属的Pod或k8s的节点(主机)的信息。







eBPF性能分析

helm repo add elastic https://helm.elastic.co
helm install --create-namespace -n=universal-profiling universal-profiling-agent \
--set "projectID=1,secretToken=qsaJN8eynrQxQQea" \
--set "collectionAgentHostPort=xxxxxxx.profiling.us-west1.gcp.cloud.es.io:443" \
--set "version=8.11.1" \
--version=8.11.1 \
elastic/pf-host-agent
kubectl -n universal-profiling get pods

以上 – the above