搭建Prometheus+Grafana环境
Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。非常适合虚拟化环境比如VM或者Docker 。输出被监控组件信息的HTTP接口被叫做exporter 。Prometheus的主要特点是:
- 一个多维数据模型(时间序列由指标名称定义和设置键/值尺寸)
- 非常高效的存储,平均一个采样数据占~3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G。
普罗米修斯(Prometheus)及其一些生态系统组件的整体架构:

服务过程是这样的Prometheus daemon负责定时去目标上抓取metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。
Prometheus:支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。
Alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。PushGateway:这个组件是支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
Prometheus从根本上所有的存储都是按时间序列去实现的,相同的metrics(指标名称) 和label(一个或多个标签) 组成一条时间序列,不同的label表示不同的时间序列。metrics name&label指标名称和标签:每条时间序列是由唯一的”指标名称”和一组”标签(key=value)”的形式组成,
指标名称:一般是给监测对象起一名字,例如http_requests_total,有一些命名规则,可以包字母数字_之类的的。通常是以应用名称开头_监测对像_数值类型_单位这样。例如:push_total、userlogin_mysql_duration_seconds、app_memory_usage_bytes。标签:就是对一条时间序列不同维度的识别
Prometheus和Grafana对本机服务器性能进行监控
监控本机,只需要一个exporter,node_exporter – 用于机器系统数据收集
docker pull prom/node-exporter docker pull prom/prometheus docker pull grafana/grafana
启动node-exporter
docker run -d -p 9100:9100 \ -v "/proc:/host/proc:ro" \ -v "/sys:/host/sys:ro" \ -v "/:/rootfs:ro" \ --net="host" \ prom/node-exporter
查看端口是否起来了

访问http://192.168.21.120:9100/metrics

启动prometheus: 新建目录prometheus,编辑配置文件prometheus.yml
mkdir /usr/local/prometheus
cd /usr/local/prometheus/
vim prometheus.yml
global: scrape_interval: 60s evaluation_interval: 60s scrape_configs: - job_name: prometheus static_configs: - targets: ['localhost:9090'] labels: instance: prometheus - job_name: linux static_configs: - targets: ['192.168.21.120:9100'] labels: instance: localhost
prometheus配置项说明
global:全局配置 (如果有内部单独设定,会覆盖这个参数)
alerting:告警插件定义。这里会设定alertmanager这个报警插件
rule_files:告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现
scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
remote_write:用于远程存储写配置
remote_read:用于远程读配置
启动prometheus
docker run -d \ -p 9090:9090 \ -v /usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus
http://192.168.21.120:9090/graph与http://192.168.21.120:9090/targets
启动grafana
docker run -d \ -p 3000:3000 \ --name=grafana \ -v /usr/local/grafana:/var/lib/grafana \ grafana/grafana
http://192.168.21.120:3000/
导入模板:常用的 Dashboard Id 16098:Linux主机详情
浙公网安备 33010602011771号