最新消息:

Prometheus监控系统专题一、简介安装使用

Linux ipcpu 167浏览

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监控系统专题一、简介安装使用