一、prometheus简介

1.1 什么是prometheus

prometheus是一个最初在SoundCloud上构建的开源系统监控和警报工具包 。
从2012年开始,许多公司和组织开始使用Prometheus,该项目拥有非常活跃的开发人员和用户社区。
目前它是一个独立的开源项目,并且不依赖与任何公司。
为了强调这一点,并澄清项目的治理结构,Prometheus在2016年加入Cloud Native Computing Foundation,作为kubernetes之后的第二个托管项目。

1.2 主要特征

  • 多维数据模型(时序列数据有metric和一组key/value组成)
  • 在多维度上灵活的查询语言(PromQl)
  • 不依赖分布式存储,单主节点工作.
  • 可以通过pushgateway进行时序列数据推送(pushing)
  • 可以通过服务发现或者静态配置去获取要采集的目标服务器
  • 多种可视化图表及仪表盘支持

1.3 组件及架构

组件

prometheus生态系统由多个组件组成,其中许多组件是可选的。

  • promethues server:主要获取和存储时间序列数据
  • exporters:主要是作为agent收集数据发送到prometheus server,不同的数据收集由不同的exporters实现,如监控主机有node-exporters,mysql有MySQL server exporters。更多exporters
  • pushgateway:允许短暂和批处理的jobs推送它们的数据到prometheus;由于这类工作的存在时间不够长,所以需要他们主动将数据推送到pushgateway,然后由pushgateway将数据发送的prometheus。
    总结:类似于zabbix proxy
  • alertmanager:实现prometheus的告警功能。

架构

该图说明了Prometheus及其生态系统组件的一些架构

这里写图片描述

prometheus 直接或通过pushgateway抓取数据。将数据存储在本地,并对这些数据运行规则,以便从现有数据聚合和记录新时间序列,或者生成警报。grafana等可用于可视化数据。

二、安装server

2.1下载prometheus

下载最新版,然后解压它

# wget https://github.com/prometheus/prometheus/releases/download/v2.3.1/prometheus-2.3.1.linux-amd64.tar.gz
# tar xvfz prometheus-*.tar.gz
# cd prometheus-*

./prometheus --help使用该命令查看帮助

2.2 配置prometheus

配置文件为prometheus.yml,删除注释后配置文件如下

global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  # - "first.rules"
  # - "second.rules"

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

该配置文件有三个模块:global、rule_files、scrape_configs
1. global:prometheus的全局配置,主要有两个属性

 scrape_interval:控制多久一次收集目标数据 ​ 
 evaluation_interval:评估规则时间间隔

2. rule_files

指定加载规则的位置 

3. scrape_configs

配置prometheus监视的数据。
默认的job prometheus监控着prometheus公开的数据,数据是通过url:http://localhost:9090/metrics 来抓取的。
返回的时间序列数据说明了prometheus server的状态信息。

2.3 运行prometheus

./prometheus --config.file=prometheus.yml

通过 http://ip:9090访问,现在页面上可以看到prometheus server的数据

可以通过http://ip:9090/metrics验证prometheus server是否提供自身数据

三、安装exporters

node exporter与prometheus server安装在同一台主机上

3.1 下载exporter

以node exporter为例,下载最新的node exporter

# wgethttps://github.com/prometheus/node_exporter/releases/download/v0.16.0/node_exporter-0.16.0.linux-amd64.tar.gz
# tar xvfz node_exporter-*.tar.gz
# cd node_exporter-*

node exporter用户收集各种基于主机的度量。默认情况下,收集CPU、内存、磁盘

3.2 启动 exporter

./node_exporter

Node Exporter的metrics使用主机的9100端口和/metrics路径。在本实例中的路径为:http://localhost:9100/metrics

3.3 配置监控

配置prometheus以监控主机

在prometheus server的配置文件prometheus.yml中增加如下job代码

- job_name: node
  static_configs:
    - targets: ['localhost:9100']   # 替换为监控主机的ip地址或域名

重启prometheus server

使用浏览器访问http://ip:9090,在界面的execute旁边的下拉列表中,可以看到node_开头的度量指标,这些就是node_exporter收集的数据。

一个有用的指标是up指标。该up度量标准可用于跟踪目标的状态。如果该度量标准具有值,1则目标的scrape成功,如果0失败。这可以帮助您指示目标的状态。

参考链接:https://prometheus.io/docs/introduction/overview/

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