返回顶部
首页 > 资讯 > 精选 >Prometheus-operator的介绍和配置方法
  • 181
分享到

Prometheus-operator的介绍和配置方法

2023-06-19 09:06:38 181人浏览 薄情痞子
摘要

这篇文章主要介绍“prometheus-operator的介绍和配置方法”,在日常操作中,相信很多人在Prometheus-operator的介绍和配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pro

这篇文章主要介绍“prometheus-operator的介绍和配置方法”,在日常操作中,相信很多人在Prometheus-operator的介绍和配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Prometheus-operator的介绍和配置方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

随着云原生概念盛行,对于容器、服务、节点以及集群监控变得越来越重要。Prometheus 作为 kubernetes 监控的事实标准,有着强大的功能和良好的生态。但是它不支持分布式,不支持数据导入、导出,不支持通过 api 修改监控目标和报警规则,所以在使用它时,通常需要写脚本和代码来简化操作。Prometheus Operator 为监控 Kubernetes service、deployment 和 Prometheus 实例的管理提供了简单的定义,简化在 Kubernetes 上部署、管理和运行 Prometheus 和 Alertmanager 集群。

功能

Prometheus Operator (后面都简称 Operater) 提供如下功能:

  • 创建/销毁:在 Kubernetes namespace 中更加容易地启动一个 Prometheues 实例,一个特定应用程序或者团队可以更容易使用 Operator。

  • 便捷配置:通过 Kubernetes 资源配置 Prometheus 的基本信息,比如版本、存储、副本集等。

  • 通过标签标记目标服务: 基于常见的 Kubernetes label 查询自动生成监控目标配置;不需要学习 Prometheus 特定的配置语言。

先决条件

对于版本高于 0.18.0 的 Prometheus Operator 要求 Kubernetes 集群版本高于 1.8.0。如果你才开始使用 Prometheus Operator,推荐你使用最新版。

如果你使用的旧版本的 Kubernetes 和 Prometheus Operator 还在运行,推荐先升级 Kubernetes,再升级 Prometheus Operator。

安装与卸载

快速安装

使用 helm 安装 Prometheus Operator。使用 helm 安装后,会在 Kubernetes 集群中创建、配置和管理 Prometheus 集群,chart 中包含多种组件:

  • prometheus-operator

  • prometheus

  • alertmanager

  • node-exporter

  • kube-state-metrics

  • grafana

  • 收集 Kubernetes 内部组件指标的监控服务

    • kube-apiserver

    • kube-scheduler

    • kube-controller-manager

    • etcd

    • kube-dns/coredns

    • kube-proxy

安装一个版本名为 my-release 的 chart:

helm install --name my-release stable/prometheus-operator

这会在集群中安装一个默认配置的 prometheus-operator。这份配置文件列出了安装过程中可以配置的选项。

默认会安装 Prometheus Operator, Alertmanager, Grafana。并且会抓取集群的基本信息。

卸载

卸载 my-release 部署:

helm delete my-release

这个命令会删除与这个 chart 相关的所有 Kubernetes 组件。

这个 chart 创建的 CRDs 不会被默认删除,需要手动删除:

kubectl delete crd prometheuses.monitoring.coreos.comkubectl delete crd prometheusrules.monitoring.coreos.comkubectl delete crd servicemonitors.monitoring.coreos.comkubectl delete crd podmonitors.monitoring.coreos.comkubectl delete crd alertmanagers.monitoring.coreos.com

架构

Prometheus Operator 架构图如下:

Prometheus-operator的介绍和配置方法

上面架构图中,各组件以不同的方式运行在 Kubernetes 集群中:

  • Operator: 根据自定义资源(Custom Resource Definition / CRDs)来部署和管理 Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。

  • Prometheus:声明 Prometheus deployment 期望的状态,Operator 确保这个 deployment 运行时一直与定义保持一致。

  • Prometheus Server: Operator 根据自定义资源 Prometheus 类型中定义的内容而部署的 Prometheus Server 集群,这些自定义资源可以看作是用来管理 Prometheus Server 集群的 StatefulSets 资源。

  • ServiceMonitor:声明指定监控的服务,描述了一组被 Prometheus 监控的目标列表。该资源通过 Labels 来选取对应的 Service Endpoint,让 Prometheus Server 通过选取的 Service 来获取 Metrics 信息。

  • Service:简单的说就是 Prometheus 监控的对象。

  • Alertmanager:定义 AlertManager deployment 期望的状态,Operator 确保这个 deployment 运行时一直与定义保持一致。

