Prometheus 和 Grafana 安装

Prometheus 和 Grafana 安装

本文档描述了两种不同的安装和配置 Prometheus 和 Grafana 的方法。- 使用 Pod Annotations 安装 Prometheus 和 Grafana。这会将 Prometheus 和 Grafana 安装在与 NGINX Ingress 相同的命名空间中 - 使用服务监视器安装 Prometheus 和 Grafana。这会将 Prometheus 和 Grafana 安装在两个不同的命名空间中。这是首选方法,helm 图表默认支持此方法。

使用 Pod 注解的 Prometheus 和 GRAFANA 安装

本教程将向您展示如何安装PrometheusGrafana以抓取 NGINX Ingress 控制器的指标。

重要的

此示例使用emptyDirPrometheus 和 Grafana 的卷。这意味着一旦 pod 终止,您将丢失所有数据。

在你开始之前

  • NGINX Ingress 控制器应该已经按照此处的部署说明进行了部署。

  • 控制器应配置为导出指标。这需要对控制器进行 3 种配置。这些配置是:

  • controller.metrics.enabled=true
  • controller.podAnnotations."prometheus.io/scrape"="true"
  • controller.podAnnotations."prometheus.io/port"="10254"

  • 为指标配置控制器的最简单方法是通过 helm upgrade。假设您已将 ingress-nginx 控制器安装为名为 ingress-nginx 的 helm 版本,那么您只需键入如下所示的命令:

    helm upgrade ingress-nginx ingress-nginx \
    --repo https://kubernetes.github.io/ingress-nginx \
    --namespace ingress-nginx \
    --set controller.metrics.enabled=true \
    --set-string controller.podAnnotations."prometheus\.io/scrape"="true" \
    --set-string controller.podAnnotations."prometheus\.io/port"="10254"
    

  • 您可以通过查看已安装版本的值来验证控制器是否配置了指标,如下所示:
    helm get values ingress-nginx --namespace ingress-nginx
    
  • 您应该能够看到如下所示的值:
    ..
    controller:
      metrics:
        enabled: true
        service:
          annotations:
            prometheus.io/port: "10254"
            prometheus.io/scrape: "true"
    ..
    
  • 如果您不使用 helm,则必须像这样编辑清单:
    • 服务清单:
      apiVersion: v1
      kind: Service
      metadata:
       annotations:
         prometheus.io/scrape: "true"
         prometheus.io/port: "10254"
      ..
      spec:
        ports:
          - name: prometheus
            port: 10254
            targetPort: prometheus
            ..
      
    • 部署清单:
      apiVersion: v1
      kind: Deployment
      metadata:
       annotations:
         prometheus.io/scrape: "true"
         prometheus.io/port: "10254"
      ..
      spec:
        ports:
          - name: prometheus
            containerPort: 10254
            ..
      

部署和配置 Prometheus 服务器

请注意,本教程中使用的 kustomize 基础存储在GitHub 存储库kubernetes/ingress-nginx的deploy文件夹中。

  • 必须配置 Prometheus 服务器,以便它可以发现服务的端点。如果 Prometheus 服务器已经在集群中运行,并且它的配置方式可以找到入口控制器 pod,则不需要额外的配置。

  • 如果没有现有的 Prometheus 服务器正在运行,本教程的其余部分将指导您完成部署正确配置的 Prometheus 服务器所需的步骤。

  • 运行以下命令会在 Kubernetes 中部署 prometheus:

kubectl apply --kustomize github.com/kubernetes/ingress-nginx/deploy/prometheus/

普罗米修斯仪表板

  • 在 Web 浏览器中打开 Prometheus 仪表板:
kubectl get svc -n ingress-nginx
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                      AGE
default-http-backend   ClusterIP   10.103.59.201   <none>        80/TCP                                       3d
ingress-nginx          NodePort    10.97.44.72     <none>        80:30100/TCP,443:30154/TCP,10254:32049/TCP   5h
prometheus-server      NodePort    10.98.233.86    <none>        9090:32630/TCP                               1m
  • 获取正在运行的集群中节点的 IP 地址:
