Prometheus+Grafana

Prometheus 架构

img

Prometheus 组件

如上图,Prometheus主要由以下部分组成:

  • Prometheus Server:用于抓取和存储时间序列化数据
  • Exporters:主动拉取数据的插件
  • Pushgateway:被动拉取数据的插件
  • Altermanager:告警发送模块
  • Prometheus web UI:界面化,也包含结合Grafana进行数据展示或告警发送

在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数据查询支持。因此为了能够能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。 机构如下

img

Prometheus 配置

img

Prometheus + Consul 自动发现服务监控

Prometheus 监控目标为什么要自动发现

频繁对Prometheus配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个“配置小王子”,即使是配置小王子也会存在人为失误的情况。

Prometheus基于consul自动发现监控对象

Consul是一个分布式k/v数据库,是当前比较流行的服务注册组件,下面对consul+prometheus自动发现监控目标大致流程做个介绍。

  1. 通过在consul注册服务或注销服务(监控targets)
  2. Prometheus 一直监视(watch)consul服务,当发现consul中符合要求的服务有新变化是更新Prometheus监控对象

向consul注册一个服务作为prometheus的监控target

1
curl -X PUT -d '{"id": "node-10-135-13-136_test","name": "node_exporter","address": "10.211.55.7","port": 9090,"tags": ["prod","prome","node"],"checks": [{"http": "http://10.211.55.7:9090/metrics","interval": "35s"}]}' http://localhost:8500/v1/agent/service/register

检查consul和prometheus是否已有对应target:

img

通过consul 实现prometheus联邦

对于原生的prometheus联邦功能需要进行静态配置联邦部分,无法实现动态添加prometheus的功能,因此我们讨论以后计划使用consul来达到动态配置的效果。这样新加入的prometheus只需要自动注册到consul,负责存储展示的prometheus只需要从consul拿到prometheus实例列表即可(我们暂且叫中心prometheus为Data Center,普通的prometheus节点叫Data Node)

  • 部署consul(这里consul可以部署集群中,只要Data Node注册时能拿到改地址即可)
  • 部署Data Node,并注册到consul
  • 部署Prometheus-Operator,从consul发现已经注册的prometheus

Prometheus 可视化展示Grafana

Prometheus Web界面自带的图表是非常基础的,比较适合用来做测试。如果要构建强大的Dashboard,使用Grafana来对Prometheus采集到的数据进行可视化展示。

Grafana是用于可视化大型测量数据的开源程序,提供了强大和优雅的方式去创建、共享、浏览数据。Dashboard中显示了不同metric数据源中的数据。

Grafana最常用于因特网基础设施和应用分析,但在其他领域也有用到,比如:工业传感器、家庭自动化、过程控制等等。Grafana支持热插拔控制面板和可扩展的数据源,目前已经支持Graphite、InfluxDB、OpenTSDB、Elasticsearch、Prometheus等。

  1. 安装

    1
    2
    $ wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.2.0_amd64.deb
    $ dpkg -i grafana_4.2.0_amd64.deb

下载地址:https://grafana.com/grafana/download

  1. 启动Grafana

    1
    $ systemctl start grafana-server
  2. 查看Grafana是否启动成功

    1
    $ systemctl status grafana-server
  3. 访问Grafana
    通过 http://ip:3000 访问Grafana Web界面
    缺省帐号/密码为:admin/admin

img