关于Prometheus

Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据;因此实现一种Profiling监控方式,实时分析系统运行的状态、执行时间、调用次数等,以找到系统的热点,为性能优化提供依据。
监控方式
程序代码收集运行数据写入到redis,通过API接口开放给Prometheus,Prometheus定时去抓取接口上的数据,形成时间系数据存入到本地。同时通过promql与开放接口可视化数据到前端。
 
一、采集运行数据写入到redis
在采集数据之前,先要明白Prometheus所支持的几种数据类型
 
Counter,统计类数据
Counter作为一种计数类数据类型,常用于接口调用次数、请求总数、当前在线人数等等
 
Gauge,记录对象或许事物的瞬时值
Gauge是最简单的度量类型,只有一个简单的返回值,他用来记录一些对象或者事物的瞬时值,如CPU使用率、内存使用情况、磁盘空间等。
 
Histograms,直方图
Histrogram是用来度量数据中值的分布情况,如程序执行时间:0-100ms、100-200ms、200-300ms、>300ms 的分布情况
 
在使用Prometheus监控之前,先要明白都需要监控哪些项,以及每一中项都应该采用什么数据类型来表示
 
明白以上类型之后,就可以开始将监控数据项写入到redis。写入的工具可采用开源的prometheus_client_php;github:https://github.com/Jimdo/prometheus_client_php 
下载后需要用composer部署其依赖,如果你不知道composer的使用:http://www.phpcomposer.com 
以下代码记录一个counter数据
 
require __DIR__ . '/../vendor/autoload.php';
use Prometheus\CollectorRegistry;
use Prometheus\Storage\Redis; Redis::setDefaultOptions(array('host' => 'master.redis.reg'));
$adapter = new Prometheus\Storage\Redis();
$registry = new CollectorRegistry($adapter); $counter = $registry->registerCounter('test', 'some_counter', 'it increases', ['type']);
$counter->incBy(1, ['blue']); //将统计结果增加1
 
采集的过程比较简单,Gauge与Histograms与此类似
 
二、提供Prometheus访问的API Gateway
 
prometheus_client_php工具已经准好了prometheus访问的相关接口,我们至需要几行简单的代码
 
require __DIR__ . '/../vendor/autoload.php';

use Prometheus\CollectorRegistry;
use Prometheus\RenderTextFormat;
use Prometheus\Storage\Redis; Redis::setDefaultOptions(array('host' => 'master.redis.reg')); //对应写入的redis
$adapter = new Prometheus\Storage\Redis();
$registry = new CollectorRegistry($adapter);
$renderer = new RenderTextFormat();
$result = $renderer->render($registry->getMetricFamilySamples()); header('Content-type: ' . RenderTextFormat::MIME_TYPE);
echo $result; //输出结果给prometheus服务
 
将以上脚本部署,能通过HTTP访问到,下一步即可提供给prometheus服务
 
三、安装与配置Prometheus
安装(略过)
配置Prometheus
打开prometheus.yml文件,在scrape_configs配置第二步中的API Gateway
 - job_name: 'prometheus2'
metrics_path: '/metrics.php'
static_configs:
- targets: ['localhost:9999']
 
配置完成后,启动Prometheus
 
四、查看监控数据
Prometheus具有多种模式的可视化数据,可集成Grafana可视化工具。其内置PromDash界面,启动后打开http://localhost:9090(默认9090端口)即可访问内置的PromDash监控界面。
上图是Prometheus的直方图展现形式,顶部的下拉框是你所监控的数据项,点击Execute点击后查看所监控的数据。输入框部分是是查询的表达式,Prometheus支持丰富的查询表达式,详情参阅:https://prometheus.io/docs/querying/basics/ 。
图中的每一条线表示大于该桶的数据,红色的数据线是所有桶的总数累计。另外Prometheus还提供了sum与cont的统计。Gauge与Counter数据类型也与此类似。

