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需要与许多其它组件集成:
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

Prometheus简介

上一篇:DOS程序员手册(九)


下一篇:Unity3D笔记三 物理引擎