在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页面上点击”添加数据”。

image.png
image.png

将连接到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
image.png

弹性代理的安装

上記にてOpenTelemetryのテレメトリーはElasticに取り込むことができました。
さらにElastic Agentを監視対象のKubernetesクラスタのDaemonsetとしてインストールすることで、Kubernetesの各種メトリクスや、コンテナログを収集することができます。

Elastic Agentのインストールは、Fleet機能で集中管理するタイプと、スタンドアロンで集中管理しないタイプがあります。今回はさくっとできるスタンドアロンでの手順です。以下のドキュメントを参照しています。
https://www.elastic.co/guide/en/fleet/current/running-on-kubernetes-standalone.html

image.png

その後、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
image.png
image.png

以下でElastic AgentをDaemonsetとしてデプロイします。

kubectl create -f elastic-agent-standalone-kubernetes.yaml
kubectl -n kube-system get pods
image.png

通过分析日志,查看APM的相关性。

当您安装Elastic Agent时,会自动与OpenTelemetry收集的信息进行关联。

你可以从APM(应用性能管理)的每个服务的Infrastructure选项卡中查看它所属的Pod或k8s的节点(主机)的信息。

image.png
image.png
image.png
image.png
image.png
image.png
image.png

eBPF性能分析

image.png
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
image.png

以上 – the above

广告
将在 10 秒后关闭
bannerAds