prometheus监控系统的更多相关文章

  1. Prometheus监控系统之入门篇(一)续

    在上篇Prometheus监控系统之入门篇(一)中我们讲解了Prometheus的基本架构和工作流程, 并从0到1搭建了Prometheus服务,pushgateway以及告警系统. 本篇我们主要介绍 ...

  2. 容器编排系统K8s之Prometheus监控系统+Grafana部署

    前文我们聊到了k8s的apiservice资源结合自定义apiserver扩展原生apiserver功能的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/ ...

  3. Prometheus监控系统之入门篇(一)

    1. 简介 Prometheus: (简称Prom)是由SoundCloud开发的开源监控报警系统.是大名鼎鼎的CNCF云原生基金会下的第二大开源项目.具有如下特点: 使用Go语言开发 内置时序数据库 ...

  4. Grafana+Zabbix+Prometheus 监控系统

    环境说明 软件 版本 操作系统 IP地址 Grafana 5.4.3-1 Centos7.5 192.168.18.231 Prometheus 2.6.1 Centos7.5 192.168.18. ...

  5. 使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql

    使用Docker部署监控系统,Prometheus,Grafana,监控服务器信息及Mysql 一.docker部署prometheus监控系统 1.1 配置安装环境 1.1.1 安装promethe ...

  6. 使用docker方式构建prometheus监控的学习

    一.背景:近期学习部署prometheus监控系统,经研究发现prometheus提供docker运行模式.根据我的经验,能够使用docker模式构建系统一定多快好省. 二.环境: 1.centos7 ...

  7. 图文详解Prometheus监控+Grafana+Alertmanager告警安装使用

    一:前言 一个服务上线了后,你想知道这个服务是否可用,需要监控.假如线上出故障了,你要先于顾客感知错误,你需要监控.还有对数据库,服务器的监控,等等各层面的监控. 近年来,微服务架构的流行,服务数越来 ...

  8. Prometheus监控神器-Alertmanager篇(1)

    本章节主要涵盖了Alertmanager的工作机制与配置文件的比较详细的知识内容,由浅入深的给大家讲解. 警报一直是整个监控系统中的重要组成部分,Prometheus监控系统中,采集与警报是分离的.警 ...

  9. Prometheus监控神器-Rules篇

    本章主要对如何使用Prometheus与Alertmanager组件集成配置,以及对警报规则 Rules 的俩种类型及其模板内容进行讲解. 与Alertmanager集成 Prometheus把产生的 ...

随机推荐

  1. Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级

    Linux平台 Oracle 10gR2(10.2.0.5)RAC安装 Part3:db安装和升级 环境:OEL 5.7 + Oracle 10.2.0.5 RAC 5.安装Database软件 5. ...

  2. SuperMap iClient for JavaScript 新手入门

    地理信息系统(英语:Geographic Information System,缩写:GIS)是一门综合性学科,结合地理学与地图学,已经广泛的应用在不同的领域,是用于输入.存储.查询.分析和显示地理数 ...

  3. SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)

    前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...

  4. .NET平台和C#编程的总结

    第一章   简单认识.NET框架    (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework ...

  5. Asp.Net Core + Dapper + Repository 模式 + TDD 学习笔记

    0x00 前言 之前一直使用的是 EF ,做了一个简单的小项目后发现 EF 的表现并不是很好,就比如联表查询,因为现在的 EF Core 也没有啥好用的分析工具,所以也不知道该怎么写 Linq 生成出 ...

  6. required

    required,这是HTML5中的一个新属性:这是HTML5中input元素中的一个属性. required译为必须的,在input元素中应用这一属性,就表示这一input元素节点是必填的或者必选的 ...

  7. margin折叠-从子元素margin-top影响父元素引出的问题

    正在做一个手机端电商项目,顶部导航栈的布局是一个div包含一个子div,如果给在正常文档流中的子div一个垂直margin-top,神奇的现象出现了,两父子元素的边距没变,但父div跟着一起往下走了! ...

  8. Java模拟Windows的Event

    场景 开发中遇到一个场景,业务操作会不定时的产生工作任务,这些工作任务需要放入到一个队列中,而另外会有一个线程一直检测这个队列,队列中有任务就从队列中取出并进行运算. 问题 业务场景倒是简单,只不过这 ...

  9. 一步步开发自己的博客 .NET版(1、基本显示)

    前言 我们每个猿都有一个搭建自己独立博客的梦,我也不例外.以前想 现在想 以后也想.之所以一直迟迟没有着手,是因为难以跨出第一步.每次心里想着,等我以后技术好了再说,然后就没有然后了.以前用过word ...

  10. 【腾讯优测干货分享】如何降低App的待机内存(四)——进阶:内存原理

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/3FTPFvZRqyAQnU047kmWJQ 1.4进阶:内存原理 在 ...