监控的定义
监控是收集和分析数据以确定业务应用程序的性能,运行状况和可用性及其依赖的资源的行为。 有效的监控策略可帮助用户了解应用程序组件的详细进程,还可以通过主动通知关键问题来避免错误发生,以便在问题发生之前解决问题。
宏观上看,监控的内容可以总结为下图:
Ref: https://www.digitalocean.com/community/tutorials/an-introduction-to-metrics-monitoring-and-alerting
大数据平台任务监控的方法
大数据平台的大部分通用的监控内容可以通过以下方式获取:
Yarn、Cloudera Manager 等集成组件的监控页面。
开源组件的REST API
- MapReduce REST APIs: MapReduce Application Master REST API’s、MapReduce History Server REST API’s
- YARN REST APIs:ResourceManager REST API’s、NodeManager REST API’s
- Spark REST APIs (历史任务在Spark History Server上查找http://server-url:18080/api/v1, 正在运行的任务在Spark Drive 节点上查找 http://localhost:4040/api/v1)
开源监控工具的局限
- 权限管理困难,不同业务部门对不同的业务内容进行监控、进行不同级别的监控是大型平台系统监控的需求,依靠开源的组件难以实现。虽然一些第三方提供了一些权限管理的产品,但其力度难以满足大多数大型企业的要求。使用开源产品的商业发行版,也是一种办法,不过始终是不如企业原生系统在这方面的支持。(参考企业数据分析工作的任务、工具及挑战)
- 涉及到具体业务的一些应用状态监控,需要对监控工具的功能和内容进行补充。下图是我列举的一些具体的监控内容。
开发监控组件
考虑到上述局限,个性化的监控组件是大数据平台常见的需求,开发监控组件是大数据平台软件开发的一个重要环节。不同的应用场景有不同的需求,需要对监控组件的开发思路也各有不同。这里提供些个获取REST API内容并消费的经典样例(Spring REST Client with RestTemplate: Consume RESTful Web Service Example for XML and JSON、How to read XML file in Java – (DOM Parser)),读者可根据需求对REST API上的内容进行组装或二次开发。