通过一个叫ServiceMonitor的资源来自动发现监控目标并动态生成配置,不用再维护配置文件
通过ServiceMonitor监控应用时,如果监控没有找到目标主机的排查步骤,排查步骤大致如下:
-
确认ServiceMonitor是否成功创建。
kubectl get servicemonitors -n monitoring kube-controller-manager kube-scheduler -
确认Prometheus是否生成了相关配置。
通过web查看,Alerts/Firing告警是否有
Status/Targets是否有相关配置没有UP -
确认存在ServiceMonitor匹配的Service。
kubectl get servicemonitor -n monitoring kube-controller-manager -o yaml
通过命令查看该 serviceMonitor匹配的标签为 app.kubernetes.io/name: kube-controller-manager
通过标签再对应的命名空间找svc是否存在
$ kubectl get svc -n kube-system -l app.kubernetes.io/name=kube-controller-manager
No resources found in kube-system namespace.
没有找到,就需要手动创建service -
确认通过Service能够访问程序的Metrics接口。
$ kubectl get svc -n kube-system kube-controller-manager
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-controller-manager ClusterIP 10.99.49.19210257/TCP 37s $ curl -s 10.99.49.192:10257/metrics| tail -1
-
确认Service的端口和Scheme、ServiceMonitor一致。
port: https-metrics
scheme: https
tlsConfig:
insecureSkipVerify: true