Rancher 自带监控收集导入 K8S 集群的 ETCD 数据
本文永久链接: https://www.xtplayer.cn/rancher/monitors/rancher-monitors-collection-external-etcd-data/
目前,rancher 自带监控暂时只支持收集 rancher 自定义集群的 ETCD 监控数据。对于 rke 创建并导入或者其他工具创建并导入的 k8s 集群,因为架构的差异,暂时不能直接支持监控 ETCD 监控数据。
rancher 内置监控也是通过 prometheus-operator 部署,只需要自定义一些 serviceMonitor 配置即可实现其他类型集群 ETCD 监控数据收集。
方案介绍
serviceMonitor 是通过对 service 获取数据的一种方式。prometheus-operator 可以通过 serviceMonitor 自动识别带有某些 label 的 service,并从这些 service 获取数据。serviceMonitor 也是由 prometheus-operator 自动发现。
对应一些启用 ssl 认证的服务,需要提供 ssl 证书给 prometheus 用以进行认证 。首先创建一个 secret 用来存放 ssl 证书,再把证书挂载到 prometheus 容器内。接下来创建 ServiceMonitor 对象,用于 Prometheus 添加监控项,再为 ServiceMonitor 对象关联 metrics 数据接口对应的 Service 对象,确保通过 Service 对象可以正确获取到 metrics 数据。
创建 Secrets 挂载证书
在 ETCD 节点中,通过以下命令去创建 ETCD 证书密文:
kubectl create secret generic exporter-etcd-cert -n cattle-prometheus \ |
添加 Secrets 到 Prometheus 容器
依次进入 集群|工具|监控 ,在监控配置页面点击右下角的 显示高级选项。添加 添加应答,添加以下应答:
prometheus.secrets[0]=exporter-etcd-cert |
创建 etcd-server svc,把外部 etcd 服务引入 k8s 集群
访问 system 项目|服务发现,统计 添加 DNS 记录。
选择 外部 IP 地址,并在右侧的 目标 IP 地址 填写 etcd 节点 ip,命名空间选择
cattle-prometheus
点击右侧 显示高级选项,
类型选择 headless service
添加端口映射
在底部 标签与注释 中添加以下两个标签,最后点击创建。
jobLabel=exporter-etcd-server
app=exporter-etcd-server
创建 etcd ServiceMonitor 对象
保存以下内容为:prometheus-serviceMonitorEtcd.yaml
,然后执行 kubectl apply -f prometheus-serviceMonitorEtcd.yaml
apiVersion: monitoring.coreos.com/v1 |
验证 prometheus 状态
点击 system 项目|应用商店 的访问入口,进入 prometheus 管理界面
点击 Status|Targets 和 Status|Service Discovery 查看状态
验证 Grafana 状态
与 prometheus 相同, 点击 system 项目|应用商店 的访问入口,进入 Grafana 管理界面,点击左上角的 Home
接着点击 ETCD。
如果结果如下图显示,则说明数据可以正常显示,配置成功。