• 应用变动相当频繁的场景
  • cncf - 云原生场景

image.png

  1. 核心组件

prometheus serveralertmanagerexporter —- 不支持prometheus指标格式的应用
web UIdiscoverpushgateway

  1. prometheus的服务发现机制
  • 方法1:基于文件
  • 方法2:基于主机dns
  • 方法3:基于(微服务场景)服务注册中心
  • 方法4:基于k8s的服务发现

    基本概念

    ```bash 1.组件解析: exporter - 将宿主机的数据格式转换成 prometheus的监控数据格式 adapter - 适配器,收到prometheus的监控数据,根据实际的监控指标来做一些自动化操作

2.数据指标 metrics 简单样式:key value 常见样式:key{label 表达式 value,label2=xxx} value 拓展样式:{“name“ — key表达式}

3.指标的获取 任务job - 采集一系列的metrics

  1. - 有可能是多台主机上的数据
  2. 实例instance - 每台主机上的数据

4.prometheus采集的数据如何使用 实时数据 - 瞬时数据 - 时间点采集到的数据 范围数据 - 区间数据 - 时间范围采集到的数据集合

5.数据的应用 分析 统计 聚合 简单运算 策略 告警 自动化措施

<a name="LCpUq"></a>
### 环境搭建
```bash
1.监控配置 Prometheus server    
global                    监控的全局配置,数据的周期性采集
alertmanager        告警机制
rules                        告警的规则
scrape_configs    监控的目标 - 主机级别
        job              -- 可以简单的理解为 主机组
        instance  -- 可以简单理解为一个目标主机或应用服务

2.可视化工具 - grafana
3.采集工具 - exporter
            - prometheus提供的
            - 第三方提供的exporter

promQL基础

学习promQL的捷径:
    1 定制自己业务场景的metrics
    2 根据别人的promQL语句,学习promeQL的基本运算方法
        加减乘除
        最大值、最小值、topn值、变化率等

1.metrics 
瞬时值 -    时间点
        最新值        metrics{label}
        偏移值        metrics{label} offset 3m
范围值                metrics{label}[5m]

问题:当前时间 之前 5-7分钟之内的数据metrics{label} [2m] offset 5m


2.运算    -    定位:在获取到的数据集中进行简单的二元运算或者聚合
①二元运算    + - * / % 
②聚合
    普通方法:max min count top
    专用函数:进阶
        比率、变化率、百分位等
③逻辑    and or unless

定制专属metrics 
    方式1:开发的时候,自己定制暴露的数据格式
    方法2:在prometheus的rules中定制分析的指标            因为手工分析指标的表达式太长,所以要固化下来

granfa图形绘制

流程:
    1 定制业务的专属metrics 
    2 根据业务需求定制监控指标
        metrics表达式
            情况1:
                简单表达式,直接进入到3
            情况2:
                复杂表达式,直接固化 - 监控规则
    3 开始绘图
        3.1 选择要绘制的图类型
        3.2 拷贝可用的metrics表达式
        3.3 图形修改
            - 图例、标题、颜色
        3.4 dashboard保存
            - 图形的保存、dashboard保存

告警实践

问题1:我们在绘制图形的时候,有的表达式太复杂,写起来不方便
        告警规则 
            - 生成专用的指标
            作用:
                1 快速输入
                2 告警规则的表达精简

    告警环境 
        告警逻辑 
            规则 - 表达式 - 阈值 - alertmanager - 插件 - 通知
        告警细节:
            告警去重
                - 标签
            告警分组
                - 标签
            告警路由
                - 告警通知人
            告警抑制
                - 避免重复性告警
                - 避免依赖告警
        告警演示 - 邮箱 


        alertmanager定制
            1 邮箱授权码
            2 alertmanager软件安装
                配置、服务文件
            3 alertmanager 和 prometheus集成

    告警模板:
        问题:默认的alertmanager内容不是我们想要的
        实践:
            1 alertmanager模板配置
            2 alertmanager模板导入和引用
            3 prometheus传递模板用到的值


    如何把docker应用迁移到k8s里面
        实践1 - 纯原生的资源清单文件创建prometheus环境

        实践2 - 借助于operator创建prometheus新环境
            operator 
                1 定制的管理体系
                    CRD、controller
                2 定制资源清单文件