在k8s集群上部署Prometheus监控系统

本文详述如何在Kubernetes集群上利用Prometheus Operator部署Prometheus监控系统,包括Prometheus Operator的介绍、Operator部署Prometheus的步骤、解决部署过程中遇到的问题,以及配置短信告警平台。
摘要由CSDN通过智能技术生成

在这里插入图片描述

简介

Prometheus目前是Kubernetes集群监控的官方推荐方案,也是目前为止最流行的解决方案。本文首先介绍Prometheus Operator组件,接着介绍基于Prometheus Operator在Kubernetes集群配置、部署服务、告警。通过本文,大家可以在Kubernetes集群的基础上学习和搭建完善的Prometheus监控系统。

Kubernetes Operator

在 Kubernetes 中,管理“有状态应用”是一个比较复杂的过程,尤其是编写 Pod 模板的时候,总有一种“在 YAML 文件里编程序”的感觉,让人很不舒服。而在 Kubernetes 生态中,还有一个相对更加灵活和编程友好的管理“有状态应用”的解决方案,它就是:Operator。
对于无状态应用,在kubernetes里面管理相对简单容易。但对于数据库、缓存或者监控系统等有状态应用的管理,就是挑战了。这些系统需要掌握相应领域的知识,正确地进行伸缩和升级,当数据丢失或不可用的时候,要进行有效的重新配置。我们希望这些应用相关的运维技能可以编码到软件之中,从而借助Kubernetes 的能力,正确地运行和管理复杂应用。
使用Operator能够方便的维护有状态应用。Operator方案使用CRD机制对Kubernetes API进行扩展,将特定应用的知识融入其中,让用户可以创建、配置和管理应用。与Kubernetes的内置资源一样,Operator操作的不是一个单实例应用,而是集群范围内的多实例。

Prometheus Operator

 Prometheus Operator为Kubernetes服务和Prometheus实例的部署和管理提供了简单的监控定义。

Prometheus Operator提供了以下功能:

 1、创建/毁坏。在Kubernetes namespace中更容易启动一个Prometheus实例,一个特定的应用程序或团队更容易使用的Operator。
 2、简单配置。配Prometheus的基础东西,比如在Kubernetes的本地资源versions, persistence,retention policies和replicas。
 3、Target Services通过标签。基于常见的Kubernetes label查询,自动生成监控target配置;不需要学习Prometheus特定的配置语言。

如下所示,是Prometheus Operator的架构示意图:
在这里插入图片描述

架构中的各组成部分以不同的资源方式运行在Kubernetes集群中,它们各自有不同的作用。
Operator:Operator资源会根据自定义资源(Custom Resource Definition,CRD)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。
Prometheus: Prometheus资源是声明性地描述Prometheus部署的期望状态。
Prometheus Server: Operator根据自定义资源Prometheus类型中定义的内容而部署的Prometheus Server集群,这些自定义资源可以看作用来管理Prometheus Server 集群的StatefulSets资源。
ServiceMonitor:ServiceMonitor也是一个自定义资源,它描述了一组被Prometheus监控的target列表。该资源通过标签来选取对应的Service Endpoint,让Prometheus Server通过选取的Service来获取Metrics信息。
Service:Service资源主要用来对应Kubernetes集群中的Metrics Server Pod,提供给ServiceMonitor选取,让Prometheus Server来获取信息。简单说就是Prometheus监控的对象,例如Node Exporter Service、Mysql Exporter Service等。
Alertmanager:Alertmanager也是一个自定义资源类型,由Operator根据资源描述内容来部署Alertmanager集群。

通过Operator方式部署Prometheus

传统方式部署Promehteus步骤相对复杂,随着Operator的日益成熟,推荐使用Operator方式部署Prometheus。通过Operator方式部署Prometheus,可将更多的操作集成到Operator中,简化了操作过程,也使部署更加简单。本节详细介绍在Kubernetes中使用Operator方式部署整套Prometheus监控和告警。

一、Kubernetes基础环境

部署Prometheus依赖的基础环境如下:

Kubernetes版本为1.18.3。
Prometheus版本:kube-prometheus-release-0.6
克隆地址:https://github.com/prometheus-operator/kube-prometheus.git

二、部署详细步骤

1、下载prometheus operator代码

https://github.com/prometheus-operator/kube-prometheus/tree/release-0.6

2、修改定制安装部署参数
这一步是prometheus能否按照自己的需求进行部署的关键步骤,所有需要部署的系统和设置全部在这一步完成。
修改example.jsonnet配置文件,用于后续生成定制化的prometheus部署:
a、设置prometheus组件镜像版本和本地镜像仓库地址;
b、设置alertmanager告警发送接口参数alertmanager-config.yaml;
c、设置部署的namespace和需要监控的namespace
d、设置自定义的grafana dashboard模版文件
e、设置prometheus自定义的告警触发设置
等等配置
配置文件的具体代码如下:

local mixin = import 'kube-prometheus/kube-prometheus-config-mixins.libsonnet';
local kp =
  (import 'kube-prometheus/kube-prometheus.libsonnet') +
  // Uncomment the following imports to enable its patches
  // (import 'kube-prometheus/kube-prometheus-anti-affinity.libsonnet') +
  // (import 'kube-prometheus/kube-prometheus-managed-cluster.libsonnet') +
  // (import 'kube-prometheus/kube-prometheus-node-ports.libsonnet') +
  // (import 'kube-prometheus/kube-prometheus-static-etcd.libsonnet') +
  // (import 'kube-prometheus/kube-prometheus-thanos-sidecar.libsonnet') +
  // (import 'kube-prometheus/kube-prometheus-custom-metrics.libsonnet') +
  {
   
    _config+:: {
    // 定义需要部署到哪个namespace
      namespace: 'monitoring',
      versions+:: {
    // 定义需要部署到各个组件的版本
        alertmanager: "v0.21.0",
        nodeExporter: "v0.18.1",
        kubeStateMetrics: "1.9.5",
        kubeRbacProxy: "v0.4.1",
        prometheusOperator: "v0.42.1",
        prometheus: "v2.20.0",
        grafana: "7.1.0",
        prometheusAdapter: "v0.7.0",
      },

      prometheus+:: {
    // 定义需要监控的namespace,prometheus默认只监控monitoring、default、kube-system。
        namespaces+: ['bbs', 'testhpa'],
        names: 'k8s-prometheus',
        replicas: 2,
        //rules: {
   },
      },

      alertmanager+:: {
   
        name: 'alertmain',
        config: importstr 'alertmanager-config.yaml',
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值