简介

安装Prometheus Operator:可以通过Helm安装Prometheus Operator,它可以自动创建和管理Prometheus实例。

安装Node Exporter:Node Exporter是一个用于收集主机指标的代理程序,可以在每个节点上安装。

配置ServiceMonitor:ServiceMonitor是Prometheus Operator中的一种资源类型,用于自动发现应用程序并为其生成指标。

部署应用程序:在Kubernetes中部署应用程序,并通过Service对象将其暴露在集群内部。

配置Prometheus:在Prometheus中配置用于收集指标的目标,包括Node Exporter和应用程序的ServiceMonitor。

部署Grafana:Grafana是一个用于可视化指标的工具,可以通过Helm在集群中部署。

配置Grafana:在Grafana中配置Prometheus数据源,并创建仪表板来可视化收集的指标。

1、安装Prometheus Operator

官方文档:https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md

Prometheus Operator是一种Kubernetes原生的应用程序,用于管理Prometheus实例和相关的监控组件。它可以通过自定义资源定义(CRD)来管理Prometheus实例和相关的监控组件,大大简化了Prometheus的部署和管理过程。

要安装Prometheus Operator,可以使用Helm chart:

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus-operator prometheus-community/kube-prometheus-stack

2、配置Prometheus实例

安装完Prometheus Operator后,可以使用Prometheus自定义资源定义(CRD)来创建Prometheus实例。

以下是一个基本的Prometheus实例配置示例:

apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
  name: my-prometheus
spec:
  replicas: 1
  version: v2.27.1
  serviceAccountName: prometheus
  securityContext:
    fsGroup: 2000
  serviceMonitorSelector:
    matchLabels:
      app: my-app
  ruleSelector:
    matchLabels:
      app: my-app
  retention: 1d

在上面的示例中,我们定义了一个名为“my-prometheus”的Prometheus实例,它使用了1个副本,版本为v2.27.1。我们还为Prometheus实例指定了一个服务帐户,指定了一个serviceMonitorSelector和ruleSelector,以便Prometheus可以监视我们的应用程序,并设置了一个数据保留期限为1天。

要创建Prometheus实例,请使用kubectl apply命令:

kubectl apply -f prometheus.yaml

3、添加监控目标

要监视Kubernetes集群中的资源,需要将它们添加到Prometheus实例中作为监控目标。可以使用Prometheus
Operator中的ServiceMonitor来定义监控目标。

以下是一个示例ServiceMonitor配置,用于监控名为“my-app”的Kubernetes服务:

apiVersion: monitoring.coreos.com/v1
kind:ServiceMonitor
metadata:
  name: my-app-monitor
spec:
  selector:
    matchLabels:
      app: my-app
  endpoints:
  - port: metrics

在上面的示例中,我们定义了一个名为“my-app-monitor”的ServiceMonitor,它选择标签为“app:my-app”的Kubernetes服务作为监控目标,并定义了一个名为“metrics”的端口。

要创建ServiceMonitor,请使用kubectl apply命令:

kubectl apply -f service-monitor.yaml

安装Exporter

使用Helm安装Node Exporter:

执行该命令后,将会在k8s集群中创建一个名为node-exporter的Release,包含了Node Exporter的Deployment、Service等资源。Node Exporter会默认采集节点的CPU、内存、磁盘、网络等指标数据,并将其暴露给Prometheus进行采集。

helm install node-exporter prometheus-community/prometheus-node-exporter

4、访问Prometheus UI

安装完Prometheus Operator和Prometheus实例后,可以通过访问Prometheus UI来查看监控数据。可以通过Port Forwarding的方式将Prometheus UI端口映射到本地计算机上:

kubectl port-forward service/my-prometheus-operator-prometheus 9090

然后,可以通过浏览器访问http://localhost:9090/来访问Prometheus UI。在Prometheus
UI中,可以查看监控数据、配置报警规则等。