自定义资源

Prometheus Operater 定义了如下的四类自定义资源:

  • Prometheus

  • ServiceMonitor

  • Alertmanager

  • PrometheusRule

Prometheus

Prometheus 自定义资源(CRD)声明了在 Kubernetes 集群中运行的 Prometheus 的期望设置。包含了副本数量,持久化存储,以及 Prometheus 实例发送警告到的 Alertmanagers等配置选项。

每一个 Prometheus 资源,Operator 都会在相同 namespace 下部署成一个正确配置的 StatefulSet,Prometheus 的 Pod 都会挂载一个名为 <prometheus-name> 的 Secret,里面包含了 Prometheus 的配置。Operator 根据包含的 ServiceMonitor 生成配置,并且更新含有配置的 Secret。无论是对 ServiceMonitors 或者 Prometheus 的修改,都会持续不断的被按照前面的步骤更新。

一个样例配置如下:

kind: Prometheusmetadata: # 略spec:  alerting:    alertmanagers:    - name: prometheus-prometheus-oper-alertmanager # 定义该 Prometheus 对接的 Alertmanager 集群的名字, 在 default 这个 namespace 中      namespace: default      pathPrefix: /      port: WEB  baseImage: quay.io/prometheus/prometheus  replicas: 2 # 定义该 Proemtheus “集群”有两个副本,说是集群,其实 Prometheus 自身不带集群功能,这里只是起两个完全一样的 Prometheus 来避免单点故障  ruleSelector: # 定义这个 Prometheus 需要使用带有 prometheus=k8s 且 role=alert-rules 标签的 PrometheusRule    matchLabels:      prometheus: k8s      role: alert-rules  serviceMonitorNamespaceSelector: {} # 定义这些 Prometheus 在哪些 namespace 里寻找 ServiceMonitor  serviceMonitorSelector: # 定义这个 Prometheus 需要使用带有 k8s-app=node-exporter 标签的 ServiceMonitor,不声明则会全部选中    matchLabels:      k8s-app: node-exporter  version: v2.10.0

Prometheus 配置

ServiceMonitor

ServiceMonitor 自定义资源(CRD)能够声明如何监控一组动态服务的定义。它使用标签选择定义一组需要被监控的服务。这样就允许组织引入如何暴露 metrics 的规定,只要符合这些规定新服务就会被发现列入监控,而不需要重新配置系统。

要想使用 Prometheus Operator 监控 Kubernetes 集群中的应用,Endpoints 对象必须存在。Endpoints 对象本质是一个 IP 地址列表。通常,Endpoints 对象由 Service 构建。Service 对象通过对象选择器发现 Pod 并将它们添加到 Endpoints 对象中。

一个 Service 可以公开一个或多个服务端口,通常情况下,这些端口由指向一个 Pod 的多个 Endpoints 支持。这也反映在各自的 Endpoints 对象中。

Prometheus Operator 引入 ServiceMonitor 对象,它发现 Endpoints 对象并配置 Prometheus 去监控这些 Pods。

ServiceMonitorSpec 的 endpoints 部分用于配置需要收集 metrics 的 Endpoints 的端口和其他参数。在一些用例中会直接监控不在服务 endpoints 中的 pods 的端口。因此,在 endpoints 部分指定 endpoint 时,请严格使用,不要混淆。

注意:endpoints(小写)是 ServiceMonitor CRD 中的一个字段,而 Endpoints(大写)是 Kubernetes 资源类型。

ServiceMonitor 和发现的目标可能来自任何 namespace。这对于跨 namespace 的监控十分重要,比如 meta-monitoring。使用 PrometheusSpec 下 ServiceMonitorNamespaceSelector, 通过各自 Prometheus server 限制 ServiceMonitors 作用 namespece。使用 ServiceMonitorSpec 下的 namespaceSelector 可以现在允许发现 Endpoints 对象的命名空间。要发现所有命名空间下的目标,namespaceSelector 必须为空。

spec:  namespaceSelector:    any: true

一个样例配置如下:

kind: ServiceMonitORMetadata:  labels:    k8s-app: node-exporter # 这个 ServiceMonitor 对象带有 k8s-app=node-exporter 标签,因此会被 Prometheus 选中  name: node-exporter  namespace: defaultspec:  selector:    matchLabels: # 定义需要监控的 Endpoints,带有 app=node-exporter 且 k8s-app=node-exporter标签的 Endpoints 会被选中      app: node-exporter      k8s-app: node-exporter  endpoints:  - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token    interval: 30s # 定义这些 Endpoints 需要每 30 秒抓取一次    targetPort: 9100 # 定义这些 Endpoints 的指标端口为 9100    scheme: https  jobLabel: k8s-app

