Node Exporter & Prometheus系统监控

背景

  • Netdata固然是一个不错的系统监控工具,但是Node Exporter + Prometheus + Grafana也提供了另外的选择,并且可定制化程度更高
  • Node Exporter是Prometheus推出的针对服务器状态监控的Metrics工具,除此之外,GitHub中还有众多的XX Exporter可用来针对不同的服务提供Metrics服务,可以直接在Google中用服务名 + exporter服务名 + metrics查询
  • Prometheus是云原生时代事实上的系统(服务)状态监测标准,通过基于HTTP的pull方式采集时序数据,可以通过服务发现或者静态配置去获取要采集的目标服务器,支持单主节点工作,支持多种可视化图表及仪表盘
  • Grafana是一个开源的度量分析与可视化套件。 纯Javascript 开发的前端工具,通过访问库(如InfluxDB、Prometheus),展示自定义报表、显示图表等。Grafana的UI更加灵活,有丰富的插件,功能强大

Node Exporter安装

  • 目标监控主机操作系统:Ubuntu Server 20.04
  • 一键安装脚本:

    sudo useradd --no-create-home --shell /bin/false node_exporter \
    && cd /opt && wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz \
    && tar xvf node_exporter-0.18.1.linux-amd64.tar.gz \
    && sudo mv node_exporter-0.18.1.linux-amd64 /opt/node_exporter \
    && sudo chown node_exporter:node_exporter /opt/node_exporter -R \
    && sudo touch /etc/systemd/system/node_exporter.service \
    && sudo echo '[Unit]
    Description=Node Exporter
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=node_exporter
    Group=node_exporter
    Type=simple
    ExecStart=/opt/node_exporter/node_exporter --collector.systemd
    
    [Install]
    WantedBy=multi-user.target' > /etc/systemd/system/node_exporter.service \
    && sudo systemctl daemon-reload  \
    && sudo systemctl enable node_exporter \
    && sudo systemctl start node_exporter \
    && sudo journalctl -f --unit node_exporter
  • 安装完成后访问:http://${host}:9100/,确认服务正常启动,如下图所示:

Prometheus/Grafana安装

  • Prometheus配置文件prometheus-conf.yaml

    global:
      scrape_interval:     15s
      external_labels:
        monitor: 'codelab-monitor'
    
    scrape_configs:
      - job_name: 'host1'
        scrape_interval: 5s
        static_configs:
          - targets: ['host1:9100']
      - job_name: 'host2'
        scrape_interval: 5s
        static_configs:
          - targets: ['host2:9100']
    • 配置文件中的targets的值即是待监控的节点列表,灵活更改即可
  • 使用Docker Compose部署prometheus.yaml

    version: "3"
    services: 
      prometheus:
        restart: always
        image: prom/prometheus:v2.28.0
        container_name: prometheus
        volumes:
          - ./:/etc/prometheus/
        command:
          - "--config.file=/etc/prometheus/prometheus-conf.yaml"
          - "--storage.tsdb.path=/prometheus"
          - "--web.console.libraries=/etc/prometheus/console_libraries"
          - "--web.console.templates=/etc/prometheus/consoles"
          - "--storage.tsdb.retention.time=720h"
          - "--web.enable-lifecycle"
        ports:
          - 9090:9090
      grafana:
        image: grafana/grafana:8.1.2
        container_name: grafana
        restart: always
        depends_on:
          - prometheus
        ports:
          - 3000:3000
  • 安装完成后访问:http://${host}:9090/,确认Prometheus服务正常启动,如下图所示:

  • 安装完成后访问:http://${host}:3000/,确认Grafana服务正常启动,默认用户名:密码是admin:admin

配置默认Prometheus数据源

  • 左侧菜单Configuration → Data Sources,点击/编辑默认Prometheus数据源,配置URL为:http://prometheus:9090,Save & Test

安装Node Exporter Dashboard

参考


demoli
16 声望0 粉丝

bug创建者