11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

监控数据从哪来?(入门篇)

  • 2019-09-10
  • 本文字数:2385 字

    阅读完需:约 8 分钟

监控数据从哪来?(入门篇)

在百度云 Noah 智能监控产品中,我们提供了多维度数据聚合计算、智能异常检测、数据可视化、智能报警合并、逐级通告等丰富功能。今天,我们追根溯源,讲讲所有这些能力的基础,数据的来源,监控数据采集(入门篇)。


不同业务场景下都有着不同的监控需求,比如服务器的运行时信息、服务进程信息、日志信息、网络状态信息以及服务状态信息等。与之对应的,数据采集也需要提供丰富的采集方式来满足这些需求,一般地,针对应用场景的不同,可分别通过本地客户端采集和远程服务采集的方式来实现。



图 1 监控平台架构简化图


本地客户端采集主要负责服务器自身的信息采集以及服务器上运行程序的信息采集,远程服务采集则通过远程发起探测的方式进行域名监控、网络监控、死机探测等,本文也将从这几个方面来阐述。当然,除此之外,还有更高级的数据采集方式,暂不在本文(入门篇)讨论范畴内。


本地客户端采集

本地客户端采集提供基础的机器信息采集和用户服务信息采集。机器信息采集主要关注机器硬件信息、机器资源使用、机器负载情况等。服务信息采集则通过插件的形式提供服务,包括进程采集、日志采集、自定义脚本采集、自定义 HTTP 采集等。



图 2 本地客户端架构图


机器数据采集

服务器信息采集我们可提供数百个监控指标,其中大家常用的如 CPU、内存、磁盘、网络等指标,一般要提供高频度的采集,比如 Noah 监控提供了最细粒度 5 秒采集频率,采集延时小于 1 秒的采集能力;对于系统内核等信息,由于不常变化,一般会使用小时级或天级的采集频率。主要指标如下表:



服务数据采集

1 进程采集

服务进程信息采集,最简单粗暴的指标莫过于采集进程是否存活,另外,就要通过进程的资源消耗来一窥服务运行状态。关于进程采集,我们提供了 CPU 使用、内存使用、FD 使用信息、磁盘 IO 读写信息近 30 个监控指标,大多数信息都可以从/proc/${pid}/下的各个文件获取并计算得到。


在采集客户端设计研发的过程中,我们发现,很多场景下 FD 资源会成为一个紧缺资源,因此,部署到所有机器的采集客户端,对于机器资源占用都有着比较严格的要求,通常 FD 数量占用也不宜过高,避免影响机器其他服务的运行。因此,对于进程的 FD 使用监控显得尤为重要,为了进一步了解服务使用的 FD 信息,我们还提供了块设备 FD 数、字符设备 FD 数、管道 FD 数、网络 FD 数、文件 FD 数、FD 总数、FD 上限的监控。



图 3 进程采集的数据



图 4 进程 FD 监控


2 日志采集

服务的运行状况通常可以通过打印日志方式来记录,业务的指标也可以通过分析这些日志得到。比如服务流量指标、异常请求指标、响应时间指标等都是服务的重要业务指标,通过客户端提供的日志采集插件可以统统满足。对于基本的流量指标,我们可以用正则匹配等较简单的方式来进行采集,当然还有很多复杂的需求,需要进行多维度数据分析或故障诊断的时候,就需要提供高级版的功能,通过提取日志中的具体字段构成数据的维度信息,从多维度的角度来计算、查看、分析这份数据。


  • 简单的多维度日志数据采集举例


一个最典型的多维度日志数据采集的例子,就是通过提取日志中请求来源 IP,来生成各地域、运营商等的流量信息。


通过提取日志中的 IP 字段,并进一步反解该 IP 所属的省份、运营商信息,便于直观的统计来源请求。当然,要支持海外流量的统计需求,还需要监控系统支持海外的 IP 国家归属信息查询。


如下图所示,我们可以将日志中各个字段的值进行提取,如关注的 URI 字段、IDC 字段、IP 字段等,进一步,还以可将某些字段进行二次解析,例如,将 IP 字段所属的省份运营商进行解析。



图 5 日志维度提取


再进一步,我们将数据按照提取的维度进行聚合,可以查看机房维度的流量信息,如下图所示:



图 6 维度数据展示


3 自定义采集

为了应对某些定制化的场景,比如服务的指标并不在日志中体现,那么我们还提供了一些常见自定义采集插件来满足业务需求。包括通过自定义脚本进行数据的采集,以及服务提供的 HTTP 接口进行数据采集。比如服务的某些信息不适合通过日志的方式采集,那么此时便可以通过自定义脚本或者 HTTP 接口的形式将该数据吐出来,通过配置自定义监控来采集这些数据便可以方便的查看这些数据以及后续的聚合计算以及报警配置。


一种简单的自定义脚本输出形式:



图 7 自定义脚本输出


