Prometheus Server安装使用
项目地址:https://github.com/prometheus/prometheus
简单介绍
Prometheus是一套完备的监控生态解决方案,既是一个监控系统,也是一个时序数据库;
与Nagios、Zabbix、Ganglia、Open-Falcon等很多监控系统相比,Prometheus最主要的特色有4个:
通过PromQL实现多维度数据模型的灵活查询。
定义了开放指标数据的标准,自定义探针(如Exporter等),编写简单方便。
PushGateway组件让这款监控系统可以接收监控数据。
- 提供了VM和容器化的版本。
二进制方式安装
# 到https://prometheus.io/download/找到最新版本或者你想安装的prometheus server软件包
export VERSION=x.x.x
curl -LO https://github.com/prometheus/prometheus/releases/download/v$VERSION/prometheus-$VERSION.darwin-amd64.tar.gz
tar -xzf prometheus-${VERSION}.darwin-amd64.tar.gz
cd prometheus-${VERSION}.darwin-amd64 # 目录中包含有默认的配置文件prometheus.yml
# Promtheus作为一个时间序列数据库,其采集的数据会以文件的形式存储在本地中,默认的存储路径为data/,因此我们需要先手动创建该目录:
mkdir -p data
# 也可以通过参数--storage.tsdb.path="data/"修改本地数据存储的路径。
./prometheus & # 启动prometheus服务
docker方式安装
docker run -p 9090:9090 -v /etc/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
启动完成后,可以通过http://localhost:9090访问Prometheus的UI界面:

Node Exporter
项目地址:https://github.com/prometheus/node_exporter
在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。
安装
# 从https://prometheus.io/download/获取最新的node exporter版本的二进制包。
curl -OL https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.darwin-amd64.tar.gz
tar -xzf node_exporter-0.15.2.darwin-amd64.tar.gz
cd node_exporter-0.15.2.darwin-amd64
cp node_exporter-0.15.2.darwin-amd64/node_exporter /usr/local/bin/
node_exporter &
访问http://localhost:9100/可以看到以下页面:

Node Exporter监控指标
访问http://localhost:9100/metrics,可以看到当前node exporter获取到的当前主机的所有监控数据,如下所示:

其中HELP用于解释当前指标的含义,TYPE则说明当前指标的数据类型。在上面的例子中node_cpu的注释表明当前指标是cpu0上idle进程占用CPU的总时间,CPU占用时间是一个只增不减的度量指标,从类型中也可以看出node_cpu的数据类型是计数器(counter),与该指标的实际含义一致。又例如node_load1该指标反映了当前主机在最近一分钟以内的负载情况,系统的负载情况会随系统资源的使用而变化,因此node_load1反映的是当前状态,数据可能增加也可能减少,从注释中可以看出当前指标类型为仪表盘(gauge),与指标反映的实际含义一致。
配置Prometheus从Node Exporter收集监控数据
修改prometheus.yml文件,在scrape_configs节点下添加以下内容:
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
# 采集node exporter监控数据
- job_name: 'node'
static_configs:
# 由于我是在Mac下用docker安装的prometheus,本地直接起的Node Exporter,容器中不能直接使用localhost:9100访问到本地的Node Exporter,因此在prometheus的配置文件中应该使用docker.for.mac.host.internal代替localhost
- targets: ['docker.for.mac.host.internal:9100']
重新启动Prometheus Server
访问http://localhost:9090,进入到Prometheus Server。如果输入“up”并且点击执行按钮以后,可以看到如下结果:

如果Prometheus能够正常从node exporter获取数据,则会看到以下结果:
up{instance="docker.for.mac.host.internal:9100", job="node"} 1
up{instance="localhost:9090", job="prometheus"} 1
其中“1”代表prometheus能正常通过Node Exporter收集到节点的监控指标,反之“0”则代表异常,需要查看prometheus日志根据报错排查。