ServiceMonitor 配置

Alertmanager

Alertmanager 自定义资源(CRD)声明在 Kubernetes 集群中运行的 Alertmanager 的期望设置。它也提供了配置副本集和持久化存储的选项。

每一个 Alertmanager 资源,Operator 都会在相同 namespace 下部署成一个正确配置的 StatefulSet。Alertmanager pods 配置挂载一个名为 <alertmanager-name> 的 Secret, 使用 alertmanager.yaml key 对作为配置文件。

当有两个或更多配置的副本时,Operator 可以高可用性模式运行Alertmanager实例。

一个样例配置如下:

kind: Alertmanager #  一个 Alertmanager 对象metadata:  name: prometheus-prometheus-oper-alertmanagerspec:  baseImage: quay.io/prometheus/alertmanager  replicas: 3      # 定义该 Alertmanager 集群的节点数为 3  version: v0.17.0

Alertmanager 配置

PrometheusRule

PrometheusRule CRD 声明一个或多个 Prometheus 实例需要的 Prometheus rule。

Alerts 和 recording rules 可以保存并应用为 yaml 文件,可以被动态加载而不需要重启。

一个样例配置如下:

kind: PrometheusRulemetadata:  labels: # 定义该 PrometheusRule 的 label, 显然它会被 Prometheus 选中    prometheus: k8s    role: alert-rules  name: prometheus-k8s-rulesspec:  groups:  - name: k8s.rules    rules: # 定义了一组规则,其中只有一条报警规则,用来报警 kubelet 是不是挂了    - alert: KubeletDown      annotations:        message: Kubelet has disappeared from Prometheus target discovery.      expr: |        absent(up{job="kubelet"} == 1)      for: 15m      labels:        severity: critical

PrometheusRule 配置

它们之间的关系如下图:

Prometheus-operator的介绍和配置方法

Prometheus Operator 的优点

Prometheus Operator 中所有的 API 对象都是 CRD 中定义好的 Schema,API Server会校验。当开发者使用 ConfigMap 保存配置没有任何校验,配置文件写错时,自表现为功能不可用,问题排查复杂。在 Prometheus Operator 中,所有在 Prometheus 对象、ServiceMonitor 对象、PrometheusRule 对象中的配置都是有 Schema 校验的,校验失败 apply 直接出错,这就大大降低了配置异常的风险。

Prometheus Operator 借助 K8S 将 Prometheus 服务平台化。有了 Prometheus 和 AlertManager 这样的 API 对象,非常简单、快速的可以在 K8S 集群中创建和管理 Prometheus 服务和 AlertManager 服务,以应对不同业务部门,不同领域的监控需求。

ServiceMonitor 和 PrometheusRule 解决了 Prometheus 配置难维护问题,开发者不再需要去专门学习 Prometheus 的配置文件,不再需要通过 CI 和 k8s ConfigMap 等手段把配置文件更新到 Pod 内再触发 webhook 热更新,只需要修改这两个对象资源就可以了。

到此,关于“Prometheus-operator的介绍和配置方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Prometheus-operator的介绍和配置方法

