热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Prometheus监控系列之一:Prometheus监控入门

完善的监控流程体系是一个公司非常重要的部分。接下来会根据下图进行解释监控流程中的部分1、监控系统设计(运维架构师):这部分是由运维架构师进

    完善的监控流程体系是一个公司非常重要的部分。接下来会根据下图进行解释监控流程中的部分

1、监控系统设计(运维架构师):

    这部分是由运维架构师进行设计,设计部分主要包括如下内容:

  • 评估系统的业务流程、业务种类、架构体系

    各个企业的产品不同、业务方向不同、程序代码不同、系统架构更不同,对各个地方细节需要有一定程度的认知。

  • 分类出所需的监控大分类

    一般可以分为:业务级别监控系统级别监控网络监控程序代码监控日志监控用户行为分析监控以及其他种类监控。如:

  1. 业务监控    包含用户访问QPS、DAU日活、访问状态(http code)、业务接口(登陆,注册,聊天,留言,上传,搜索等)、产品转化率等;
  2. 系统监控    CPU/内存/磁盘/IO/TCP链接/流量等(zabbix/Prometheus);
  3. 网络监控    交换机、路由器、防火墙、VPN;
  4. 日志监控    监控的重头戏(Splunk、ELK),往往单独设计,全部种类的日志都需要采集
  5. 程序监控    需要与开发配合,代码中嵌入接口,直接获取数据或者特质的日志格式(json)

 

2、监控系统搭建

  • 单点服务器的搭建(Prometheus)
  • 单点客户端的部署
  • 单点客户端服务器测试
  • 采集程序单点部署
  • 采集程序批量部署
  • 监控服务端HA/Cloud(自己定制)
  • 监控数据图形化搭建(Grafana)
  • 报警系统测试(Pagerduty)
  • 报警规则测试
  • 监控+报警联合测试
  • 正式上线监控

 

3、数据采集编写

    可选用脚本作为数据采集,如:shell/python/go等。作为监控数据采集,首推shell/python

   数据采集的形式分类:

  • 一次性采集:使用比较简单的shell    ./monitor.sh +crontab的形式 按10秒  30秒 一分钟这样的频率去单词采集

    优势:稳定性好,不容易出现各种错误和性能瓶颈,且开发逻辑简单 实现快速

    劣势:实现不够智能

  • 后台式采集:  采集程序以守护进程运行在Linux后台,持续不断的采集数据;Prometheus exporter例如python/go开发的daemon程序,后台持续不断的采集

    优势:数据准确度高,采集密度惊喜,管理方便

    劣势:如果开发不够仔细,可能会出现内存泄漏,僵尸进程,性能瓶颈等问题,且开发周期时间长

  • 桥接式采集:  本身以后台进程运行,但是采集不能独立,依然跟服务器关联,以桥接方式收集采集数据

 

4、监控稳定测试

   不管是一次性采集,还是后台采集,只要实在Linux上运行的定西都会多多少少对系统产生一定的影响。稳定性测试就是通过一段时间的单点部署观察,对线上有没有任何影响。

 

5、监控自动化

     监控客户端的批量部署,监控服务端的HA再安装,监控项目的修改,监控项目的监控集群变化。这些地方需要大量的人工。这时,自动化引入会很大程度上缩短对监控系统的维护成本。如:Puppet(配置文件部署)、Jenkins(CI持续集成部署)、CMDB(运维自动化的最高资源管理平台和理念)等。

 

6、监控图形化工作

        采集的数据和准备好的监控算法,最终需要一个好的图形展示,才能发挥最好的作用。监控的设计搭建需要大量的技术知识,但是对于一个观察者来说,往往不需要多少技术,只要能看懂图就好(老板想看看当前用户访问量情况,想看看整体CPU高不高)

 

Prometheus是什么?


Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源项目,并且独立于任何公司进行维护。为了强调这一点并阐明项目的治理结构,Prometheus 于2016年加入了 Cloud Native Computing Foundation,这是继Kubernetes之后的第二个托管项目。


Prometheus优势:


  • 基于time series时间序列模型(数字,数学)

    时间序列(time series x,y)是一系列有序的数据。通常是等时间间隔的采样数据。

  • 基于K/V数据模型

    key/value键值  {disk_size: 80},最大的好处是数据格式简单、速度快、易维护开发。

  • 采样数据的查询

     完全基于数学运算,而不是其他的表达式,并且提供专有的查询输入console。所有的查询都是基于数学运算公式的,例如:(增量(A)+增量(B))/总增量(C)>固定百分比

  • 采用http pull/push两种对应的数据采集传输方式

    所有的数据采集,都是基本采用HTTP,而且分为pull和push拉和推两种方式去写采集程序,非常方便。

  • 开源,大量的社区成品插件

   https://prometheus.io, 很多Prometheus社区开发的插件已经非常强大和完善。如果公司对监控要求不是特别高的话,默认的几个成品插件就已经可以够用的了。

  • push方法非常灵活
  • 本身自带图形调试

      Prometheus本身自带了现成的图形成型界面,虽然最终肯定不能和grafana效果相比,但是这种自带图形形成图可以大大帮助运维做测试。

  • 精细的数据采样

    大多数市面上的开源监控,采样也就能精确到半分钟或一分钟的程度,但是Prometheus理论上可以达到秒采集,而且可以自行定制频率(不过强大的同时,不太建议细致到这个程度,因为会产生大量的数据)。

 

 

Prometheus劣势:

但是还有一些不足,需要加以改进

  • 不支持集群化(这个是当前最迫切的需求)
  • 被监控集群过大后,本身性能有一定瓶颈(如果有集群,就可以解决这个问题)
  • 偶尔发生数据丢失(这个问题在2.0之前会偶尔发生几次,2.0之后已经彻底解决)
  • 中文支持不好,中文资料少

 

 

 


推荐阅读
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 为何Compose与Swarm之后仍有Kubernetes的诞生?
    探讨在已有Compose和Swarm的情况下,Kubernetes是如何以其独特的设计理念和技术优势脱颖而出,成为容器编排领域的领航者。 ... [详细]
  • 本文由chszs撰写,详细介绍了Apache Mina框架的核心开发流程及自定义协议处理方法。文章涵盖从创建IoService实例到协议编解码的具体步骤,适合希望深入了解Mina框架应用的开发者。 ... [详细]
  • SSE图像算法优化系列三:超高速导向滤波实现过程纪要(欢迎挑战)
    自从何凯明提出导向滤波后,因为其算法的简单性和有效性,该算法得到了广泛的应用,以至于新版的matlab都将其作为标准自带的函数之一了&#x ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • Spring Security基础配置详解
    本文详细介绍了Spring Security的基础配置方法,包括如何搭建Maven多模块工程以及具体的安全配置步骤,帮助开发者更好地理解和应用这一强大的安全框架。 ... [详细]
  • 本文详细介绍了如何在 Ubuntu 14.04 系统上搭建仅使用 CPU 的 Caffe 深度学习框架,包括环境准备、依赖安装及编译过程。 ... [详细]
  • 本文探讨了异步编程的发展历程,从最初的AJAX异步回调到现代的Promise、Generator+Co以及Async/Await等技术。文章详细分析了Promise的工作原理及其源码实现,帮助开发者更好地理解和使用这一重要工具。 ... [详细]
  • 本文详细介绍如何在 Apache 中设置虚拟主机,包括基本配置和高级设置,帮助用户更好地理解和使用虚拟主机功能。 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
author-avatar
蟹子萝卜控
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有