kube-prometheus 添加集群内外监控指标
然后使用命令 kubectl -n monitoring edit Prometheus k8s ,其中命令中的k8s是Prometheus这个资源的名字,不同环境中的名字可能不同。prometheus的配置默认是不能修改的,目前可以通过新增prometheus-additional.yaml来添加新增配置。正常情况下,此时就可以在prometheus监控页面看到kafka-exporter这个监
添加集群内target
添加权限
RBAC 从 Kubernetes v1.6 处于beta版本,从 v1.8 开始,RBAC已作为 稳定的功能。现在部署的 K8s 集群,一般都有 RBAC 权限控制,需要跨 namespace 添加 metric,先给 prometheus 添加权限。
创建服务账户,编写 sa-prometheus.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
namespace: monitoring
name: prometheus
创建集群角色以及分配相应的权限,编写 clusterrole-prometheus.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus
rules:
- apiGroups: [""]
resources:
- nodes
- nodes/metrics
- services
- endpoints
- pods
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources:
- configmaps
verbs: ["get"]
- apiGroups:
- networking.k8s.io
resources:
- ingresses
verbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]
verbs: ["get"]
把 clusterrole 与 serviceAccount 绑定,编写 clusterrolebinding-prometheus.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: prometheus
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: prometheus
subjects:
- kind: ServiceAccount
name: prometheus
namespace: monitoring
把这三个文件依次创建,然后修改 prometheus(CRD) 的 K8s 的 serviceAccount,把之前的 prometheus-k8s 修改为刚刚创建的服务账户 prometheus。
kubectl edit -n monitoring prometheus k8s
现在就可以跨 namespce 添加指标了。
添加 target
添加集群内 target,需要用到 CRD (Custom Resource Define) 自定义资源定义 ServiceMonitor。该 CRD 定义了如何监控一组动态的服务,使用标签选择来定义哪些 Service 被选择进行监控。需要注意的是,被监控的服务有暴露 metrics 端点,可以先用 curl 测试
curl 'svc_ip:port'/metrics
查看 peometheus 的配置。
kubectl -n monitoring describe prometheus k8s
可以看到 Namespace Selector 和 Service Monitor Selector 选择器都为空,表示它可以读取集群内所有的 ServiceMonitor。编写 servicemonitor.yaml 文件:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: dingtalk-servicemonitor
namespace: monitoring #如果 prometheus 配置有指定 namespace,需要在该namespace下创建
labels: #如果 prometheus 配置有指定 labelSelector,需要添加对应的标签
team: frontend
spec:
namespaceSelector: #指定目标 svc 的 namespace,如果是 monitoring 可以省略
matchNames:
- default
selector: #添加标签选择器,筛选具有该标签的 svc
matchLabels:
app: example-app
endpoints:
- port: web #这里的 port 只能填 string 类型
过一会去 prometheus web 可以查看到 configuration 有更新,
查看 web 页面的 target,
我这里做的测试,被监控的服务没有暴露 metrics 端点,所以拿不到指标。
添加集群外target
添加 prometheus-additional.yaml
prometheus的配置默认是不能修改的,目前可以通过新增prometheus-additional.yaml来添加新增配置。
- job_name: kafka #有多个 job 可在下面以列表的形式添加
honor_timestamps: true
metrics_path: /metrics
scheme: http
static_configs:
- targets:
- 10.1.11.184:9308 # 指定 ip+端口
- 10.1.11.184:7072
- job_name: zk
honor_timestamps: true
metrics_path: /metrics
scheme: http
static_configs:
- targets:
- 10.1.11.184:7000 # 指定 ip+端口
- 10.1.11.185:7000
创建promethues的secret对象
kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml -n monitoring
#更新的话删除,再创建
kubectl delete secret additional-configs -n monitoring
资源对象Promtheus中添加additionalScrapeConfigs 字段
先使用 kubectl –n monitoring get prometheus 查看资源名字
然后使用命令 kubectl -n monitoring edit prometheus k8s ,其中命令中的k8s是Prometheus(CRD)这个资源的名字,不同环境中的名字可能不同
...
spec:
additionalScrapeConfigs:
name: additional-configs #刚刚创建的 secret 的名字
key: prometheus-additional.yaml
...
正常情况下,此时就可以在prometheus监控页面看到kafka-exporter这个监控项了
更多推荐
所有评论(0)