Prometheus

KubeCube 在部署时会自动安装 Prometheus 等监控组件,以实现监控功能。本文档介绍了如何在 KubeCube 中接入用户已有的 Prometheus。

准备工作

  1. 在集群部署好 Prometheus,Prometheus 可以正常监控到集群资源的数据;

  2. 在集群中部署好 KubeCube;

    说明:部署好 KubeCube 后,由于集群内已有 Prometheus operator,多个 operator 会导致集群内 Prometheus 相关功能不可用,需要卸载 KubeCube 监控组件或删除本地 operator。

  3. 以平台管理员角色登录 KubeCube 管控集群。

步骤

1、添加 Label

由于 KubeCube 需要实现多集群监控,因此在 KubeCube 查询监控数据时,都会在 query 表达式中添加 cluster={clusterName} 来进行集群过滤。用户需要在 Prometheus 的 exporter 中添加这一 label,前端查询监控数据时才能查询到结果。

2、卸载 KubeCube 监控组件

方式一 页面操作:

  1. 点击页面右上角【切换到控制台】,点击任意空间,进入到控制台页面;

  2. 在左侧菜单栏点击【自定义资源CRD】,进入到集群级别 CRD 列表,可以点击右上方输入 “hotplug” 进行搜索,找到 “hotplugs.hotplug.kubecube.io” CRD,点击【v1】版本进入 CRD 详情页;

  3. 选择 common 实例,点击【设置YAML】,找到 spec.component. name=kubecube-monitoring,将 “status” 改成 “disabled”,即卸载 KubeCube 自带监控组件。

方式二 命令行操作:

  1. kubectl edit hotplug common
  2. 找到 spec.component. name=kubecube-monitoring,将 “status” 改成 “disabled”。

详细配置说明见 热插拔

3、部署 ServiceMonitor

查看集群资源

查看控制台内监控数据,需要部署两个 ServiceMonitor:kubelet 和 kube-state-metrics 的 ServiceMonitor,样例如下:

  • 部署 kubecube-monitoring-kubelet

    1. apiVersion: monitoring.coreos.com/v1
    2. kind: ServiceMonitor
    3. metadata:
    4. name: kubecube-monitoring-kubelet
    5. namespace: kubecube-monitoring
    6. spec:
    7. endpoints:
    8. - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    9. honorLabels: true
    10. port: https-metrics
    11. relabelings:
    12. - sourceLabels:
    13. - __metrics_path__
    14. targetLabel: metrics_path
    15. scheme: https
    16. tlsConfig:
    17. caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    18. insecureSkipVerify: true
    19. - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    20. honorLabels: true
    21. path: /metrics/cadvisor
    22. port: https-metrics
    23. relabelings:
    24. - sourceLabels:
    25. - __metrics_path__
    26. targetLabel: metrics_path
    27. scheme: https
    28. tlsConfig:
    29. caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    30. insecureSkipVerify: true
    31. - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
    32. honorLabels: true
    33. path: /metrics/probes
    34. port: https-metrics
    35. relabelings:
    36. - sourceLabels:
    37. - __metrics_path__
    38. targetLabel: metrics_path
    39. scheme: https
    40. tlsConfig:
    41. caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
    42. insecureSkipVerify: true
    43. jobLabel: k8s-app
    44. namespaceSelector:
    45. matchNames:
    46. - kube-system
    47. selector:
    48. matchLabels:
    49. k8s-app: kubelet
  • 部署 kubecube-monitoring-kube-state-metrics

    1. apiVersion: monitoring.coreos.com/v1
    2. kind: ServiceMonitor
    3. metadata:
    4. name: kubecube-monitoring-kube-state-metrics
    5. namespace: kubecube-monitoring
    6. spec:
    7. endpoints:
    8. - honorLabels: true
    9. port: http
    10. selector:
    11. matchLabels:
    12. app.kubernetes.io/instance: kubecube-monitoring
    13. app.kubernetes.io/name: kube-state-metrics

查看组件监控

当前 KubeCube 平台支持对组件的监控视图可视化查询,详细说明见 平台组件监控 。接入外部监控后,用户可按需在集群内部署对应组件的 ServiceMonitor。

各个 ServiceMonitor 的 yaml 可参考 https://github.com/kubecube-io/charts/tree/main/kubecube-monitoring/templates/exporters

4、部署 Dashboard

查看集群资源(控制台内监控数据),需要部署:

查看组件监控,可以部署对应的 Dashboard:

5、修改 Nginx 配置

  1. 使用命令行:kubectl edit configmap nginx-config -n kubecube-system

  2. 找到原有的地址配置,修改为自有 Prometheus 地址

    1. upstream monitoring {
    2. server kubecube-thanos-query.kubecube-monitoring:9090;
    3. }

    即 将kubecube-thanos-query.kubecube-monitoring:9090 替换为外部地址。

  3. 重启 pod:kubectl delete pod frontend-xxxxxx-xxxxx -n kubecube-system

最后修改 September 3, 2021 : add external system access (58253550)