- 安装启动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.gzwget 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/
创建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
每台机器手动安装太繁琐,而且效率低,还要考虑防火墙端口等问题。这里附上各个机器安装node_exporter的脚本。
vim install_node_exporter_prometheus.sh#!/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
- 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
从上面配置可看出,不同的应用、不同环境尽量放置一个yml文件中。如应用/usr/local/prometheus/node-application.yml文件:
- 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
修改配置后重启prometheus服务端
systemctl restart prometheus.service
- Web界面访问
使用Prometheus内置了web界面访问效果。进入Prometheus Web首页Status => Targets,成功后如下图:
但Prometheus自带的图形并不够强大,这里结合Grafana作为Prometheus的Dashboard。 - 配置Grafana
首先在Grafana中添加Prometheus作为数据源。
进入Grafana,点击"Add data source"按钮,跳转到添加数据源页面,配置Data Sources选项中添加数据源。
其中URL填写Prometheus地址,其他项保持默认。单击 Save & Test 添加成功后如下:
Granfana 导入node_exporter 监控图表。这里选择官网给的 https://grafana.com/grafana/dashboards/8919 监控模板,导出Download JSON。该监控模板有说明支持 Node Exporter v0.16及以上的版本,包含:CPU 内存 磁盘 IO 网络 流量 温度等监控指标。
Granfana进入Create->Import导入Dashboards。
node_exporter监控图表最终效果如下:
监控项还是非常详细,可在左上角选择不同的node节点下的不同server查看监控。
Grafana+Prometheus监控Linux服务器性能
使用Grafana和Prometheus对Linux服务器性能进行监控,主要通过node_exporter进行监控,指标如 CPU、内存、磁盘等。Prometheus通过HTTP协议从远程的机器收集数据并存储Prometheus本地时序数据库。