[10.14 workshop] 自定义 Prometheus 监控指标并通过 Grafana 展示-阿里云开发者社区

开发者社区> 游客6hjvmelpxyqfi> 正文

[10.14 workshop] 自定义 Prometheus 监控指标并通过 Grafana 展示

简介: 阿里云Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。借助阿里云Prometheus监控,您无需自行搭建Prometheus监控系统,因而无需关心底层数据存储、数据展示、系统运维等问题。
+关注继续查看

阿里云Prometheus监控全面对接开源Prometheus生态,支持类型丰富的组件监控,提供多种开箱即用的预置监控大盘,且提供全面托管的Prometheus服务。借助阿里云Prometheus监控,您无需自行搭建Prometheus监控系统,因而无需关心底层数据存储、数据展示、系统运维等问题。

您可以通过阿里云Prometheus监控查看容器服务Kubernetes版ACK(Container Service for Kubernetes)预先配置的监控大盘和监控性能指标。

本文介绍如何通过Annotations和ServiceMonitor来自定义监控指标并通过Grafana展示。

前提条件


背景信息


  • 阿里云 Prometheus监控兼容并提供三种主流采集规则的实现,包括标准开源prometheus.yaml采集规则配置文件、适合自定义K8s内监控的采集规则ServiceMonitor、以及默认采集规则Annotation。
  • 与开源Prometheus监控相比,阿里云 Prometheus监控无需重启,即可使用prometheus.yaml配置文件动态更新采集规则。
  • 在Deployment文件里也无需编写多行代码,仅需增加以下3个Annotation注解即可。具体参考托管 ARMS Prometheus 监控

操作步骤


方式一:通过 Annotations 自定义指标监控

通过给 Deployment Pod Template 加入 Annotations 的方式自定义监控,阿里云 ARMS pilot 将会自动配置 ARMS Prometheus 获取 Pod 自定义指标。

1、登录容器服务管理控制台,在左侧导航栏单击集群,在集群列表中点击目标集群。

2、在左侧边导航栏,单击工作负载,在右侧单击使用镜像创建

3、输入应用的基本信息,单击下一步

4、使用镜像registry.cn-hangzhou.aliyuncs.com/containerdemo/pindex创建一个Web应用,暴露 5000 端口。

mypindex-1

或者,可以直接采用如下 YAML 直接部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: pindex
  name: pindex
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: pindex
  template:
    metadata:
      annotations:
        prometheus.io/path: /access
        prometheus.io/port: '5000'
        prometheus.io/scrape: 'true'
      labels:
        app: pindex
    spec:
      containers:
        - image: 'registry.cn-hangzhou.aliyuncs.com/containerdemo/pindex:latest'
          imagePullPolicy: Always
          name: pindex
          ports:
            - containerPort: 5000
              name: web
              protocol: TCP
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
  name: pindex-svc
  namespace: default
spec:
  externalTrafficPolicy: Local
  ports:
    - name: web
      port: 5000
      protocol: TCP
      targetPort: 5000
  selector:
    app: pindex
  sessionAffinity: None
  type: LoadBalancer

5、给 Pod 添加上 ARMS 相关的 annotations。prometheus.io/port 表示 Prometheus 要 scrape 的 endpoint 端口,prometheus.io/path 表示 Prometheus 要 scrape 的 endpoint 路径。

mypindex-2

6、单击下一步,创建一个Loadbalancer型Service,暴露服务到公网,单击创建完成服务部署。

7、登录 Prometheus 控制台,单击对应的 K8S 集群。

8、在左侧导航栏单击设置, 然后在右侧区域单击Targets页签,可见自定义的指标已经配置成功。

mypindex-3

9、访问该服务暴露出来的公网IP,增加一些指标值。

mypindex-web

10、单击 Prometheus 任意一个预置的图表进入 Grafana,然后单击添加 Panal ,选择 Graph 类型,将Metrics 填写为current_person_counts

11、保存配置即可观察到自定义指标的 Grafana 图形。

mypindex-4

方式二:通过 ServiceMonitor 自定义指标监控

通过 ServiceMonitor 方式自定义指标监控在部署的时候不需要配置 annotations,但是要给 service 对象添加标签。

1、部署 Demo 示例服务。

与方式一的步骤类似,但是部署服务的时候不需要配置 Annotations。

custom-1

2、添加服务时,需要添加标签(app=custom-metrics-pindex),该标签将被用于 serviceMonitor 的 selector:

custom-2