对应的监控输出如下:



图 8 自定义脚本监控


远程服务采集

服务监控

远程探测的形式是从监控机向用户机器发起探测请求,并校验返回的结果,根据返回结果来判断服务是否正常。根据请求内容的类型我们主要提供以下三种功能:


1.端口监控:探测目标端口是否存活;


2.语义监控:发送请求到目标机器,校验返回的数据是否符合预期,支持各种文本类型的协议,如 HTTP/HTTPS;


3.结构体监控:对于二进制等文本形式难以描述的服务接口,则通过结构体监控来解决二进制内容的监控。


死机检测

机器故障或者死机是线上的一个常见问题 ,死机检测功能则可以帮助用户及时发现故障机器,进行服务的迁移或者降级来保障服务可用性。死机检测往往很难通过单一手段来判断,这里,我们通过分别检测本地客户端的存活状况、SSH 等常用端口来判断机器是否故障以及故障的类型。


总结

本文主要介绍了百度云 Noah 智能监控中的数据采集(入门篇),数据采集需要针对不同的应用场景,通过不同的方式进行采集。基础的数据采集,可以通过部署本地客户端和远程服务采集两种方式来完成。通用化的服务器信息、进程信息等,可以通过预置方式进行采集,无需用户操心或干预;而针对不同业务的个性化情况,则提供灵活的插件形式进行采集,由用户来灵活配置采集的形式,满足定制化的需求。


作者介绍:


运小羴,百度云高级研发工程师,负责百度云 Noah 智能监控产品数据采集子系统相关研发工作,在分布式监控系统架构、服务器客户端研发等方向有着较为广泛的实践经验。


本文转载自公众号 AIOps 智能运维(ID:AI_Ops)。


原文链接:


https://mp.weixin.qq.com/s/AHyl1_Yn6BTl4XLhQW84Yg


2019-09-10 15:201370

评论

发布
暂无评论
发现更多内容

DDD实战(3):整体工作框架和全局需求分析

深清秋

DDD 软件架构 生鲜电商系统 3月月更

节省 58% IT 成本,调用函数计算超过 30 亿次,石墨文档的 Serverless 实践

阿里巴巴云原生

阿里云 云原生 函数计算 石墨文档 资源伸缩

峰会报名|从金融行业技术选型,看 RocketMQ 如何应对严苛挑战

阿里巴巴云原生

阿里云 RocketMQ 云原生 消息队列 峰会报名

强大的JSON.stringify,你真的会使用吗?

战场小包

JavaScript 前端 3月月更

为什么说程序猿也要有产品思维

慕枫技术笔记

技术思维 内容合集 3月月更

千万学生管理系统之考试模块存储架构设计

随欣所遇

架构训练营5期

第四课作业

浪飞

【模块四】千万级学生管理系统考试试卷存储方案设计

yhjhero

#架构训练营

工作想法小计(4):2/28 - 3/4

非晓为骁

个人成长 工作 细节 工作想法

千万级学生管理系统考试试卷存储方案

Geek_36cc7c

【BBC learningenglish】with Tango

IT蜗壳-Tango

3月月更

数据分析不能落地?快来围观,学会数据分析应用,一起升职加薪!

博文视点Broadview

[架构实战营]-千万级学生管理系统的考试试卷存储方案

邹玉麒

「架构实战营」

模块八-作业二

hunk

云原生训练营

几种如何判断环境是否连上网方法!推荐最后一种

华为云开发者联盟

网络 nodejs ipv4 上网 网络接口

模块四

blazar

「架构实战营」

构建 Go 应用 docker 镜像的十八种姿势

万俊峰Kevin

微服务 web开发 go-zero docker image Go 语言

CNCF Serverless工作流社区携手华为云FunctionGraph,开拓Serverless编排新时代

华为云开发者联盟

json Serverless 华为云 FunctionGraph CNCF Serverless Workflow

千万级学生管理系统Redis存储架构

IT屠狗辈

redis 架构实战营

架构师训练营模块四作业

刘帅

架构实战营:模块四作业

刘璐

最佳实践:Kubernetes 集群中 DNS 故障的可观测性与根因诊断

阿里巴巴云原生

阿里云 Kubernetes 云原生 服务器 DNS

Python二分查找,字符串模板,textwrap模块,每天写写Python自然就会了,每日Python第2天

梦想橡皮擦

3月月更

在阿里巴巴,我们如何先于用户发现和定位 Kubernetes 集群问题?

阿里巴巴云原生

阿里云 云原生 分享 KubeProbe

感受当下-人生意义的思索

liin

自我感悟 生活的意义

PHP 遇见 Serverless,帮你解决这些痛点!

阿里巴巴云原生

php 阿里云 Serverless 云原生

MySQL 15条常用的SQL知识(18/100)

hackstoic

MySQL

监控数据从哪来?(入门篇)_文化 & 方法_运小羴_InfoQ精选文章