本文链接: https://lsjlt.com/news/295228.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Prometheus-operator的介绍和配置方法
    这篇文章主要介绍“Prometheus-operator的介绍和配置方法”,在日常操作中,相信很多人在Prometheus-operator的介绍和配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Pro...
    99+
    2023-06-19
  • Python Flask 模型介绍和配置方法
    目录Flask数据模型和连接数据库一、安装二、配置数据库连接、创建模型类三、使用命令创建数据库表四、以注册为例Flask数据模型和连接数据库 flask是基于MTV的结构,其中M指的...
    99+
    2022-12-08
    Python Flask 模型 Python Flask Flask数据模型
  • Linux下iptables的配置方法介绍
    本篇内容主要讲解“Linux下iptables的配置方法介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下iptables的配置方法介绍”吧!作为公司上网的路由器需要实现的功能有na...
    99+
    2023-06-12
  • nginx服务器的安装和配置的方法介绍
    nginx服务器的安装和配置 1.安装 1)在Windows环境下的安装 下载windows版本的nginx后,解压,然后进入到目录中,运行:start nginx 其他命令:nginx -s [ stop|quit|r...
    99+
    2023-05-26
    nginx服务器安装 nginx服务器配置 nginx 安装 服务器 方法
  • JBoss5.x下配置Log4j方法介绍
    最近在学习JBoss下配置Log4j,JBoss的各个版本的目录、JBoss和Log4j集成的文件名每次都有变化,在JBoss5.x下配置了log4j.xml文件,但是配置没有生效。如果你在项目中没有指定使用的log4j的配置文件,最好使用...
    99+
    2023-05-30
    jboss 配置 log4j
  • Vue路由配置方法详细介绍
    目录手动配置Vue-router环境组件内部跳转路由与传参useRouter,useRoute手动配置Vue-router环境 1、下载包: npm i vue-router --s...
    99+
    2024-04-02
  • SpringBoot加密配置文件方法介绍
    目录一个简单的SpringBoot项目基于Jasypt的加密集成步骤环境准备引入依赖内容加密密码的传递方式在实践中,项目的某些配置信息是需要进行加密处理的,以减少敏感信息泄露的风险。...
    99+
    2023-01-18
    Spring Boot加密配置文件 Spring Boot配置文件加密
  • prometheus动态配置的方法是什么
    Prometheus的动态配置一般是通过文件服务发现或者远程配置方式来实现的。 文件服务发现:Prometheus支持通过文件服...
    99+
    2024-03-14
    prometheus
  • webpack配置文件和常用配置项介绍
    1、安装webpack 1.全局安装webpack:npm install webpack -g 或者转化了cnpm则将npm改为cnpm进行安装 2.进行初始化建立package.json文件记录插件,命...
    99+
    2022-06-04
    配置文件 常用 webpack
  • Linux下的SSH端口转发配置的方法介绍
    本篇内容介绍了“Linux下的SSH端口转发配置的方法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!通常情况下两个不同的网络之间总会开放...
    99+
    2023-06-13
  • catalog恢复目录介绍和配置
    2.1、nocatalog介绍nocatalog方式 就是用control file作为catalog,每一次备份都要往控制文件里面写好多备份信息,控制文件里面会有越来越多的备份信息。因此,当使用rman ...
    99+
    2024-04-02
  • Nginx配置SSL和WSS步骤介绍
    目录前言一.Nginx安装1.下载Nginx2.安装依赖3.编译安装Nginx二.SSL配置三.WSS配置前言 近期,由于要发布微信小程序,小程序的发布必须使用已备案的服务器域名及h...
    99+
    2024-04-02
  • DataTable的AcceptChanges()和RejectChanges()方法介绍
    AcceptChanges()方法是DataTable类的一个方法,用于将对DataTable所做的所有更改应用到当前数据行。这意味...
    99+
    2023-08-09
    DataTable
  • MongoDB Sharding Balancer介绍和设置方法举例
    Balancer介绍: 当存在多个可用的分片,且块的数量足够多,mongodb的balancer(平衡器)会把数据迁移到其他分片上 指定凌晨0点到4点之间均衡: 在mongos节点,use config ...
    99+
    2024-04-02
  • phpmyadmin配置的详细介绍
    本篇内容主要讲解“phpmyadmin配置的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“phpmyadmin配置的详细介绍”吧!  phpmyadmi...
    99+
    2024-04-02
  • Nginx的安装配置介绍
    这篇文章主要介绍“Nginx的安装配置介绍”,在日常操作中,相信很多人在Nginx的安装配置介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Nginx的安装配置介绍”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-06-04
  • CentOS6.3下Samba服务器的安装与配置方法介绍
    这篇文章主要介绍“CentOS6.3下Samba服务器的安装与配置方法介绍”,在日常操作中,相信很多人在CentOS6.3下Samba服务器的安装与配置方法介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C...
    99+
    2023-06-10
  • Hiebernate的基本配置和映射类型介绍
    本篇内容介绍了“Hiebernate的基本配置和映射类型介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!<!--标准的XML文件的起...
    99+
    2023-06-17
  • 详细介绍GitLab的安装和配置过程
    在当今的软件开发领域,版本控制是一项非常重要的工作,而Git是这个领域中最为流行的版本控制系统之一。但是,为了更好地管理自己的项目,还需要搭建一套Git服务器来进行代码的提交和管理。其中,GitLab就是一个极好的选择。本文将详细介绍Git...
    99+
    2023-10-22
  • C#中的Task.WaitAll和Task.WaitAny方法介绍
    一、简介 Task.WaitAll:等待所有提供的 Task 对象完成执行过程。 Task.WaitAny:等待提供的任一 Task 对象完成执行过程。 二、代码案例 Task.Wa...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作