你懂集群monitoring么?(一)—— IDC机房有关技术指标获取
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,背景:公司自建IDC机房,基于IDC机房构建大数据集群;需要对集群资源进行监控,集群采用的是CDH集群,采集主要分两块进行:HDFS和YARN相关的指标进行采集IDC机器自身的指标进行采集注意: 也许
千家信息网最后更新 2026年11月02日你懂集群monitoring么?(一)—— IDC机房有关技术指标获取
背景:
公司自建IDC机房,基于IDC机房构建大数据集群;需要对集群资源进行监控,集群采用的是CDH集群,采集主要分两块进行:HDFS和YARN相关的指标进行采集
IDC机器自身的指标进行采集
注意: 也许有人会有疑惑,CM界面已经提供了监控的图表,为什么还需要自己进行展示。原因在于,这些信息需要集成到内部的数据平台上面去,做成对应的数据报表,可视化的方式展示在自己的数据平台上实现思路大致可以分为两种:
使用CM所提供的Java API去获取 使用CM提供的REST API去获取其实两者本质上是一样的,CM所提供的Java API也是按照REST API那套来实现的,两者是保持一致的
核心代码如下:
public class IdcHostResource { private static final Logger LOGGER = LoggerFactory.getLogger(IdcHostResource.class);static RootResourceV18 apiRoot;// TODO... 写死了,需要改进static { apiRoot = new ClouderaManagerClientBuilder() .withHost("cm ip") .withPort(7180) .withUsernamePassword("user", "passwd") .build() .getRootV18();}/** * 固定获取Host的基本资源信息 */public static List getAllHostResource() { List hosts = new ArrayList(); HostsResourceV10 hostsResourceV10 = apiRoot.getHostsResource(); List hostLists = hostsResourceV10.readHosts(DataView.SUMMARY).getHosts(); LOGGER.info("Total" + hostLists.size() + "Host"); for (ApiHost hostList : hostLists) { IdcHostBasicInfo host = formatHost(hostsResourceV10.readHost(hostList.getHostId())); LOGGER.info("Host Name:" + host.getHostName()); LOGGER.info("Host Health Summary:" + host.gethostHealthSummary()); LOGGER.info("Host Physical Memory:" + host.getTotalPhysMemBytes()); hosts.add(host); } return hosts;}public static IdcHostBasicInfo formatHost(ApiHost apiHost) { IdcHostBasicInfo idcHostBasicInfo = new IdcHostBasicInfo(); idcHostBasicInfo.sethostHealthSummary(apiHost.getHealthSummary().toString()); idcHostBasicInfo.setHostName(apiHost.getHostname()); idcHostBasicInfo.setTotalPhysMemBytes(apiHost.getTotalPhysMemBytes()); return idcHostBasicInfo;}/** * 通过tsquery来动态获取对应的metrics info * * @param query * @param startTime * @param endTime * @return */public static List getHostMetrics(String query, String startTime, String endTime) throws ParseException { TimeSeriesResourceV11 timeSeriesResourceV11 = apiRoot.getTimeSeriesResource(); ApiTimeSeriesResponseList responseList = timeSeriesResourceV11.queryTimeSeries(query, startTime, endTime); List apiTimeSeriesResponseList = responseList.getResponses(); List metrics = formatApiTimeSeriesResponseList(apiTimeSeriesResponseList); return metrics;}public static List formatApiTimeSeriesResponseList(List apiTimeSeriesResponseList) throws ParseException { List metrics = new ArrayList(); DateUtils dateUtils = new DateUtils(); for (ApiTimeSeriesResponse apiTimeSeriesResponse : apiTimeSeriesResponseList) { List dataList = new ArrayList(); List apiTimeSeriesResponseLists = apiTimeSeriesResponse.getTimeSeries(); for (ApiTimeSeries apiTimeSeries : apiTimeSeriesResponseLists) { LOGGER.info("query sql is: " + apiTimeSeries.getMetadata().get_Expression()); IdcMetricInfo metric = new IdcMetricInfo(); metric.setMetricName(apiTimeSeries.getMetadata().getMetricName()); metric.setEntityName(apiTimeSeries.getMetadata().getEntityName()); metric.setStartTime(apiTimeSeries.getMetadata().getStartTime().toString()); metric.setEndTime(apiTimeSeries.getMetadata().getEndTime().toString()); for (ApiTimeSeriesData apiTimeSeriesData : apiTimeSeries.getData()) { MetricData data = new MetricData(); // 在Data中插入EntityName,避免重复数据的产生 data.seHostname(apiTimeSeries.getMetadata().getEntityName()); // CM默认得到的时间格式为 EEE MMM dd HH:mm:ss 'CST' yyyy,转换时间格式为 yyyy-MM-dd HH:mm:ss data.setTimestamp(dateUtils.parse(apiTimeSeriesData.getTimestamp().toString())); data.setType(apiTimeSeriesData.getType()); data.setValue(apiTimeSeriesData.getValue()); dataList.add(data); } metric.setData(dataList); metrics.add(metric); } } return metrics;} 注意:
代码中涉及到的DateUtils需要自己去进行实现
通过这部分代码可以通过传入tsquery的方式去获取对应的idc集群的metric信息;接下来的代码我们只需要通过ServiceImpl去实现对应的监控指标的获取代码即可
如果想通过cm api与spring boot整合的,这其中还会遇到2个问题:
依赖冲突问题,主要表现在jackson与cxf的冲突;通过排jar包的方式可以解决正则解析错误,该问题为cm使用过程中的一个坑,目前仍在排查当中,具体表现形式为:

这里面有个空格,因此在编译的过程中直接会报正则解析的错误;但是我们可以发现在cm 6.x的api版本中已经没有这个问题了:
因此可以直接升级api的版本来解决该问题,但是随之带来的问题就是与线上运行的cm版本不一致(线上的版本为5.13.2),因此对于如何解决仍然需要思考;不过经过测试发现,使用cm 6.x版本的api,对于目前线上那套版本的相关指标并不影响
问题
集群
代码
数据
版本
指标
信息
方式
监控
机房
一致
平台
时间
格式
正则
资源
过程
错误
冲突
接下来
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
亿人帮互联网科技有限公司
湖南永感互联网科技有限公司
互联网金融 金融科技
礼当家互联网科技
米客互联网科技
郑州华宇互联网科技
互联网前沿科技
互联网金融科技委员会
多迪互联网科技有限公司
互联网科技热点资讯
互联网科技项目计划书材料类
浙江互联网科技研学营
滨湖区互联网智能科技产品有哪些
上海京穆互联网科技有限公司
中国新注册互联网科技
艺电能源互联网科技有限公司招聘
西安左小互联网科技有限公司
张家口科技产业互联网平台
科技互联网经济论坛
华人运通互联网科技公司
互联网加科技
互联网科技垄断
有马互联网科技
杭州互联网科技公司
世界互联网领先科技成果
宜安科技 互联网金融
阿里互联网科技公司
昭通互联网科技选哪家
特约风豹互联网科技为什么扣费
三亚科技创新互联网基地