美文网首页Amazing Arch
Helm Prometheus Operator 15分钟搞定K

Helm Prometheus Operator 15分钟搞定K

作者: 科学Jia | 来源:发表于2019-05-14 13:48 被阅读54次

    翻了无数的帖子,最后发现了Prometheus Operator监控Kubernetes集群是最简单的。

    直接贴重点,按照以下步骤可以很快搭建起k8s集群的监控:

    前提你已经知道了k8s的一些基本知识,譬如namespace,本文的安装是在namespace monitor下完成的,可以根据具体情况修改名字。

    监控前,先在namespace为monitor下,部署一个tomcat的k8s集群,等待被监控。

    kind: Service
    metadata:
      name: tomcat
      labels:
        app: tomcat
      namespace: monitor
    spec:
      selector:
        app: tomcat
      ports:
      - name: web123
        targetPort: 8080
        port: 8080
      - name: ajp
        targetPort: 8009
        port: 8009
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: tomcat
      labels:
        app: tomcat
      namespace: monitor
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: tomcat
      template:
        metadata:
          labels:
            app: tomcat
        spec:
          containers:
          - name: tomcat
            image: registry.mindsphere.cn/library/tomcat
            ports:
            - name: http
              containerPort: 8080
    ---
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: ingress-tomcat
      namespace: monitor
      annotations:
        kubernetes.io/ingress.class: "nginx"
    spec:
      rules:
      - host: tomcat.mindsphere.cn
        http:
          paths:
          - path:
            backend:
              serviceName: tomcat
              servicePort: 8080
    
    

    好,这里被监控的集群已经部署完毕。下面开始安装prometheus operator

    1. Helm 安装prometheus Operator

    helm install --name mdsp-monitor stable/prometheus-operator --version=5.7.0 --set prometheusOperator.createCustomResource=false --namespace monitor
    

    Note: 这里可能会遇到kube-state-metrics镜像拉不下来,而导致的Imagepullbackoff的错误,可以单独重新部署一下kube-state-metrics, 修改对应deploy.yaml文件里的镜像地址如下:

    image: quay.io/coreos/kube-state-metrics:v1.5.0
    

    2. ServiceMonitor.yaml

    这里特别要注意一定要填写release: xxx, 这里release: xxx 是绝对绝对不能省去的,不然ServiceMonitors是没有办法生效的。release: xxx的值就是你第一步在helm install 指定--name时候填的值,根据我这里的上下文,需要填写release: mdsp-monitor
    然后指定matchlabels: app: tomcat,这样就能监控到labels为app:tomcat的集群了。

    apiVersion: monitoring.coreos.com/v1
    kind: ServiceMonitor
    metadata:
      name: tomcat
      namespace: monitor
      labels:
        team: dev
        app: tomcat
        release: mdsp-monitor
    spec:
      namespaceSelector:
        any: true
      selector:
        matchLabels:
          app: tomcat
      endpoints:
      - port: web123
        interval: 10s
    

    执行一下apply,使其生效。

    kubectl apply -f servicemonitor.yaml -n monitor
    

    3. 暴露prometheus端口,外部可以访问

    其实有多种方式暴露端口,先用最近官网最简单的方式吧。

    apiVersion: v1
    kind: Service
    metadata:
      name: prometheus
    spec:
      type: NodePort
      ports:
      - name: web
        nodePort: 30900
        port: 9090
        protocol: TCP
        targetPort: web
      selector:
        prometheus: mdsp-monitor-prometheus-op-prometheus
    

    然后同样

    kubectl apply -f exposePrometheus.yaml -n monitor
    

    4. 暴露alert-manager的端口,外部可以访问

    跟第3步一样, 先写好yaml文件。

    apiVersion: v1
    kind: Service
    metadata:
      name: prometheus-alert
      namespace: monitor
    spec:
      type: NodePort
      ports:
      - name: web
        nodePort: 30903
        port: 9093
        protocol: TCP
        targetPort: web
      selector:
        alertmanager: mdsp-monitor-prometheus-op-alertmanager
    

    然后apply一下:

    kubectl apply -f exposeAlert.yaml -n monitor
    

    完成3和4步,可以看到集群为你生成了可以外部访问的地址,然后可以直接访问了。


    外部可以访问.png

    5. 配置grafana

    前面第一步安装,其实已经把grafana装好了。也是只需要暴露grafana让它可以外部访问:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: grafana
      namespace: monitor
    spec:
      rules:
      - host: grafana.mindsphere.cn
        http:
          paths:
          - path:
            backend:
              serviceName: mdsp-monitor-grafana
              servicePort: 3000
    

    然后apply下上面这个yaml文件

    kubectl apply -f grafana_ingress.yaml -n monitor
    

    并且在自己集群的hosts上配置对应的ip

    139.24.217.177          grafana.mindsphere.cn    # grafana.mindsphere.cn
    

    最后一步,打开grafana

    http://grafana.mindsphere.cn
    输入用户admin和密码prom-operator,便可以看到已经有一个datasource来着prometheus已经配置好了。

    grafana_datasource.png
    点击进去,点击Test按钮,会看到data source is working,说明一切就绪。
    grafana
    打开monitor下的资源使用情况,可以看到集群已经被监控了。
    资源情况

    补充一下如何在grafana里加用户

    可以不通过email来邀请,关闭掉这个按钮,点击invite,


    Add User

    然后copy invite,贴到浏览器里,就可以为这个用户设置用户名,密码和权限,这样就能多个不同的用户登陆这个监控系统了。


    Add User
    这里就可以看到有多少个用户在这个系统了。
    刚刚添加的用户权限是viewer

    报警

    to do

    参考

    https://akomljen.com/get-kubernetes-cluster-metrics-with-prometheus-in-5-minutes/

    相关文章

      网友评论

        本文标题:Helm Prometheus Operator 15分钟搞定K

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