Kubernetes
通过定期访问 K8s APIServer 相关接口(类似 kubectl get 内部也是访问APIServer ),采集集群主要的状态信息,例如 节点数,各个节点的具体状态,各个Pod的具体状态等。
前置条件
- 需要在被监控的 Kubernetes 集群下部署 SmartGate。
- ONE平台能够与被监控的 Kubernetes 集群通信。
开始使用
使用SmartGate 监听集群与 Prometheus-Operator CRD方案类似。ServiceMonitor 和 PodMonitor 是 Kubernetes 里面的自定义资源(CRD),以声明方式指定需要监控的目标。
| CRD | 用途说明 |
|---|---|
| PodMonitor | 采集单个 Pod 的指标(通过标签选择) |
| ServiceMonitor | 采集 Service 的指标(通过标签选择) |
SmartGate中支持两种 CRD 资源 PodMonitor 和 ServiceMonitor的必要配置如下
# PodMonitor 组件推荐配置样例
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
namespace: bonree-agent # namespace不允许修改
name: pod-monitor-{NAME_RANDOM_SUFFIX_NO} # name可以修改,但不可与现有的重复
spec:
namespaceSelector:
matchNames:
# 这边配置要监控的服务所在的命名空间,可以配置多个,不配置则表示所有命名空间
- defaultNamespace
selector:
matchLabels:
# 这边配置要监控的服务的标签label
foo01: bar01
foo02: bar02
podMetricsEndpoints:
- scheme: https # http 或者 https
port: metrics # 名称为metrics的pod端口
path: /metrics # 设置指标的路径
tlsConfig:
insecureSkipVerify: true
relabelings: []
# ServiceMonitor 组件推荐配置样例
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
namespace: bonree-agent # namespace不允许修改
name: service-monitor-{NAME_RANDOM_SUFFIX_NO} # name可以修改,但不可与现有的重复
spec:
namespaceSelector:
matchNames:
# 这边配置要监控的服务所在的命名空间,可以配置多个,不配置则表示所有命名空间
- defaultNamespace
selector:
matchLabels:
# 这边配置要监控的服务的标签label
foo01: bar01
foo02: bar02
endpoints:
- scheme: https # http 或者 https
path: /metrics # 设置指标的路径
bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
tlsConfig:
insecureSkipVerify: true
relabelings: []
配置数据流
- ONE 平台基于以上两种CRD资源,封装了开箱即用的 Kubernetes 控制面的指标采集模板,支持以下组件
- API Server
- Kube Contiller Manager
- Kube Scheduler
- CoreDNS
- ETCD
- Kubelet
- Nginx Ingress Controller
- Kube State Metrics
- 也可以根据所需监控场景的需要,手动配置数据流。
验证
- 在 观测洞察 -> 数据模型 ->指标 下查看对应的指标注册数据。
- 在 观测洞察 -> 数据探索 下查看对应指标数据。