zoukankan      html  css  js  c++  java
  • prometheus02 nodeexporter部署及使用

    node_exporter安装及部署

    Prometheus使用exporter工具来暴露主机和应用程序上的指标。有很多中类型的exporter。node_exporter下载地址

    1.二进制安装node_exporter

    1.添加新的系统用户
    useradd --system node_exporter
    2. 进行解压缩下载的软件,然后拷贝node_exporter文件到/usr/bin目录中。
    tar zxvf node_exporter-1.2.2.linux-amd64.tar.gz -C /usr/bin --strip-components=1 --wildcards */node_exporter
    
    3.添加systemd unit文件
    vim node-exporter.service 
        [Unit]
        Description=Node Exporter
        Documentation=https://github.com/prometheus/node_exporter
        After=network.target
    
        [Service]
        User=node_exporter
        ExecStart=/usr/bin/node_exporter
        Restart=on-failure
    
        [Install]
        WantedBy=multi-user.target
    
    install -m 0644 ./node-exporter.service /etc/systemd/system/
    
    4. 启动服务
    systemctl daemon-reload
    systemctl enable node-exporter
    systemctl start node-exporter
    

    node-exporter常用选项

    默认情况下,node_exporter 在端口9100上运行,并在路径/metrics上暴露指标。可以通过 --web.listen-address和 --web.telemetry-path参数来设置端口和路径。

    node_exporter --web.listen-address=":9222"  --web.telemetry-path="/node_metrics"
    

    以上的定义就是监听端口为9222,暴露的路径为node_metrics。

    很多收集器默认都是启用的,如果不想启用某些收集器,可以通过使用no-前缀来修改状态。

    如:不要收集CPU相关信息

    --no-collector.cpu
    

    2.容器安装node_exporter

    参考node_exporter具体选项使用:https://github.com/prometheus/node_exporter

    docker pull prom/node-exporter
    # 
    # 容器启动node-exporter:
    docker run -d \
      --net="host" \
      --pid="host" \
      -v "/:/host:ro,rslave" \
      quay.io/prometheus/node-exporter:latest \
      --path.rootfs=/host
    
    # 编写docker-compose启动node-exporter容器文件:
    vim docker-compse.yml
    networks:
      monitor:
        driver: bridge
        
    services:
      node_exporter:
         image: prom/node-exporter:latest
         container_name: node_exporter
         command: 
           - '--path.rootfs=/host'
           #- '--web.telemetry-path=/node_metrics' # 修改默认的uri(/metrics)
         network_mode: host
         pid: host
         hostname: node_exporter
         restart: always
         user: root
         volumes: 
           - '/:/host:ro,rslave'
         ports:
           - "9100:9100"
         networks:
           - monitor
    

    node_exporter使用案例

    1.textfile收集器

    textfile收集器在暴露自定义指标时特别有用。这些自定义指标可能是批处理或cron作业等无法抓取的,可能是没有exporter的源,甚至可能是为主机提供上下文的静态指标

    收集器通过扫描指定目录中的文件,提取所有格式为Prometheus指标的字符串,然后暴露它们以便抓取。

    1.创建一个目录来保存指标定义文件

    mkdir -p /var/lib/node_exporter/textfile_collector
    

    2.创建一个文件

    echo "metadata{role='docker_server',datacenter='SH'} 1" > /var/lib/node_exporter/textfile_collector/metadata.prom
    

    [注意]如果要启用textfile收集器,由于它默认会被加载,所以可能需要我们指定它的加载目录。 --collector.textfile.directory

    2.systemd收集器

    systemd收集器默认收集了众多指标,如果只想收集某些服务的话,可以把他们加入白名单。使用 --collector.systemd.unit-whitelist 参数配置

    docker.service
    sshd.service
    rsyslog.service
    

    3.Node Exporter修改如下

    vim /etc/systemd/system/node-exporter.service
    
    [Unit]
    Description=Node Exporter
    Documentation=https://github.com/prometheus/node_exporter
    After=network.target
    
    [Service]
    User=node_exporter
    ExecStart=/usr/bin/node_exporter --collector.textfile.directory /var/lib/node_exporter/textfile_collector --collector.systemd --collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service"  # 在命令行直接执行node_exporter命令可以只抓取到自定义的这三个服务,但是写到systemd,node_exporter就抓取不到了。尝试把我们自定义收集的systemd(-collector.systemd.unit-whitelist="(docker|sshd|rsyslog).service" )给删除掉,使用systemd(node_exporter.service),抓取所有的systemd,就可以了。
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
    systemctl daemon-reload
    systemctl restart node-exporter
    

    4.prometheus配置

    # /etc/prometheus.yml配置中增加如下:
    - job_name: 'node'
      static_configs:
        - targets: ["192.168.1.121:9100"]
    

    5.过滤收集器

    Node Exporter可以返回很多指标。除了使用Node Exporter 控制运行哪些收集器之外,Prometheus还提供一种方式来限制收集器从服务器端实际抓取的数据。

    修改配置如下:

    # /etc/prometheus.yml配置信息如下
    - job_name: 'node'
      sttic_configs:
        - targets: ['192.168.1.121:9090']
      params:
          collect[]:  # 限制只收集这五种指标
           - cpu
           - meminfo
           - diskstats
           - netdev 
           - systemd
    

    现在去掉diskstats指标,查看prometheus抓取的数据就不包含disk相关的指标了。。。。。

    # /etc/prometheus.yml配置信息如下
    - job_name: 'node'
      sttic_configs:
        - targets: ['192.168.1.121:9090']
      params:
          collect[]:  # 限制只收集这五种指标
           - cpu
           - meminfo
           # - diskstats
           - netdev 
           - systemd
    

    image-20211113003319035

  • 相关阅读:
    ASP.Net MVC的一个开源框架
    MS CRM 2011 RC中的新特性(8)
    在.NET4中用 jQuery 调用 WCF
    Web打印的在线设计
    MVC3.0RTM版本
    手机刷卡二维码
    Jla框架
    微软Windows Azure Platform技术解析
    缓存应用Memcached分布式缓存简介
    领域驱动设计(DDD)的理论知识
  • 原文地址:https://www.cnblogs.com/zhangchaocoming/p/15547129.html
Copyright © 2011-2022 走看看