首页 > 其他分享 >k8s中使用prometheus

k8s中使用prometheus

时间:2023-11-02 11:35:26浏览次数:39  
标签:kube kubernetes app prometheus io 使用 k8s

使用方法

git clone https://github.com/prometheus-operator/kube-prometheus.git
cd kube-prometheus
# 先部署 kube-prometheus 的 CRD 和 创建 monitoring namespace
kubectl apply -f manifests/setup/
#在这一步直接 apply 可能会报错,具体错误如下:
#The CustomResourceDefinition “prometheuses.monitoring.coreos.com” is invalid: metadata.annotations: Too long: must have at most 262144 bytes

#这时候可以先删除,再通过 create 创建
kubectl delete -f manifests/setup/
kubectl create -f manifests/setup/

#最后部署 prometheus 和 grafana
kubectl apply -f manifests/

工作原理

为了简化 Prometheus 监控在 Kubernetes 中的管理,Prometheus Operator(一种 Kubernetes 的 Operator)提供了 ServiceMonitor 这个自定义资源。ServiceMonitor 允许在 Kubernetes 中定义 Prometheus 应该如何自动发现和监控服务(Service)的指标。它为 Kubernetes 提供了更加智能和自动化的监控目标配置方式。
ServiceMonitor用于管理Service,再通过service去管理pod, 即ServiceMonitor --> Service --> Pod 。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: kube-ovn-controller
  namespace: monitoring
spec:
  endpoints:
    - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
      interval: 15s
      port: metrics
  namespaceSelector:
    matchNames:
      - kube-system
  selector:
    matchLabels:
      app: kube-ovn-controller

ServiceMonitor字段说明:

  • interval:监控数据抓取的时间间隔
  • port:监控的Service的暴露的监控指标采集端口
  • namespaceSelector:监控目标Service所在的命名空间
  • selector:监控目标Service的标签

查看上报数据

打开prometheus地址(可通过nodePort暴露地址),点击status --> target即可查看所有pod上报的指标

踩坑

1. Pod迁入自定义namespace后无法采集指标

背景:
Pod 原先位于kube-system namespace下,指标上报正常,迁入自定义namespace就看不到指标上报了,查看prometheus-k8s pod日志,出现一下报错,判断是在自定义namespace中缺少权限:

解决办法:
在自定义namespace中创建role和roleBinding,和ServiceAccount monitoring/prometheus-k8s绑定。
配置可参考:

  apiVersion: rbac.authorization.k8s.io/v1
  kind: Role
  metadata:
    labels:
      app.kubernetes.io/component: prometheus
      app.kubernetes.io/instance: k8s
      app.kubernetes.io/name: prometheus
      app.kubernetes.io/part-of: kube-prometheus
      app.kubernetes.io/version: 2.47.2
    name: prometheus-k8s
    namespace: dwc #这里改成自定义命名空间
  rules:
  - apiGroups:
    - ""
    resources:
    - services
    - endpoints
    - pods
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - extensions
    resources:
    - ingresses
    verbs:
    - get
    - list
    - watch
  - apiGroups:
    - networking.k8s.io
    resources:
    - ingresses
    verbs:
    - get
    - list
    - watch
---
  apiVersion: rbac.authorization.k8s.io/v1
  kind: RoleBinding
  metadata:
    labels:
      app.kubernetes.io/component: prometheus
      app.kubernetes.io/instance: k8s
      app.kubernetes.io/name: prometheus
      app.kubernetes.io/part-of: kube-prometheus
      app.kubernetes.io/version: 2.47.2
    name: prometheus-k8s
    namespace: dwc #这里改成自定义命名空间
  roleRef:
    apiGroup: rbac.authorization.k8s.io
    kind: Role
    name: prometheus-k8s
  subjects:
  - kind: ServiceAccount
    name: prometheus-k8s
    namespace: monitoring #注意这里是monitoring

标签:kube,kubernetes,app,prometheus,io,使用,k8s
From: https://www.cnblogs.com/dingwc/p/17805015.html

相关文章

  • 使用async和await获取axios的数据注意事项
    使用async和await获取axios的数据的注意事项确定正确使用asyncfunctiongetInfo(){constres=awaitaxios.get('http://example.com')returnres.data}上述代码等同于asyncfunctiongetInfo(){constresult=(awaitaxios.get('http://example.com')).data......
  • 使用亚马逊云科技大语言模型及搜索服务打造知识库:场景及组件介绍
     背景 知识库需求在各行各业中普遍存在,例如制造业中历史故障知识库、游戏社区平台的内容知识库、电商的商品推荐知识库和医疗健康领域的挂号推荐知识库系统等。为保证推荐系统的实效性和准确性,需要大量的数据/算法/软件工程师的人力投入和包括硬件在内的物力投入。其次,为了进一步......
  • python中setup.py怎么使用(部署工具)
    `setup.py`是一个用于构建和安装Python包的脚本。它是用于打包、发布和分发你的Python项目的关键文件之一。以下是使用`setup.py`的一般步骤:1.创建`setup.py`文件:在项目的根目录下创建一个名为`setup.py`的文本文件。2.导入`setuptools`模块:在`setup.py`文件......
  • windows下如何使用redis
    1.使用社区版redishttps://github.com/tporadowski/redis/releases/2.使用师兄给的redis3.使用wsl1.安装wsl 管理员权限打开commandline,键入命令:wsl--install 参考:https://learn.microsoft.com/en-us/windows/wsl/install2.在wsl内部安装redis 打开安装好的ubantu,键入......
  • BSP视频教程第28期:CANopen主从机组网实战,CAN词典工具使用方法以及吃透PDO玩法
    视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519 本期视频的实战性较强,涉及到的内容比较多,特别是PDO同步周期和同步非周期玩法要吃透。视频教程:https://www.bilibili.com/video/BV1zy4y1A7HS/视频提纲:参考资料:CANopen主从机代码,CAN词......
  • 61.k8s常用命令
    常用查询命令:kubecctlgethpa#查询容器弹性使用情况kubectlgetpod|greptop#获取top的pod信息kubectlgetnodes#获取节点信息kubectltoppod|greptop#查询top的pod资源情况kubectltopnodes#查询节点资源使用率kubectldescribenodes|greptop#......
  • 【Netty】使用Netty搭建简易Sokect客户端
    直接上代码创建客户端,连接到服务端,并发送消息:/**发送一条消息到socket服务端*/privatevoidsendOne(StringrawMessage){NioEventLoopGroupgroup=newNioEventLoopGroup();try{Bootstrapbootstrap=newBootstrap();......
  • python ASCII字符的实用程序 curses.ascii 库的安装使用
    pythonASCII字符的实用程序curses.ascii库的安装使用https://www.lfd.uci.edu/~gohlke/pythonlibs/下载对自己电脑配置的WHL文件,并安装,比如我用的是curses‑2.2+utf8‑cp27‑cp27m‑win_amd64.whlpipinstallcurses‑2.2+utf8‑cp27‑cp27m‑win_amd64.whlPython代码中......
  • 使用Web方式管理你的Linux、容器和KVM
    yum安装部署yuminstall-ycockpitcockpit-storagedcockpit-dockercockpit-machines启动 默认9090端口。访问输入服务器账号密码即可systemctlstartcockpit.service ......
  • python 如何优雅的使用retrying进行重试请求
    retrying模块一、简介retrying是一个python的重试包,可以用来自动重试一些可能运行失败的程序段,retrying提供一个装饰器函数retry,被装饰的函数就会在运行失败的情况下重新执行,默认只要一直报错就会不断重试安装:pipinstallretrying二、使用方法1、无参数使用r......