kubectl get nodes -o wide
  • 在某些节点只有内部 IP 地址的情况下,我们需要执行:
kubectl get nodes --selector=kubernetes.io/role!=master -o jsonpath={.items[*].status.addresses[?\(@.type==\"InternalIP\"\)].address}
10.192.0.2 10.192.0.3 10.192.0.4
  • 打开浏览器并访问以下 URL:http://{node IP address}:{prometheus-svc-nodeport}以加载 Prometheus Dashboard。

  • 根据上面的例子,这个 URL 将是 http://10.192.0.3:32630

格拉法纳

  • 使用以下命令安装 grafana
    kubectl apply --kustomize github.com/kubernetes/ingress-nginx/deploy/grafana/
    
  • 看服务

    kubectl get svc -n ingress-nginx
    NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                      AGE
    default-http-backend   ClusterIP   10.103.59.201   <none>        80/TCP                                       3d
    ingress-nginx          NodePort    10.97.44.72     <none>        80:30100/TCP,443:30154/TCP,10254:32049/TCP   5h
    prometheus-server      NodePort    10.98.233.86    <none>        9090:32630/TCP                               10m
    grafana                NodePort    10.98.233.87    <none>        3000:31086/TCP                               10m
    

  • 打开浏览器并访问以下 URL:http://{node IP address}:{grafana-svc-nodeport}以加载 Grafana Dashboard。根据上面的例子,这个 URL 将是 http://10.192.0.3:31086

用户名和密码是admin

  • 登录后,您可以通过以下步骤从官方仪表板导入 Grafana 仪表板:

    • 导航到 grafana 的左侧面板
    • 将鼠标悬停在配置的齿轮图标上,然后单击“数据源”
    • 点击“添加数据源”
    • 选择“普罗米修斯”
    • 输入详细信息(注意:我使用了 http://CLUSTER_IP_PROMETHEUS_SVC:9090)
    • 左侧菜单(悬停在 + 上)-> 仪表板
    • 点击“导入”
    • 从 https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/grafana/dashboards/nginx.json 输入复制粘贴的 json
    • 单击导入 JSON
    • 选择 Prometheus 数据源
    • 点击“导入”

注意事项

通配符入口

  • 默认情况下,请求指标标有主机名。当您有通配符域入口时,该入口将没有指标(以防止指标在基数上爆炸)。要在这种情况下获取指标,您需要运行入口控制器--metrics-per-host=false(您将丢失主机名标签,但仍具有入口标签)。

使用入口资源的 Grafana 仪表板

  • 如果您想使用入口资源公开 grafana 的仪表板,那么您可以:
    • 将 prometheus-server 服务和 grafana 服务的服务类型更改为“ClusterIP”,如下所示:
      kubectl -n ingress-nginx edit svc grafana
      
    • 这将在您的 shell (vi/nvim/nano/other) 中配置的默认编辑器中打开当前部署的服务 grafana
    • 向下滚动到第 34 行,看起来像“type: NodePort”
    • 将其更改为“类型:ClusterIP”。保存并退出。
    • 创建一个入口资源,后端为“grafana”,端口为“3000”
  • 同样,您可以编辑服务“prometheus-server”并添加入口资源。

使用服务监视器安装 Prometheus 和 GRAFANA

本文档假设您使用 helm 并使用 kube-prometheus-stack 包安装 Prometheus 和 Grafana。

验证 NGINX Ingress 控制器是否已安装

  • NGINX Ingress 控制器应该已经按照此处的部署说明进行了部署。

  • 要检查是否部署了 Ingress 控制器,

    kubectl get pods -n ingress-nginx 
    

  • 结果应该类似于:NAME READY STATUS RESTARTS AGE ingress-nginx-controller-7c489dc7b7-ccrf6 1/1 Running 0 19h

验证 Prometheus 是否已安装

  • 要检查 Prometheus 是否已部署,请运行以下命令:

helm ls -A
NAME          NAMESPACE       REVISION    UPDATED                                 STATUS      CHART                           APP VERSION
ingress-nginx ingress-nginx   10          2022-01-20 18:08:55.267373 -0800 PST    deployed    ingress-nginx-4.0.16            1.1.1      
prometheus    prometheus      1           2022-01-20 16:07:25.086828 -0800 PST    deployed    kube-prometheus-stack-30.1.0    0.53.1  
- 请注意,prometheus 安装在与 ingress-nginx 不同的命名空间中

重新配置 NGINX 入口控制器

  • 需要重新配置 Ingress NGINX 控制器以导出指标。这需要对控制器进行 3 项额外配置。这些配置是:
    controller.metrics.enabled=true
    controller.metrics.serviceMonitor.enabled=true
    controller.metrics.serviceMonitor.additionalLabels.release="prometheus" 
    
  • 最简单的方法是掌舵升级
    helm upgrade ingress-nginx ingress-nginx/ingress-nginx \
    --namespace ingress-nginx \
    --set controller.metrics.enabled=true \
    --set controller.metrics.serviceMonitor.enabled=true \
    --set controller.metrics.serviceMonitor.additionalLabels.release="prometheus"
    
  • 这里controller.metrics.serviceMonitor.additionalLabels.release="prometheus"应该匹配 helm release 的名称kube-prometheus-stack

  • 您可以通过查看已安装版本的值来验证控制器是否已成功重新配置为导出指标,如下所示:

    helm get values ingress-nginx --namespace ingress-nginx
    
    controller:
      metrics:
        enabled: true
        serviceMonitor:
          additionalLabels:
            release: prometheus
          enabled: true
    

配置普罗米修斯

  • 由于 Prometheus 在不同的命名空间中运行,而不是在 ingress-nginx 命名空间中,因此它在安装时将无法在其他命名空间中发现 ServiceMonitors。重新配置您的 kube-prometheus-stack Helm 安装以将serviceMonitorSelectorNilUsesHelmValues标志设置为 false。默认情况下,Prometheus 仅在其自己的命名空间内发现 PodMonitors。这应该通过设置podMonitorSelectorNilUsesHelmValues为 false来禁用
  • 所需的配置是:
    prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false 
    prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
    
  • 最简单的方法是使用helm upgrade ...
    helm upgrade prometheus prometheus-community/kube-prometheus-stack \
    --namespace prometheus  \
    --set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false \
    --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
    
  • 您可以通过查看已安装版本的值来验证 Prometheus 是否已重新配置,如下所示:
    helm get values prometheus --namespace prometheus
    
  • 您应该能够看到如下所示的值:
    prometheus:
      prometheusSpec:
        podMonitorSelectorNilUsesHelmValues: false
        serviceMonitorSelectorNilUsesHelmValues: false
    

连接并查看 Prometheus 仪表板

  • 端口转发到 Prometheus 服务。使用以下命令找出 prometheus 服务的名称:
    kubectl get svc -n prometheus
    

此命令的结果如下所示:

NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
alertmanager-operated                     ClusterIP   None             <none>        9093/TCP,9094/TCP,9094/UDP   7h46m
prometheus-grafana                        ClusterIP   10.106.28.162    <none>        80/TCP                       7h46m
prometheus-kube-prometheus-alertmanager   ClusterIP   10.108.125.245   <none>        9093/TCP                     7h46m
prometheus-kube-prometheus-operator       ClusterIP   10.110.220.1     <none>        443/TCP                      7h46m
prometheus-kube-prometheus-prometheus     ClusterIP   10.102.72.134    <none>        9090/TCP                     7h46m
prometheus-kube-state-metrics             ClusterIP   10.104.231.181   <none>        8080/TCP                     7h46m
prometheus-operated                       ClusterIP   None             <none>        9090/TCP                     7h46m
prometheus-prometheus-node-exporter       ClusterIP   10.96.247.128    <none>        9100/TCP                     7h46m
prometheus-kube-prometheus-prometheus 是我们想要移植到的服务。我们可以使用以下命令来做到这一点:
kubectl port-forward svc/prometheus-kube-prometheus-prometheus -n prometheus 9090:9090
当您运行上述命令时,您应该会看到如下内容:
Forwarding from 127.0.0.1:9090 -> 9090
Forwarding from [::1]:9090 -> 9090
- 打开您的浏览器并访问以下 URL http://localhost:{port-forwarded-port} 根据上面的示例它将是 http://localhost:9090

连接和查看 Grafana 仪表板

  • 端口转发到 Grafana 服务。使用以下命令找出 Grafana 服务的名称:
    kubectl get svc -n prometheus
    

此命令的结果如下所示:

NAME                                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
alertmanager-operated                     ClusterIP   None             <none>        9093/TCP,9094/TCP,9094/UDP   7h46m
prometheus-grafana                        ClusterIP   10.106.28.162    <none>        80/TCP                       7h46m
prometheus-kube-prometheus-alertmanager   ClusterIP   10.108.125.245   <none>        9093/TCP                     7h46m
prometheus-kube-prometheus-operator       ClusterIP   10.110.220.1     <none>        443/TCP                      7h46m
prometheus-kube-prometheus-prometheus     ClusterIP   10.102.72.134    <none>        9090/TCP                     7h46m
prometheus-kube-state-metrics             ClusterIP   10.104.231.181   <none>        8080/TCP                     7h46m
prometheus-operated                       ClusterIP   None             <none>        9090/TCP                     7h46m
prometheus-prometheus-node-exporter       ClusterIP   10.96.247.128    <none>        9100/TCP                     7h46m
prometheus-grafana 是我们想要移植到的服务。我们可以使用以下命令来做到这一点:
kubectl port-forward svc/prometheus-grafana  3000:80 -n prometheus
当您运行上述命令时,您应该会看到如下内容:
Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000
- 打开浏览器并访问以下 URL http://localhost:{port-forwarded-port} 根据上面的示例应该是 http://localhost:3000 默认用户名/密码是 admin/prom-operator -登录后,您可以通过以下步骤从 官方仪表板导入 Grafana 仪表板:

  • 导航到 grafana 的左侧面板
  • 将鼠标悬停在配置的齿轮图标上,然后单击“数据源”
  • 点击“添加数据源”
  • 选择“普罗米修斯”
  • 输入详细信息(注意:我使用 http://10.102.72.134:9090 这是 Prometheus 服务的 CLUSTER-IP)
  • 左侧菜单(悬停在 + 上)-> 仪表板
  • 点击“导入”
  • 从 https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/grafana/dashboards/nginx.json 输入复制粘贴的 json
  • 单击导入 JSON
  • 选择 Prometheus 数据源
  • 点击“导入”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Windows上安装PrometheusGrafana,可以按照以下步骤进行操作: 1. 首先,进入Prometheus官网(引用[1])或者其他可信的下载源,下载适用于Windows的Prometheus安装包。根据你的系统架构选择正确的版本,比如64位系统选择prometheus-2.20.1.windows-amd64.tar.gz(引用[1])。 2. 下载完成后,解压缩安装包。你可以选择将解压后的文件夹放在任意位置。 3. 进入解压后的目录,运行prometheus.exe。这将启动Prometheus服务。 4. 打开浏览器,访问http://localhost:9090,即可进入Prometheus的Web界面。在这里,你可以查看监控的对象列表,可以通过点击"Status",然后选择"Targets"来查看(引用[1])。 5. 接下来,你可以根据自己的需求编辑prometheus.yml文件,来配置你的监控数据源。这个文件位于解压后的目录中,你可以使用任何文本编辑器进行编辑。 6. 对于Grafana安装,你可以访问Grafana官方网站或其他可信的下载源,下载适用于Windows的Grafana安装包。 7. 下载完成后,运行安装包进行安装。按照安装向导的指示进行操作,选择安装位置和其他选项。 8. 安装完成后,运行Grafana。默认情况下,Grafana会在本地的3000端口启动。 9. 打开浏览器,访问http://localhost:3000,即可进入Grafana的Web界面。 10. 在Grafana中,你可以配置数据源、创建仪表盘和图表,以展示Prometheus收集到的监控数据。 请注意,以上步骤仅提供了基本的安装和配置指南。具体的安装和配置步骤可能会因版本和个人需求而有所不同。建议参考官方文档(引用[2])或其他可靠的资源,以获取更详细的指导和说明。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值