Prometheus监控系统专题一、简介安装使用.md
一、Prometheus简介
Prometheus是一个开源的系统监控和报警工具,特点是
多维数据模型(时序列数据由metric名和一组key/value组成)
在多维度上灵活的查询语言(PromQl)
不依赖分布式存储,单主节点工作.
通过基于HTTP的pull方式采集时序数据
可以通过push gateway进行时序列数据推送(pushing)
可以通过服务发现或者静态配置去获取要采集的目标服务器
多种可视化图表及仪表盘支持
Push还是Pull?
默认情况下Prometheus采集数据是用的pull也就是拉模型,通过HTTP协议去采集指标,只要应用系统能够提供HTTP接口就可以接入监控系统,相比于私有协议或二进制协议来说开发、简单。
另外Prometheus也提供了push方式的接入。
对于定时任务这种短周期的指标采集,如果采用pull模式,可能造成任务结束了,Prometheus还没有来得及采集,这个时候可以使用加一个中转层,客户端推数据到Push Gateway缓存一下,由Prometheus从push gateway pull指标过来。(需要额外搭建Push Gateway,同时需要新增job去从gateway采数据)
二、Prometheus架构
它的服务过程是这样的 Prometheus daemon 负责定时去目标上抓取 metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。
Prometheus支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。
Alertmanager 是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
Prometheus支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。
提供metric数据的组件就是Exporter,Prometheus提供了非常多的Exporter。
三、监控数据类型(metric types)
Prometheus提供度量类型(metric types)有四种,包括
Counter
Gauge
Histogram
Summary。
Counter、Gauge和Cacti、Zabbix、OpenFalon中定义是一致的,counter一般用来线性增长的数据例如带宽、Gauge就是常见的普通数据。
Histogram 可以理解为直方图,主要用于表示一段时间范围内对数据进行采样,(通常是请求持续时间或响应大小),并能够对其指定区间以及总数进行统计,通常我们用它计算分位数的直方图。
Summary和Histogram十分相似,主要用于表示一段时间范围内对数据进行采样,(通常是请求持续时间或响应大小),它直接存储了 quantile 数据,而不是根据统计区间计算出来的。
当访问Exporter的/metrics API地址时我们可以看到类似于一下返回值,其中HELP用于说明度量类型,TYPE用于数据类型说明。
如下
#@Prometheus自身的Exporter
# HELP node_load5 5m load average.
# TYPE node_load5 gauge
node_load5 0.01
四、Prometheus数据存储分析
从最原始的抓取数据上来看,基本是这个样子,
每个Metric name代表了一类的指标,他们可以携带不同的Labels,每个Metric name + Label组合成代表了一条时间序列的数据。
Prometheus使用了LevelDB的引擎,它的特点是顺序读写性能非常高,这是非常符合时间序列的存储的。
五、Prometheus安装
Prometheus可以使用二进制方式直接运行,或者使用docker或者k8s启动,二进制包的下载地址:
https://prometheus.io/download/
https://github.com/prometheus/prometheus/releases/tag/v2.2.1
解压后,可以直接使用
六、Prometheus简单使用
启动Prometheus
nohup ./prometheus -config.file=prometheus.yml &
或
nohup /opt/prometheus-1.6.2.linux-amd64/prometheus &
其中prometheus.yml是配置文件,我们在里面配置抓取的信息。例如
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
#grap node expoter
- job_name: "node-stat"
static_configs:
- targets: ['172.28.0.55:19001']
labels:
business: feedback
- targets: ['172.28.0.56:19001']
labels:
business: feedback
在浏览器中打开Prometheus服务器9090端口,就可以使用了。
输入框使用的是PromQL,这个我们下一篇文章会仔细说明。
参考
https://www.cnblogs.com/vovlie/p/7709312.html
转载请注明:IPCPU-网络之路 » Prometheus监控系统专题一、简介安装使用