1.Prometheus Operator的工作原理
从概念上来讲Operator就是针对管理特定应用程序的,在Kubernetes基本的Resource和Controller的概念上,以扩展Kubernetes api的形式。帮助用户创建,配置和管理复杂的有状态应用程序。从而实现特定应用程序的常见操作以及运维自动化。
2.Prometheus Operator四类资源
Prometheus:声明式创建和管理Prometheus Server实例;
ServiceMonitor:负责声明式的管理监控配置;
PrometheusRule:负责声明式的管理告警配置;
Alertmanager:声明式的创建和管理Alertmanager实例。
2.1查看各类资源下的实例
Prometheus(prometheus-server服务)
kubectl get prometheuses.monitoring.coreos.com -n monitoring
NAME VERSION REPLICAS AGE
k8s 2.32.1 1 6d20h
ServiceMonitor(各种监控配置)
kubectl get servicemonitors.monitoring.coreos.com -n monitoring
NAME AGE
alertmanager-main 6d20h
blackbox-exporter 6d20h
coredns 6d20h
grafana 6d20h
kube-apiserver 6d20h
kube-controller-manager 6d20h
kube-scheduler 6d20h
kube-state-metrics 6d20h
kubelet 6d20h
node-exporter 6d20h
prometheus-adapter 6d20h
prometheus-k8s 6d20h
prometheus-operator 6d20h
PrometheusRule(各种告警配置)
kubectl get prometheusrules.monitoring.coreos.com -n monitoring
NAME AGE
alertmanager-main-rules 6d20h
kube-prometheus-rules 6d20h
kube-state-metrics-rules 6d20h
kubernetes-monitoring-rules 6d20h
node-exporter-rules 6d20h
prometheus-k8s-prometheus-rules 6d20h
prometheus-operator-rules 6d20h
Alertmanager(alertmanager服务)
kubectl get alertmanagers.monitoring.coreos.com -n monitoring
NAME VERSION REPLICAS AGE
main 0.23.0 1 6d20h
3.介绍每个服务、端口的作用及采集端点
3.1 prometheus-k8s(监控服务端)
prometheus-k8s ClusterIP 192.168.164.132 <none> 9090/TCP,8080/TCP 6d20h
Port 9090:默认监听端口
9090 端口是 Prometheus Server 的主要 HTTP API 端口。
Prometheus 用户可以使用这个端口来查询、检索和查看监控数据,以及执行 PromQL 查询来生成图形和警报规则。
Port 8080:默认监听端口
8080 端口通常是 Prometheus Pushgateway 的默认监听端口。
Pushgateway 是一个中间代理,允许短期任务(如批处理任务或短暂服务)将其指标数据推送到 Prometheus。Pushgateway 将这些数据保留,使其可以被 Prometheus Server 拉取。
采集端点:http://podIP:9090/metrics 、http://podip:8080/metrics
3.2 prometheus-adapter
prometheus-adapter ClusterIP 192.168.82.52 <none> 443/TCP 6d20h
它的主要作用是将 Prometheus 中的监控指标(metrics)转换为 Kubernetes 的自定义指标(Custom Metrics)。这样,Kubernetes 可以根据这些自定义指标来自动伸缩应用程序副本、管理资源分配和进行其他决策。
采集端点:https://podIP:6443/metrics
3.3 node-exporter
node-exporter ClusterIP None <none> 9100/TCP 6d20h
作用:收集节点的cpu、内存、磁盘等硬件信息
Port 9100:默认监听端口
3.4 kubelet
kubelet ClusterIP None <none> 10250/TCP,10255/TCP,4194/TCP 8d
采集端点:
https://podIP:10250/metrics
https://podIP:10250/metrics/cadvisor
https://podIP:10250/metrics/probes
10250/metrics:
这是 kubelet 的默认监控端点,提供与 kubelet 本身相关的监控数据。
这些指标包括了 kubelet 的运行状况、节点资源使用情况和其他与 kubelet 运行有关的信息。
Prometheus 或其他监控工具可以使用此端点来抓取 kubelet 的性能数据以进行监控和警报。
10250/metrics/cadvisor:
10250/metrics/cadvisor 端点提供与容器监控相关的数据,特别是使用 cAdvisor (Container Advisor) 工具收集的容器相关指标。
cAdvisor 是一个用于监控容器资源使用的开源工具,kubelet 集成了 cAdvisor 来获取容器的性能指标。
Prometheus 或其他监控工具可以使用此端点来抓取容器的性能数据,如 CPU 使用率、内存使用率等。
10250/metrics/probes:
10250/metrics/probes 端点用于探测 kubelet 的运行状况。
这个端点提供了用于检查 kubelet 是否运行正常的指标,包括 kubelet 健康检查、活动状态检查和就绪状态检查等。
监控工具或健康检查工具可以使用此端点来确保 kubelet 服务正常工作。
3.5 kube-state-metrics
主要作用:
提供 Kubernetes 资源状态数据:
kube-state-metrics 通过 API Server 查询 Kubernetes 集群的资源对象(例如,Pods、Nodes、Services)的状态信息。
它将这些状态信息转化为 Prometheus 格式的指标,使其能够被 Prometheus Server 捕获。
启用灵活的监控和警报规则:
Prometheus 是一个强大的监控系统,但它需要指标数据以便执行查询和创建警报规则。
kube-state-metrics 为 Prometheus 提供了丰富的 Kubernetes 集群状态信息,使用户能够编写自定义查询和警报规则来监视集群的各种状态。
3.6 blackbox-exporter
主要作用是执行针对网络应用和服务的主动健康检查和探测,以收集关于这些应用和服务的信息,将其转换为 Prometheus 格式的指标,并提供给 Prometheus 进行监控和警报。
Blackbox Exporter 支持多种协议,包括 HTTP、HTTPS、TCP、ICMP、DNS 等,以便监控各种类型的服务和应用程序。