天天看点

Grafana+Prometheus监控Linux服务器性能

使用Grafana和Prometheus对Linux服务器性能进行监控,主要通过node_exporter进行监控,指标如 CPU、内存、磁盘等。Prometheus通过HTTP协议从远程的机器收集数据并存储Prometheus本地时序数据库。

  1. 安装启动node_exporter

    需在被监控server上安装node_exporter。下载node_exporter,下载地址:https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

    wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
    tar xzvf /root/node_exporter-0.18.1.linux-amd64.tar.gz
    mv /root/node_exporter-0.18.1.linux-amd64 /opt/prometheus/
    ln -s /opt/prometheus/node_exporter-0.18.1.linux-amd64/  /opt/prometheus/node_exporter    #建立软链           
    创建prometheus用户,用于启动node_exporter.service服务。
    useradd -s /sbin/nologin -M prometheus           
    创建 /usr/lib/systemd/system/node_exporter.service 文件。
    [Unit]
    Description=node_exporter
    Documentation=https://prometheus.io/
    After=network.target
    [Service]
    Type=simple
    User=prometheus
    ExecStart=/opt/prometheus/node_exporter/node_exporter 
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target           
    启动:
    systemctl start node_exporter.service
    systemctl enable node_exporter.service           
    #!/bin/bash
    #Author: Joey-Yu
    cat << EOF
    +------------------------------------------------------------------+
    | ** Welcome to install prometheus node_exporter for CentOS 7 OS|
    +------------------------------------------------------------------+
    EOF
    function format() {
    echo -e "\033[32m Success!!! \033[0m\n"
    echo "#########################################################"
    }
    #mkdir  dir
    echo "set prometheus node-exporter dir"
    dir=/opt/prometheus/
    if [ ! -d $dir ]; then
    mkdir -p /opt/prometheus/
    fi
    format
    #download node_exporter-0.18.1.linux-amd64.tar.gz
    echo "download and tar prometheus node_exporter-0.18.1.linux-amd64.tar.gz in root"
    #cd /root && wget https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz
    node_exporter_file=/root/node_exporter-0.18.1.linux-amd64.tar.gz
    if [ ! -f $node_exporter_file ]; then
    echo "no node_exporter-0.18.1.linux-amd64.tar.gz in root!" 
    exit
    else
    cd /root/
    tar xzvf /root/node_exporter-0.18.1.linux-amd64.tar.gz
    mv /root/node_exporter-0.18.1.linux-amd64 /opt/prometheus/
    format
    fi
    # useadd prometheus
    echo "useadd prometheus user"
    useradd -s /sbin/nologin -M prometheus
    format
    # chown prometheus and ln -s
    echo "chown prometheus and ln -s"
    cd /opt/prometheus/
    chown -R prometheus.prometheus  /opt/prometheus/node_exporter-0.18.1.linux-amd64/
    ln -s /opt/prometheus/node_exporter-0.18.1.linux-amd64/ /opt/prometheus/node_exporter
    format
    # config prometheus /usr/lib/systemd/system/node_exporter.service
    echo "touch /usr/lib/systemd/system/node_exporter.service"
    touch /usr/lib/systemd/system/node_exporter.service
    cat > /usr/lib/systemd/system/node_exporter.service << EOF
    [Unit]
    Description=node_exporter
    Documentation=https://prometheus.io/
    After=network.target
    [Service]
    Type=simple
    User=prometheus
    ExecStart=/opt/prometheus/node_exporter/node_exporter 
    Restart=on-failure
    [Install]
    WantedBy=multi-user.target
    EOF
    systemctl start node_exporter.service
    systemctl enable node_exporter.service
    format           
  2. prometheus配置

    修改prometheus.yml配置文件。主要列出scrape_configs下的配置:

    - job_name: 'node-db'
    file_sd_configs:
      - files: ['/usr/local/prometheus/node-db.yml']
        refresh_interval: 5s
    - job_name: 'node-pre'
    file_sd_configs:
      - files: ['/usr/local/prometheus/node-pre.yml']
        refresh_interval: 5s
    - job_name: 'node-application'
    file_sd_configs:
      - files: ['/usr/local/prometheus/node-application.yml']
        refresh_interval: 5s
    - job_name: 'node-pro'
    file_sd_configs:
      - files: ['/usr/local/prometheus/node-pro.yml']
        refresh_interval: 5s           
    - targets: ["10.20.1.1:9100"]
    labels:
    instance: grafana
    - targets: ["10.20.1.2:9100"]
    labels:
    instance: Zabbix-proxy
    - targets: ["10.20.1.3:9100"]
    labels:
    instance: prometheus           
    systemctl restart prometheus.service           
  3. Web界面访问

    使用Prometheus内置了web界面访问效果。进入Prometheus Web首页Status => Targets,成功后如下图:

    Grafana+Prometheus监控Linux服务器性能
    但Prometheus自带的图形并不够强大,这里结合Grafana作为Prometheus的Dashboard。
  4. 配置Grafana

    首先在Grafana中添加Prometheus作为数据源。

    进入Grafana,点击"Add data source"按钮,跳转到添加数据源页面,配置Data Sources选项中添加数据源。

    其中URL填写Prometheus地址,其他项保持默认。单击 Save & Test 添加成功后如下:

    Grafana+Prometheus监控Linux服务器性能

    Granfana 导入node_exporter 监控图表。这里选择官网给的 https://grafana.com/grafana/dashboards/8919 监控模板,导出Download JSON。该监控模板有说明支持 Node Exporter v0.16及以上的版本,包含:CPU 内存 磁盘 IO 网络 流量 温度等监控指标。

    Granfana进入Create->Import导入Dashboards。

    node_exporter监控图表最终效果如下:

    Grafana+Prometheus监控Linux服务器性能
    监控项还是非常详细,可在左上角选择不同的node节点下的不同server查看监控。

继续阅读