• Prometheus简介


    启动:
    ./prometheus --config.file=prometheus.yml
    其它启动参数:
    --web.enable-lifecycle         启用 /reload接口(调用可以触发Prometheus配置和规则文件的重新加载)
    --web.max-connections=512       最大链接数
    --web.read-timeout=5m               请求连接的最大等待时间, 防止太多的空闲链接,占用资源
    --query.timeout=2m             查询超时时间
    --query.max-concurrency=200   最大查询并发
     
     
    Prometheus需要与许多其它组件集成:
    • Jobs/Exporters
    部分系统直接以prometheus兼容的格式暴露数据,可以直接监控
    部分系统则需通过不同的Exporter进行数据汇报,它们统一命名格式为:xx_exporter
    • Pushgateway
    Prometheus采用pull模式,可能由于不在一个子网或防火墙导致无法直接拉取各target数据
    可以通过client SDK或者Restful API将数据先推送到pushgateway汇总后,再由Prometheus统一收集
    pushgateway可以持久化推送给它的所有监控数据
    但prometheus拉取状态up只针对pushgateway,无法做到对每个节点有效。
    • 其它Prometheus Server
    Prometheus Server可以从其它Prometheus Server拉取数据
    • Web UI
    常用Grafana
    • Alertmanager
    将相应的报警信息通过邮件或者短信的方式进行数据的一个告警。
    启动时,使用--config.file参数指定一份配置文件
    调用webhook程序的方法:
    receivers:
    - name: 'paas.web.hook'
      webhook_configs:
      - url: 'http://132.252.37.10:9156/alert'
    route:
      group_interval: 5m
      group_wait: 30s
      receiver: paas.web.hook
      repeat_interval: 3h
     
    --config.file参数指定的prometheus.yml配置文件写法:
    • 全局配置
    global:
      scrape_interval:     xxx  # 设置采集数据的时间间隔,默认是1分钟
      evaluation_interval: xxx  # 评估一次rule的时间间隔,默认是1分钟
      scrape_timeout:      xxx  # 拉取一个target的超时时间。
      evaluation_interval: xxx  # 额外的属性,会添加到拉取的数据并存到数据库中
    • Alertmanager配置
    alerting:
      alertmanagers:
      - static_configs:
        - targets:
          - alertmanager:9093
    alert_relabel_configs:动态修改 alert 属性的规则配置。
    alertmanagers:用于动态发现alertmanager的配置。
    • scrape_configs
    主要用于配置拉取数据节点
    同一个job下可能包含很多相同类型的instance,每一个都是一个独立的数据源(target)称之为实例(instance)。
    scrape_configs:
      - job_name: 'prometheus'
        scrape_interval: 5s
        static_configs:
        - targets: ['192.168.48.130:9090'] 
    job_name:任务名称
    honor_labels:prometheus在采集数据的同时,会自动在时序的基础上添加job和instance的标签,作为数据源(target)的标识,以便区分。如果其中任一标签已经在此前采集的数据中存在,那么将会根据 honor_labels设置选项来决定新标签。当设置为 true,以拉取数据为准;否则以服务配置为准
    params:数据拉取访问时带的请求参数
    scrape_interval、scrape_timeout:会覆盖全局配置
    metrics_path:拉取节点的metric路径,默认为/metrics
    scheme:拉取数据访问协议,如果是https,可能还需要配置证书等
    sample_limit:存储的数据标签个数限制,如果超过限制,该数据将被忽略,不入存储;默认值为0,表示没有限制
    tls_config:连接target使用的tls配置,包括ca_file、cert_file、key_file;或者可以通过设定insecure_skip_verify为false允许不安全的连接
    relabel_configs:拉取数据重置标签配置,可以用来重置、过滤、删除标签
            source_labels:源标签
            target_labels:要替换的目标标签
            separator:多个标签间的分隔符,默认为分号
            regex:匹配源标签里的值
            replacement:
            modules:???
            action:分为keep、replace、drop、labeldrop、labelkeep等
    static_configs:直接写死targets地址
    xxx__sd_configs:Prometheus在代码上就已经对Kubernetes、consul、dockerswarm、openstack等有了原生的支持,可以通过服务发现的形式来自动监控集群
    以kubernetes_sd_configs为例:以role来定义,从k8s restful api检索目标,并保持与集群的同步状态。
           支持的role包括:node、service、pod、endpoints、ingress
           每种role取到的监控数据有不同标签,可以根据需要进行相应relabel操作,详见官方文档
    • remote_write和remote_read
    • 规则
    Prometheus可以配置rules,然后定时查询数据,当条件触发的时候,会将alert推送到配置的alertmanager
    可以先把规则写到独立的文件里,在把文件名写进来:
    rule_files:
      # - "first_rules.yml"
      # - "second_rules.yml"
    规则文件写法:
    groups:
      - name: sum
        rules:
        - record: job:up:sum
          expr: sum(up) by (job)
          lables:
            rulesName: record
    每一个group包括若干条rule
    每条rule包括:
        alert:这一条告警的名字
        expr:表达式
        for:第一次告警触发后会等待若干时间
        labels:向告警中添加标签
        annotations:也是一系列标签,用于存放较长的信息
     
    prometheus在localhost:9090/metrics暴露自身指标
    同时在localhost:9090/graph提供了图形化接口,可以展示所有的Runtime&Build info、启动的命令行参数、配置文件、Rules、Targets、Service Discovery
  • 相关阅读:
    Oracle巡检html版
    bat批处理常用脚本
    UiBot踩坑记录
    服务器的一些优化
    开始学算法(一)
    docker 容器服务脚本自启动
    Cenots Ubuntu linux系统服务脚本开机自启方法
    docker容器添加自定义hosts
    docker 常用命令
    《图解HTTP》学习笔记
  • 原文地址:https://www.cnblogs.com/yangyuliufeng/p/14902077.html
Copyright © 2020-2023  润新知