granfana获取数据的记录

本文并不设计具体如何使用grafana的使用,只是想记录一下,去年过年前,1天内仓促写下的代码的感受。首先,基本的代码封装还是要有的,比如使用静态工具类方式,或者,单例的模式。

大概的场景描述,使用grafana的api接口,查询数据。(通过查看页面的请求的接口的url),然后,大概有6个接口,每个接口要调用两次。获取双活数据。

肯定

代码封装

首先代码整体封装成了一个类,通过实例化来调用。使用了静态方法,来快速的实例类。但是呢,差点忘记了要实例化两个类,而不能通过静态方法,来获取。

代码调试

线上代码调试,确实比较麻烦,曾想过使用upload的方式,动态的修改线上代码,但是,线上是两个部署实例,导致上传代码过去,被负载均衡,请求不确定被哪个实例处理,需要多次点上传,才有可能并多个实例同步到代码。

后来,通过读取请求参数,来判断是否需要调试。简单的示例如下

$debug = Yii::$app->request->get('d', 0); // 时间 秒
        

//多处增加该函数,来动态调试
//<--debug 
if($debug == 1){
    echo $debug;
    var_dump($models);
    exit;
}
//-->debug

可以通过使用更复杂的请求参数,来设置配置的值。这样,及时代码上线了,代码没有删除,也没有影响。

可以通过下面的命令,快速的删除debug内容。

sed  -i '/<--debug/,/-->debug/d' 

否定

前期错误

有的时候,知道某出代码可能会出现一些问题,但是呢,为了图快,知道存在潜在问题,但是呢,没有解决,导致最终代码集成后,出现了错误,又开始调试、排错,最终发现,就是那个点。整体浪费了不少时间。

举例:换行符号处理,知道,windows跟linux不太一样,结果呢,只在windows下完成调试,部署到Linux后,找了半天才排查到错误。

代码抛出异常,没有处理。

搭架子

因为6个接口的请求方式,比较差不多。在一个接口还没有完成写好的情况下,盲目的写出6个接口,其实等于无用功。后续,其实,在完善第一个接口后,又全部重写了。故,n*1的代码,应该先集中将其中一个完善。

总结

整个代码写的比较快,快速的实现了功能。但是受限于代码调试环境,缺少合适的数据,调试较困难。等上线后,由于在windows下写得功能,没有在Linux下做测试,导致排错又浪费了大量的时间。等排查成功后,测试代码在线上跑通了,请求时,正式环境中也出错,不方便调试,频繁发布、部署,又浪费时间,而线上又没有调试工具 ,而自己又没有抓住出错问题的所在,后来勉勉强强才找到真正的问题。

抛出异常,要进行处理,不然,后面非常麻烦。