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

用10分钟时间让你搞懂服务监控治理,指标型数据监控,不过分吧?

指标型数据监控指标采集概述在上节的监控系统分类中,我们说指标数据是监控系统判断运行状态的一个重要数据来源,这里的指标是在时间维度上捕获的与系统相关的

指标型数据监控


指标采集概述

在上节的监控系统分类中,我们说指标数据是监控系统判断运行状态的一个重要数据来源,这里的指标是在时间维度上捕获的与系统相关的值。这个指标值按照不同的层次,可以进一步分类。

  • 基础类型指标:包括CPU、内存、网络、I/O等,基于JVM系统的应用,也可以把JVM的内存回收状态、堆栈等资源占用状态的指标纳入这一类型指标。基础类型指标通常可以从宏观的视角描述当前应用所属容器或者运行环境的基本状态。

  • 应用服务类型指标:指服务的运行状态指标。前文我们说的服务延迟、流量吞吐、错误和饱和度即“黄金四指标”,线程个数、队列积压情况等数据都属于应用服务类型指标。因为服务指标最贴近应用服务本身,所以应用服务类型指标可以直观地反映当前服务的运行状态,也是开发运维人员排查异常状态和定位应用错误时的主要判断依据。

  • 业务定制化指标:上述两类指标是比较通用的指标类型,然而很多业务需要定制化的指标来衡量某一个业务特性。例如上节中提到的通过“存量指标”衡量不同阶段、不同门店的一个业务运营状态。而这个指标的采集需要我们手动在代码的

指定位置埋点,在采集指标数据后上报到监控服务器中心。

下面介绍在监控指标方面有哪些主要的采集方式。

系统指标采集方式

Linux系统自带的命令工具是采集基础类型指标的主要方式,通过Linux系统命令可以发现服务器资源的性能瓶颈和资源占用情况。

  • iostat:监控磁盘I/O情况。

  • meminfo:查看内核使用内存情况的各种信息。

  • mpstat:实时系统监控工具,能查看所有CPU的平均状况信息。

  • netstat:显示了大量与网络相关的信息。

  • nmon:监控Linux系统的性能、下载及安装。

  • pmap:报告每个进程占用内存的详细情况。

  • ps pstree:ps告诉你每个进程占用的内存和CPU处理时间,而pstree以树形结构显示进程之间的依赖关系,包括子进程信息。

  • sar:显示CPU使用率、内存页数据、网络I/O和传输统计、进程创建活动和磁盘设备的活动详情。

  • strace:诊断进程工具。

  • tcpdump:网络监控工具,看看哪些进程在使用网络。

  • uptime:该命令告诉你这台服务器从开机启动到现在已经运行了多长时间。

  • vmstat:监控虚拟内存。

  • wireshark:是一个网络协议检测程序,让你可以获取网站的相关资讯。

  • dstat:该命令整合了vmstat、iostat和ifstat三种命令作为多类型资源统计工具。

  • top:经常用来监控Linux的系统状况,比如CPU、内存的使用。

  • ss:用来记录套接字统计信息,可以显示类似netstat一样的信息。

  • lsof:列表显示打开的文件。

  • iftop:是另一个基于网络信息的类似top的程序,能够显示当前时刻按照带宽使用量或者上传或者下载量排序的网络连接状况。


应用指标采集方式


  • 手动埋点:手动埋点是侵入式的监控数据采集方式,主要应用在业务定制化的监控场景下。手动埋点的优点是可以更灵活地为我们提供业务内部的监控指标,当然缺点也很明显,需要在代码层面修改代码,具有一定的侵入性。如果项目指标数量有限,并且被埋点代码所在位置集中在个别文件中,可以考虑使用手动埋点的方式。

  • 自动埋点:使用手动埋点的方式需要侵入式地修改已有的业务代码,对于很多业务方来说,这样的做法是无法接受的。如果能在程序加载或者运行期间动态地加入监控代码,就可以做到在运行期间动态埋点,无侵入地监控应用系统。在Java技术中,我们可以利用JavaAgent和Javaassist动态字节码改写技术实现自动埋点,增加指标抓取逻辑,这项技术的另一个使用场景就是APM中的调用链技术。在后面两节中,我们会进一步介绍这两种自动埋点捕获数据的“黑科技”。

  • 自带监控功能,有以下三种方式。


  • JMX方式:多数Java开发的服务均可由JMX接口输出监控指标。其中不少监控系统都集成了JMX采集插件,除此之外,我们也可通过jmxtrans、jmxcmd等命令工具采集指标信息。

  • HTTP REST方式:Spring Boot提供的Actuator技术可以采集监控信息,并以HTTP REST的方式暴露监控指标。

  • OpenMetrics方式:作为Prometheus的监控数据采集方案,OpenMetrics可能很快会成为未来监控的业界标准。

指标监控数据存储

基于时间序列数据库的监控系统是非常适合做监控告警使用的,如果我们要搭建一套新的指标监控系统,就需要使用时序监控作为数据存储引擎,下面我们介绍几款常用的以时间序列数据库为主的监控数据库。

  • Prometheus(普罗米修斯):2012年开源的一款监控框架,其本质是时间序列数据库,由Google前员工开发。Prometheus采用拉的模式从应用中拉取数据,并支持Alert模块,可以实现监控预警。同时,Prometheus提供了一种推数据的方式,但并不是推送到Prometheus Server中,而是在中间搭建一个PushGateway组件,通过定时任务模块将Metrics信息推送到这个PushGateway中,然后Prometheus Server采用拉的方式从PushGateway中获取数据。其他Prometheus用到的监控组件功能如下。


  • Prometheus Server:需要拉取的数据既可以采用静态方式配置在Prometheus Server中,也可以采用服务发现的方式。

  • PromQL:Prometheus自带的查询语法,通过编写PromQL语句可以查询Prometheus里面的数据。

  • Alertmanager:数据的预警模块,支持通过多种方式发送预警。

  • WebUI:展示数据和图形,通常与Grafana结合,采用Grafana来展示。


  • OpenTSDB:2010年开源的一款分布式时序数据库,在这里我们把它主要用在监控方案中。OpenTSDB采用的是HBase的分布式存储,它获取数据的模式与Prometheus不同,它采用的是推模式。在展示层,OpenTSDB自带WebUI视图,可以与Grafana很好地集成,提供丰富的展示界面。但OpenTSDB并没有自带预警模块,需要自己去开发或者与第三方组件结合使用。

  • InfluxDB:2013年开源的一款时序数据库,在这里我们主要把它用在监控系统方案中。它也采用推模式收集数据。在展示层,InfluxDB也自带WebUI,可以与Grafana集成。


本文给大家讲解的内容是服务监控治理, 指标型数据监控


  1. 下篇文章给大家讲解的内容是服务监控治理,JavaAgent技术
  2. 觉得文章不错的朋友可以转发此文关注小编;
  3. 感谢大家的支持!

 


推荐阅读
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Centos下安装memcached+memcached教程
    本文介绍了在Centos下安装memcached和使用memcached的教程,详细解释了memcached的工作原理,包括缓存数据和对象、减少数据库读取次数、提高网站速度等。同时,还对memcached的快速和高效率进行了解释,与传统的文件型数据库相比,memcached作为一个内存型数据库,具有更高的读取速度。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
author-avatar
井底蛙的天空13
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有