prometheus自定义监控:监控接口的实时调用情况

当公共平台,我们需要实时监控各个业务系统对公共平台的调用情况时,可以在代码中自定义prometheus监控指标。

如下图中,维度使用tags来标记,我定义了两个维度,一个是关联系统的id: syskey  。一个是访问的表  tablename。

我需要按关联系统对每个表的调用情况统计:

 private void addCountMetric(String tableName) {
        Optional<String> opt = SecurityUtils.getCurrentUserLogin();
        String[]  tags = new String[4];
        if(opt.isPresent()){
            tags[0] = "sysKey";
            tags[1] = opt.get();
        }
        tags[2] ="tableName";
        tags[3] =tableName;

            Metrics.counter("getCommonDataWithTemplateId",tags).increment();


    }

我在公共数据查询接口中调用该监控metric。

 @ApiOperation("公共数据查询接口")
    @PostMapping("/getCommonDataWithTemplateId")
    @ResponseBody
    public ResponseEntity getCommonDataWithTemplateId(@RequestBody HashMap paramMap){
        log.info("get data by common interface, request param is {}",paramMap);
        SelectTemplateDTO selectTemplateDTO=commonQueryService.checkParamAndGetSelectTemplateDTO(paramMap);
        addCountMetric(selectTemplateDTO.getTableName());
        Page page=commonQueryService.getPageByParam(paramMap,selectTemplateDTO);
        List dataFinalList=commonQueryService.getfilterFiledsFromPage(page.getContent(),paramMap);
        HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(ServletUriComponentsBuilder.fromCurrentRequest(), page);
        return ResponseEntity.ok().headers(headers).body(dataFinalList);
    }

最终,我们可以在prometheus中看到我们自定义的指标。

 

最后我们再grafana中写好定义的表达式。图中可以看到每个5m的调用次数。

 

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值