或者通过如下的 YAML 直接部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: pindex
  name: pindex
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: pindex
  template:
    metadata:
      annotations:
        prometheus.io/path: /access
        prometheus.io/port: '5000'
        prometheus.io/scrape: 'true'
      labels:
        app: pindex
    spec:
      containers:
        - image: 'registry.cn-hangzhou.aliyuncs.com/containerdemo/pindex:latest'
          imagePullPolicy: Always
          name: pindex
          ports:
            - containerPort: 5000
              name: web
              protocol: TCP
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
---
apiVersion: v1
kind: Service
metadata:
  name: pindex-svc
  namespace: default
  labels:
    app: custom-metrics-pindex
spec:
  externalTrafficPolicy: Local
  ports:
    - name: web
      port: 5000
      protocol: TCP
      targetPort: 5000
  selector:
    app: pindex
  sessionAffinity: None
  type: LoadBalancer

3、登录 Prometheus 控制台,单击对应的 K8S 集群。

4、在左侧导航栏单击设置, 然后在右侧区域单击服务发现页签。

5、单击页面右上角添加 ServiceMonitor,模板文件如下,单击确定完成ServiceMonitor创建。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  #  填写一个唯一名称
  name: custom-metrics-pindex
  #  填写目标命名空间
  namespace: default
spec:
  endpoints:
  - interval: 30s
    #  填写service.yaml中对应的Port的Name字段的值(参考上图)
    port: web
    #  填写Service对应的Path的值
    path: /access
  namespaceSelector:
    any: true
    #  Nginx Demo的命名空间
  selector:
    matchLabels:
      #  填写service.yaml的Label字段的值以定位目标service.yaml
      app: custom-metrics-pindex

6、在Targets页签,可见 Prometheus 已经获得服务 Scape Endpioint。

custom-3

说明 这里 ServiceMonitor 定义比 Annotations 方式更美观,指示出了 Namespace 和 Service 名称。

7、再次进入之前的 Grafana 页面,因为是相同的指标,与上述相同的 Metrics 配置,可见 4 个实例的指标监控信息。

custom-4

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【愚公系列】2021年11月 攻防世界-进阶题-MISC-043(Cephalopod)
【愚公系列】2021年11月 攻防世界-进阶题-MISC-043(Cephalopod)
4 0
Spring加载流程源码分析01【super】
前面给大家介绍了Spring中的IOC和AOP。本文开始带大家解读下Spring容器加载的过程。我们使用的Spring的版本是4.3.3.RELEASE Spring加载流程源码分析03【refresh】 Spring加载流程源码分析02【setConfigLocations】
5 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(二分查找)
【愚公系列】2021年11月 C#版 数据结构与算法解析(二分查找)
4 0
JDK 选型安装|学习笔记
快速学习 JDK 选型安装
7 0
Java 并发编程(三):如何保证共享变量的可见性?
Java 并发编程(三):如何保证共享变量的可见性?
3 0
Spring事务的传播行为
Spring中的7个事务传播行为: 事务行为 说明 PROPAGATION_REQUIRED 支持当前事务,假设当前没有事务。就新建一个事务 PROPAGATION_SUPPORTS 支持当前事务,假设当前没有事务,就以非事务方式运行 PROPAGATION_MANDATORY 支持当前事务,假设当前没有事务,就抛出异常 PROPAGATION_REQUIRES_NEW 新建事务,假设当前存在事务。把当前事务挂起 PROPAGATION_NOT_SUPPORTED 以非事务方式运行操作。假设当前存在事务,就把当前事务挂起
3 0
Java 并发编程(三):如何保证共享变量的可见性?
Java 并发编程(三):如何保证共享变量的可见性?
3 0
互动直播还有多远?从三大技术难题说起
2个月前,我在某直播平台上看了一场游戏直播,那叫一个难受,连延迟带卡顿,看到后半场卡的我直上厕所,回来后发现画面虽变了但仍旧卡,一气之下果断的关了直播。上个月去上海参加华为手机的发布会,想在现场做一下直播,移动4G竟然连信号都没有,只能退回到3G网络在朋友群发一些图片。面对移动网络的问题,只能是沉默再沉默了。
3 0
【愚公系列】2021年11月 C#版 数据结构与算法解析(哈希查找)
【愚公系列】2021年11月 C#版 数据结构与算法解析(哈希查找)
3 0
Cloud for Customer的Inplace Edit Container
Cloud for Customer的Inplace Edit Container
3 0
2
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载