prometheus+grafana实现监控过程的整体流程 服务器启动 访问服务器 配置exporter(监控不同的对象需要不同的导出器) 问题 Exporter的来源 Exporter的运行方式 整体流程

prometheus安装较为简单,下面会省略安装步骤:

  • Prometheus启动 ./prometheus --config.file=prometheus.yml
  • Grafana启动 service grafana-server start
  • 设置自启动 如需自启动某些服务,只需使用chkconfig 服务名 on即可,若想关闭,将on改为off ,如 chkconfig grafana-server on

访问服务器

1.Prometheus:部署ip:9090(默认端口号); 
2.Grafana:部署ip:3000(默认端口号),访问Grafana服务器的时候会要求输入账号密码,这里使用默认账号密码,账号:admin,密码:admin
3.设置Grafana管理Prometheus

配置exporter(监控不同的对象需要不同的导出器)

  1. 下载exporter tar.gz并上传至服务器
  2. 解压
  3. ./node_exproter安装
  4. curl 127.0.0.1:9100 验证,curl 127.0.0.1:9100/metrics,会返回一大推性能指标
  5. prometheus中的yml文件中,配置exporter导出器

问题

至此所有安装已完成,但是还存在以下问题,这些问题我们放在下面的配置,可视化段落处理。

  • Prometheus server并没有配置被监控端的IP地址,即没有取指定的机器取数据
  • 启动的方式太不人性化了,没有启动脚本。
  • grafana没有可用的dashboard用于展示

Exporter的来源

从Exporter的来源上来讲,主要分为两类:

  • 社区提供的
    Prometheus社区提供了丰富的Exporter实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些Exporter可以实现大部分通用的监控需求。下表列举一些社区中常用的Exporter:
    • 数据库 MySQL Exporter, Redis Exporter, MongoDB Exporter, MSSQL Exporter等
    • HTTP服务 Apache Exporter, HAProxy Exporter, Nginx Exporter等
  • 用户自定义的
    除了直接使用社区提供的Exporter程序以外,用户还可以基于Prometheus提供的Client Library创建自己的Exporter程序,目前Promthues社区官方提供了对以下编程语言的支持:Go、Java/Scala、Python、Ruby。同时还有第三方实现的如:Bash、C++、Common Lisp、Erlang,、Haskeel、Lua、Node.js、PHP、Rust等。

Exporter的运行方式

  • 独立使用的
    以我们已经使用过的Node Exporter为例,由于操作系统本身并不直接支持Prometheus,同时用户也无法通过直接从操作系统层面上提供对Prometheus的支持。因此,用户只能通过独立运行一个程序的方式,通过操作系统提供的相关接口,将系统的运行状态数据转换为可供Prometheus读取的监控数据。 除了Node Exporter以外,比如MySQL Exporter、Redis Exporter等都是通过这种方式实现的。 这些Exporter程序扮演了一个中间代理人的角色。
  • 集成到应用中的
    为了能够更好的监控系统的内部运行状态,有些开源项目如Kubernetes,ETCD等直接在代码中使用了Prometheus的Client Library,提供了对Prometheus的直接支持。这种方式打破的监控的界限,让应用程序可以直接将内部的运行状态暴露给Prometheus,适合于一些需要更多自定义监控指标需求的项目。

整体流程

1.使用合适的exporter导出器,配置监控目标对象
2.配置prometheus中的yml文件,配置exporter
3.grafana中配置数据源为prometheus