美文网首页
OpenShift Prometheus(Operator)对接

OpenShift Prometheus(Operator)对接

作者: ragpo | 来源:发表于2019-09-26 19:31 被阅读0次

概要

最近在实施一个项目,将客户从原有的数人云 mesos+marathon 迁移至 Openshift,迁移的主要原因有两个,一是现有mesos+marathon平台出现故障时能够解决问题的人不多(数人云已被收购),能够查找的相关资料也少,运维成本很高,用openshift,是企业级产品,并且社区也活跃,有问题解决问题的成功率也大大提升了,如果再买红帽的订阅服务或人天服务,还能够有红帽原厂或红帽合作伙伴的大力支持;二是现在很多开源的软件部署方式都大力支持K8S和openshift,当客户想要快速搭建环境时,mesos+marathon平台就捉襟见肘了。

需求

客户原有的 mesos+marathon 监控用的是prometheus,应用本身暴露了一个数据采集接口给prometheus进行采集,现在上了openshift,自然使用openshift的prometheus,openshift的prometheus使用的是operator进行部署,和原来的部署配置方式有些差异,接下来就进行对接配置。

Prometheus(Operator)简介

摘抄自一个大牛博客的介绍(文后会附上链接):

要了解Prometheus Operator能做什么,其实就是要了解Prometheus Operator为我们提供了哪些自定义的Kubernetes资源,列出了Prometheus Operator目前提供的️4类资源:
Prometheus:声明式创建和管理Prometheus Server实例;
ServiceMonitor:负责声明式的管理监控配置;
PrometheusRule:负责声明式的管理告警配置;
Alertmanager:声明式的创建和管理Alertmanager实例。
简言之,Prometheus Operator能够帮助用户自动化的创建以及管理Prometheus Server以及其相应的配置。

配置ServiceMonitor

当我们需要添加一个监控项,就添加ServiceMonitor就可以了,operator就会自动的去reload我们新添加的监控项了。不过首先我们得创建一个应用对应的service。

  • 创建service
    注意spec.ports.name这个值。
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: 2019-08-29T05:14:53Z
  labels:
    app: xxx-product-service
    prometheus: k8s
  name: xxx-product-service
  namespace: xxx-poc
  resourceVersion: "13541805"
  selfLink: /api/v1/namespaces/xxx-poc/services/xxx-product-service
  uid: ef06651a-ca1b-11e9-9a49-005056af6df7
spec:
  clusterIP: 172.30.80.126
  ports:
  - name: xxx-product
    port: 10002
    protocol: TCP
    targetPort: 10002
  selector:
    deploymentconfig: xxx-product-service
  sessionAffinity: None
  type: ClusterIP
status:
  loadBalancer: {}
  • 创建ServiceMonitor
    配置项简介
    metadata.name:这个ServiceMonitor的名称
    spec.endpoints.interval: 采集数据的间隔
    spec.endpoints.port:采集数据的端口,对应service里面对应的port-name
    spec.endpoints.scheme:采集数据的协议
    spec.endpoints.path:采集数据的路径
    spec.namespaceSelector:指定需要监控的应用的所在项目
    spec.selector:指定应用对应的service标签
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  labels:
    k8s-app: prometheus
  name: xxx-product-service
spec:
  endpoints:
  - interval: 10s
    port: xxx-product
    scheme: http
    path: /prometheus
  namespaceSelector:
    matchNames:
    - xxx-poc
  selector:
    matchLabels:
      prometheus: k8s
  • 查看servicemonitor
$ oc get crd
NAME                                    CREATED AT
alertmanagers.monitoring.coreos.com     2019-07-29T07:47:35Z
prometheuses.monitoring.coreos.com      2019-07-29T07:47:35Z
prometheusrules.monitoring.coreos.com   2019-07-29T07:47:35Z
servicemonitors.monitoring.coreos.com   2019-07-29T07:47:35Z
$ oc get servicemonitors.monitoring.coreos.com
NAME                          AGE
alertmanager                  42d
cluster-monitoring-operator   42d
kube-apiserver                42d
kube-controllers              42d
kube-state-metrics            42d
kubelet                       42d
node-exporter                 42d
prometheus                    42d
prometheus-operator           42d
sephora-product-service       11d
$ oc get servicemonitors sephora-product-service -o yaml
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  creationTimestamp: 2019-08-29T06:52:52Z
  generation: 1
  labels:
    k8s-app: prometheus
  name: sephora-product-service
  namespace: openshift-monitoring
  resourceVersion: "13566487"
  selfLink: /apis/monitoring.coreos.com/v1/namespaces/openshift-monitoring/servicemonitors/sephora-product-service
  uid: 9f2c4bcf-ca29-11e9-9a49-005056af6df7
spec:
  endpoints:
  - interval: 10s
    path: /prometheus
    port: sephora-product
    scheme: http
  namespaceSelector:
    matchNames:
    - sephora-poc
  selector:
    matchLabels:
      prometheus: k8s

查看 Prometheus 新添加的配置项

可以看到现在的prometheus配置文件里面新增了我们配置的ServiceMonitor内容,不过添加了一些新内容,具体可以查prometheus文档关于operator的部分。



去 Prometheus 那里查看数据





参考链接

https://yunlzheng.gitbook.io/prometheus-book/

相关文章

网友评论

      本文标题:OpenShift Prometheus(Operator)对接

      本文链接:https://www.haomeiwen.com/subject/wzamyctx.html