最近一直在学习k8s里的prometheus-operator。这个东西与传统主机里部署的prometheus要复杂的多。因为他把很多东西都抽象了成k8s里的resouce资源。所以搞起来就相对复杂很多。
首先就是安装这个东西。我用的办法就是helm安装
具体可以参照 https://www.jianshu.com/p/973cbbbaab22
安装完以后k8s里的pod 、以及各个组建基本都有监控了。
下面说下,如果想用这个东西监控一下k8s集群外的一个服务咋搞
比如,有一个服务 通过192.168.1.103:5000/metrics访问
得到 结果就是 connect 8
1、先定义监控服务器serivce \ endpoint 资源
---
apiVersion: v1
kind: Service
metadata:
name: prometheus-operator-flask
labels:
app: flask
spec:
externalName: 192.168.1.103
type: ExternalName
ports:
- name: metrcis
port: 5000
targetPort: 5000
protocol: TCP
type: ClusterIP
clusterIP: None
---
apiVersion: v1
kind: Endpoints
metadata:
name: prometheus-operator-flask
labels:
app: flask
subsets:
- addresses:
- ip: 192.168.1.103
nodeName: flask
ports:
- name: metrcis
port: 5000
protocol: TCP
注意svc 里的 externalName 要替换成被监控服务的ip,endpoint里的ip、port也要替换,另外labels 要一致
2、定义servicemonitor
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app: prometheus-operator-flask
release: prometheus-operator-1577513747
name: prometheus-operator-flask
namespace: default
spec:
endpoints:
- interval: 30s
port: metrcis
selector:
matchLabels:
app: flask
namespaceSelector:
matchNames:
- default
注意地方 servicemonitor里的label 地址,不能不写,也不能只写app 。具体原因为啥还不知道。
kubectl apply -f servicemonitor.yaml -f svc.yaml
执行以后等大概2、3分钟,以后
再到prometheus页面上status 里的 target 就能看到这样的东西。
## [default/prometheus-operator-flask/0 (1/1 up)](http://192.168.1.103:30260/targets#job-default%2fprometheus-operator-flask%2f0)
endpoint 状态是ok的。
然后到graph里 用prmsql 就能搜索到connect 这个监控项了。