• Prometheus指标采集常用配置


    一、node-exporter配置textfile收集器
    textfile收集器作用:
    运行暴露自定义指标。例如,需要在某个被监控节点上添加一个地理位置的指标.
    node-exporter会自动启动textfile收集器,只需要指定textfile收集器指标所在的目录即可。使用--collector.textfile.directory指定
    如下,定义了一个metadata,里面包含两个标签,一个是role,一个是datacenter(nj南京)。最后,指标的值为1,因为它不是计数型、测量型或计时型的指标,而是提供上下文。

    echo 'metadata{role="docker_server",datacenter="NJ"} 1' >> /zhao/node-exporter/textfile_collector/metadata.prom
    

    启动命令./node_exporter --collector.textfile.directory=/zhao/node-exporter/textfile_collector。效果如下

    二、node-exporter配置只收集部分系统服务指标
    通过systemd收集器白名单过滤
    --collector.systemd.unit-whitelist="(docker|ssh|rsyslog).service"

    以上两个收集器完整使用示例

    三、Prometheus配置多个targets
    如果一个job里有多台主机,只需要在targets里配置多个ip和端口即可,使用逗号隔开

    [root@bogon prometheus]# cat prometheus.yml |grep -v '#'|grep -v ^$|tail -n 7
    scrape_configs:
      - job_name: 'prometheus'
        static_configs:
        - targets: ['192.168.68.17:9104']
      - job_name: 'node'
        static_configs:
        - targets: ['192.168.68.17:9100']
    [root@bogon prometheus]#
    

    重启Prometheus

    四、过滤不需要收集的指标
    如下,只收集和返回cpu和内存相关的指标

    - job_name: 'node'
        static_configs:
        - targets: ['192.168.68.17:9100']
        params:
          collect[]:
            - cpu
            - meminfo
    

    五、配置记录规则,返回自定义计算指标
    有时候,需要将指标做相应计算后再进行返回。这时候我们就需要添加记录规则
    配置prometheus.yml文件,在rule_file:部分添加一行 - "rules/node_rules.yml" 同时,在prometheus.yml配置文件的同级目录下,创建一个rules文件夹并新增一个node_rules.yml文件,文件内容如下:

    groups:
    - name: node_rules
      rules:
      - record: instance:node_cpu:avg_rate5m
        expr:  100 - avg (irate(node_cpu_seconds_total{job="node",mode="idle"}[5m])) by (instance) * 100
    

    配置文件解析:记录规则在规则组groups中定义,这里的规则组叫做node_rules,规则组名称在服务器中必须是唯一的。编写规则rules,记录一个规则值node_cpu:avg_rate5m(节点cpu在5m内的平均速率),计算公式为expr。如需添加多个规则,只需添加多个- record和expr即可。搜索该时间序列只需要输入instance:node_cpu:avg_rate5m就能搜索到。

    六、基于文件的服务发现
    静态配置需要维护一长串主机列表,并不是一个可拓展的任务,一旦规模起来了,这种局限性更为明显。
    基于文件的服务发现比静态配置更先进一小步,非常适合配置管理工具,例如puppet、ansible。定期执行脚本生成这些文件,Prometheus会按照指定时间计划从这些文件重新加载目标。这些文件可以是yaml或json格式。
    用file_sd_configs块替换prometheus.yml中的static_configs块。

    - job_name: node
      file_sd_configs:
        - files:
          - targets/nods/*.json
          refresh_interval: 5m
    - job_name: docker
      file_sd_configs:
        - files:
          - targets/docker/*.json
          refresh_interval: 5m
    

    默认情况下,这些文件发生变化是,Prometheus会自动重新加载文件内容。为以防万一,还可以指定refresh_interval选项,该值为每个间隔结束时重新加载文件列表中的目标时间。也就是每隔5m重新加载文件列表中的文件。同样,我们需要在prometheus.yml的同级目录下,创建targets/{nodes,docker}文件夹
    同时,我们还要在刚才新创建的文件夹下创建对应的json文件,内容如下

    [{
        "targets":  [
            "ip地址:端口",
            "ip地址:端口"
        ],
        "labels": {
            "datacenter": "nj"
        }
    }]
    

    以上json文件,还添加了一个nj标签。也可以使用yaml格式,如下

    - targets:
        - "ip地址:端口",
        - "ip地址:端口"
    

    七、基于API的服务发现
    某些工具和平台上提供了原生的服务发现集成,内置支持prometheus。例如Amazon EC2,Azure、Consul,Google Compute Cloud,Kubernetes。这个后续实际使用到了,再进行补充

    八、基于DNS的服务发现
    暂时没搞懂什么意思,后续明白了,再进行补充

  • 相关阅读:
    内置常量
    python100练
    python之禅
    Django
    pymsql入门
    jQuery事件
    数据库(索引)
    算法基础知识
    数据库(查询专项)
    数据库(所有人都坐下!这是基本操作!)
  • 原文地址:https://www.cnblogs.com/biaopei/p/12091800.html
Copyright © 2020-2023  润新知