前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过prometheus读取腾讯云TMP监控数据

通过prometheus读取腾讯云TMP监控数据

原创
作者头像
聂伟星
发布2023-04-11 10:07:54
3.9K1
发布2023-04-11 10:07:54
举报

现在很多业务会通过云上的TMP来监控云上的业务,比如将云上的tke、etcd等服务监控数据写到TMP,然后方便监测服务是否正常运行。

很多人之前用过开源的prometheus,会经常通过prometheus提供的ui页面来查下监控数据,但是TMP没有提供这类可视化页面,因为云上的TMP是有鉴权的,只能在grafana里面来查询监控数据。

其实TMP有提供Remote read 接口,我们可以自己部署一个prometheus来通过Remote read 接口读取TMP的监控数据,然后这样就可以在自建的prometheus ui页面直接查询到TMP的监控数据。具体可以参考云监控的文档说明https://cloud.tencent.com/document/product/1416/84294

下面我们说说如何在集群内部署配置prometheus服务来远程读取tmp的监控数据,每个tmp实例都是部署在一个eks集群,我们就将prometheus部署到对应的eks集群即可。

1. 获取tmp实例api访问账号密码

通过Remote read 接口读取数据,鉴权方式推荐使用Basic Auth,username 为账号 AppID ,password可以控制台查看tmp实例,里面的token就是密码。

2. Remote read配置

这里是在k8s集群部署,所以我们通过configmap来配置Remote read,然后挂载到容器内,具体的yaml如下

代码语言:javascript
复制
apiVersion: v1
data:
  prometheus.yml: |-
    remote_read:
    - url: "http://172.16.180.xxx:9090/api/v1/read"
      read_recent: true
      basic_auth:
        username: "AppID"
        password: "token"
      filter_external_labels: false
kind: ConfigMap
metadata:
  name: prom-cm
  namespace: kube-system

usernameh和password就是第一步获取的appid和token,更多配置项参考官网文档https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_read,注意url的路径是/api/v1/read。

3. 创建prometheus工作负载

部署一个prometheus的deploy,然后挂载上一步创建的configmap,yaml如下

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: prom
    qcloud-app: prom
  name: prom
  namespace: kube-system
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: prom
      qcloud-app: prom
  template:
    metadata:
      labels:
        k8s-app: prom
        qcloud-app: prom
    spec:
      containers:
      - image: bitnami/prometheus:2.43.0
        imagePullPolicy: IfNotPresent
        name: prom
        resources:
          limits:
            cpu: 500m
            memory: 1Gi
          requests:
            cpu: 250m
            memory: 256Mi
        securityContext:
          privileged: false
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /opt/bitnami/prometheus/conf/prometheus.yml
          name: vol
          readOnly: true
          subPath: prometheus.yml
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 420
          name: prom-cm
        name: vol

4. 创建service或者ingress访问prometheus

prometheus的pod运行正常后,创建一个service或者ingress来访问prometheus,具体看个人需求,我这里是通过公网clb类型service来访问prometheus,service的yaml如下

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: prom
    qcloud-app: prom
  name: prom
  namespace: kube-system
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: 9090-9090-tcp-2wb1xy9wja4
    nodePort: 32183
    port: 9090
    protocol: TCP
    targetPort: 9090
  selector:
    k8s-app: prom
    qcloud-app: prom
  sessionAffinity: None
  type: LoadBalancer

5. 测试通过prometheus ui访问tmp数据

浏览器输入公网clb的vip和9090端口,就可以访问promethues的前端ui页面

然后可以通过promsql来查询对应的指标,但是这里有个缺点,因为是从远程读的数据,页面输入指标没有智能提示,需要输入具体的指标名称才行。这里我们输入up是可以正常查询tmp的数据。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 获取tmp实例api访问账号密码
  • 2. Remote read配置
  • 3. 创建prometheus工作负载
  • 4. 创建service或者ingress访问prometheus
  • 5. 测试通过prometheus ui访问tmp数据
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档