• node_exporter自定义监控


    【1】需求

    由于项目需求,我们往往需要采集exporter不能采集到的数据,那么用go在短时间内定制exporter和后期交接的维护都会存在时间成本,所有我们可以用通过 node_exporter --collector.textfile.directory 参数,用shell或者python来收集数据。

    【2】Prometheus实现步骤

    (2.0)步骤概述

    1)自定义脚本并把内容以key:value的形式写入以 .prom结尾的文件
    2)定时任务执行自定义脚本
    3)添加启动参数,node_exporter采集数据(采集频率为定时任务的频率)

    (2.1)配置启动

    通过textfile采集用户自己生成的指标,参数--collector.textfile.directory,如下:

    ./node_exporter --collector.textfile.directory='/path/'

    (2.2)输出格式

    必须要输出如下格式,help 要是不写会默认给你加上,但 type,和最下面的 key value 必须要写

    #HELP example_metric read from /path/example.prom  
    

    (2.3)最终文档成型

    《1》生成的文件必须放在   --collector.textfile.directory='/path/'  指定目录下

    《2》生成的文件内容必须包含

    #TYPE example_metric untyped  
    example_metric 1

    《3》生成的文件,文件后缀名必须以 .prom 结尾

    (2.4)定时任务运行脚本生成采集指标值

      一般脚本任务(输出指标到.prom文件)会被放入crontab中,按照需求设置指标采集时间;

      同时node_exporter采集的时候文件执行写入操作,可能导致文件出现问题。

      我们可以将任务先转移到一个临时文件,然后通过临时文件的重命名进行操作。

    */2 * * * * sh test.sh && mv /path/example.promm /path/example.prom

    (2.5)指标采集

    指标采集的时间是根据你的crontab的定时任务的时间来的,可以根据通过这个指标来判断数据是否上报node_textfile_mtime_seconds;也可以对这个指标监控, node_textfile_mtime_seconds这个key值表示的是textfile最后一次采集文件的时间,如 

    node_textfile_mtime_seconds{file="process_counts.prom"}

    【3】案例实现

    (3.1)基本案例》监控当前登录用户数量

    1)自定义脚本并把内容以key:value的形式写入以 .prom结尾的文件
    2)定时任务执行自定义脚本
    3)添加启动参数,node_exporter采集数据(采集频率为定时任务的频率)

    (1)先启动启动采集器也没关系,注意参数 --collector.textfile.directory=/data/dba/tmp

      

    (2)启动定时任务,每分钟执行一次;

      然后我们访问一下本地的采集指标,看看是否有对应的采集指标,如下图我们的采集指标 login_users 就已经出来了,如果没出来则看看文件是否生成。

      注意如下图,我们这里没有写 #TYPE,所以是隐式的 untyped(也就是默认根据内容自动隐式转换)

      

    (3)PromQL 查验一下

      如下图,正常,这样就可以引用到grafana 和 告警里去了。

      

     搞定,完成;

    (3.2)监控 keepalived 进程存活脚本

      

    如果有类似多个采集脚本,那么需要额外写一个参考脚本;

    【相关参考】

    一、node_exporter安装非常简单,只要解压后直接后台运行即可,默认端口是9100

    # tar xvf node_exporter-1.0.1.linux-amd64.tar.gz

    # mv node_exporter-1.0.1.linux-amd64 /usr/local/node_exporter

    # cat >/usr/lib/systemd/system/node_exporter.service  <<EOF
    
    [Unit]
    Description=node_exporter
    
    [Service]
    
    ExecStart=/usr/local/node_exporter/node_exporter \
    --web.listen-address=:9100 \
    --collector.systemd \
    --collector.systemd.unit-whitelist="(ssh|docker|rsyslog|redis-server).service" \
    --collector.textfile.directory=/usr/local/node_exporter/textfile.collected
    
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
    # systemctl enable node_exporter
    # systemctl start node_exporter.service

    二、启动参数说明

    1、启用systemd收集器

    systemd收集器记录systemd中的服务和系统状态。首先需要通过参数--collector.systemd启用该收集器,同时如果不希望收集所有的服务,只收集部分关键服务,node_exporter在启动时可以使用--collector.systemd.unit-whitelist参数配置指定的服务。

    2、指定textfile收集器目录

    使用textfile收集器可以让用户添加自定义的度量指标,功能类似pushgateway,同zabbix中自定义的item一样,只要将度量指标和值按照prometheus规范的格式输出到指定位置且以.prom后缀文件保存,textfile收集器会自动读取collector.textfile.directory目录下所有以.prom结尾的文件,并提取所有格式为Prometheus的指标暴露给Prometheus来抓取。

    textfile收集器默认是开启的,我们只需要指定--collector.textfile.directory的路径即可。

    --collector.textfile.directory=/usr/local/node_exporter/textfile.collected

    例如,需要监控系统登录用户数

    # echo "node_login_users $(who |wc -l)" > /usr/local/node_exporter/textfile.collected/login_users.prom

    # echo "node_processes $(ps -ef |wc -l)" > /usr/local/node_exporter/textfile.collected/node_processes.prom

    以定时任务的方式采集

    */1 * * * * echo "login_users $(who |wc -l)" > /usr/local/node_exporter/textfile.collected/login_users.prom

    */1 * * * * echo "login_users $(who |wc -l)" > /usr/local/node_exporter/textfile.collected/node_processes.prom

    3、启用或禁用收集器

    通过 ./node_exporter -h 命令,可以看到默认启用了哪些收集器(default: enabled),若要禁用某个收集器,如

    --collector.ntp,可以修改为 --no-collector.ntp,即禁用该收集器。 作者:itcooking https://www.bilibili.com/read/cv6494666/ 出处:bilibili

    【参考文档】

    tom:https://www.cnblogs.com/xysr-tom/p/13389650.html

    http://t.zoukankan.com/lemon-le-p-14593297.html

  • 相关阅读:
    数组操作
    HTML CSS 笔记
    jacascript 滚动scroll
    SEO优化技巧
    STP选举规则和例题
    3.1GSM-R的网络组成
    光缆的型号
    光缆的种类
    fdisk命令分区过程
    文件系统管理--挂载光盘与U盘
  • 原文地址:https://www.cnblogs.com/gered/p/16567438.html
Copyright © 2020-2023  润新知