本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
添加新的 Prometheus 抓取目标的教程: Amazon EKS 和 Kubernetes 集群上的 Redis
本教程提供了实践介绍,以抓取 Amazon EKS 和 Kubernetes 上示例 Redis 应用程序的 Prometheus 指标。Redis (https://redis.io/)
是开源(BSD 许可)、内存中数据结构存储,用作数据库、缓存和消息代理。有关更多信息,请参阅
redis_exporter(经 MIT 许可的许可证)用于在指定的端口(默认值:0.0.0.0:9121)上公开 Redis prometheus 指标。有关更多信息,请参阅
本教程使用以下两个 Docker Hub 存储库中的 Docker 映像:
安装公开 Prometheus 指标的示例 Redis 工作负载
-
设置示例 Redis 工作负载的命名空间。
REDIS_NAMESPACE=redis-sample
-
如果您在具有 Fargate 启动类型的集群上运行 Redis,则需要设置Fargate配置文件。要设置 配置文件,请输入以下命令。Replace
MyCluster
替换为集群的名称。eksctl create fargateprofile --cluster
MyCluster
\ --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE -
输入以下命令以安装示例 Redis 工作负载。
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/redis/redis-traffic-sample.yaml \ | sed "s/{{namespace}}/$REDIS_NAMESPACE/g" \ | kubectl apply -f -
-
安装包括一个名为 的服务
my-redis-metrics
,该服务在端口 9121 上公开 Redis Prometheus 指标 输入以下命令以获取服务的详细信息:kubectl describe service/my-redis-metrics -n $REDIS_NAMESPACE
在结果的
Annotations
部分中,您将看到两个与 CloudWatch 代理的 Prometheus 抓取配置匹配的注释,以便它可以自动发现工作负载:prometheus.io/port: 9121 prometheus.io/scrape: true
相关的 Prometheus 抓取配置可在
- job_name: kubernetes-service-endpoints
或 的kubernetes-eks.yaml
部分中找到kubernetes-k8s.yaml
。
开始在 中收集 Redis Prometheus 指标 CloudWatch
-
输入以下命令之一以下载
kubernetes-eks.yaml
或kubernetes-k8s.yaml
文件的最新版本。对于具有 EC2 启动类型的 Amazon EKS 集群,请输入此命令。curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml
对于具有 Amazon EKS 启动类型的 Fargate 集群,请输入此命令。
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml
对于在 Amazon EC2 实例上运行的 Kubernetes 集群,请输入此命令。
curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
-
使用文本编辑器打开 文件,然后找到
cwagentconfig.json
部分。添加以下子部分并保存更改。确保缩进遵循现有模式。{ "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName"]], "metric_selectors": [ "^redis_net_(in|out)put_bytes_total$", "^redis_(expired|evicted)_keys_total$", "^redis_keyspace_(hits|misses)_total$", "^redis_memory_used_bytes$", "^redis_connected_clients$" ] }, { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName","cmd"]], "metric_selectors": [ "^redis_commands_total$" ] }, { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName","db"]], "metric_selectors": [ "^redis_db_keys$" ] },
您添加的部分将 Redis 指标放在CloudWatch代理允许列表中。有关这些指标的列表,请参阅以下部分。
-
如果已在此集群中部署具有 Prometheus 支持的 CloudWatch 代理,则必须通过输入以下命令来删除它。
kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
-
通过输入以下命令之一,使用更新的配置部署 CloudWatch 代理。Replace
MyCluster
和region
以匹配您的设置。对于具有 EC2 启动类型的 Amazon EKS 集群,请输入此命令。
kubectl apply -f prometheus-eks.yaml
对于具有 Amazon EKS 启动类型的 Fargate 集群,请输入此命令。
cat prometheus-eks-fargate.yaml \ | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" \ | kubectl apply -f -对于 Kubernetes 集群,请输入此命令。
cat prometheus-k8s.yaml \ | sed "s/{{cluster_name}}/
MyCluster
/;s/{{region_name}}/region
/" \ | kubectl apply -f -
查看 Redis Prometheus 指标
本教程将以下指标发送到 中的 ContainerInsights 命名空间CloudWatch。您可以使用 CloudWatch 控制台查看该命名空间中的指标。
指标名称 | Dimensions |
---|---|
|
ClusterName,Namespace |
|
ClusterName,Namespace |
|
ClusterName,Namespace |
|
ClusterName,Namespace |
|
ClusterName,Namespace |
|
ClusterName,Namespace |
|
ClusterName,Namespace |
|
ClusterName,Namespace |
|
ClusterName,Namespace,cmd |
|
ClusterName,Namespace,db |
cmd 维度的值可以是append
:、client
、command
、config
、dbsize
、flushall
、get
、incr
、info
、latency
、 或 slowlog
。
db 维度的值可以是 db0
到 db15
。
您还可以为 Redis Prometheus 指标创建CloudWatch控制面板。
为 Redis Prometheus 指标创建控制面板
-
创建环境变量,替换下面的值以匹配您的部署。
DASHBOARD_NAME=
your_cw_dashboard_name
REGION_NAME=your_metric_region_such_as_us-east-1
CLUSTER_NAME=your_k8s_cluster_name_here
NAMESPACE=your_redis_service_namespace_here
-
输入以下命令以创建控制面板。
curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/master/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/redis/cw_dashboard_redis.json \ | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \ | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \ | sed "s/{{YOUR_NAMESPACE}}/${NAMESPACE}/g" \