使用 Cloud Insight SDK 监控北京空气质量! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
OneAPM
V2EX    问与答

使用 Cloud Insight SDK 监控北京空气质量!

  •  1
     
  •   OneAPM 2015-12-23 13:24:13 +08:00 2020 次点击
    这是一个创建于 3637 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在越来越多的 App 都开始有广告了。特别是空气质量监测,和天气类的 App ,广告还是蛮多的,眼花缭乱,真是够了。

    最近刚好在用一款系统监控工具 Cloud Insight ,它提供的 SDK 可以把任一数据上传到他们那做展示。

    灵机一动,作为一个程序员,自己动手丰衣足食,没什么不能解决的。

    pip install -i http://pypi.oneapm.com/simple --upgrade oneapm-ci-sdk
    这就安装好了。

    简单用 ipython 看了看接口文档, gauge 是主要的发数据的接口,好像 increment 也可以,但是不懂是搞啥的,貌似数据类型不一样。

    PM 2.5 API

    首先得找一个 PM 2.5 API ,参考了一下这个教程:Air Quality Widget - New Improved Feed。里面的资料显示,美国驻京使馆也用的是这里的数据,应该还算准确吧。

    注意看教程里,他们请求的地址为:

    http://feed.aqicn.org/feed/beijing/en/feed.v1.json

    请求这个地址,就可以得到数据啦。

    说到这个,其实国内很多 App 和网站都在用 PM25.in。用的人挺多的,就是发邮件速度有点慢,注册之后获取 Token 的邮件一直都没发给我!

    接入 Cloud Insight

    先介绍下 Cloud Insight 吧,就是一款系统监控工具,支持 Ubuntu 、 MySQL 、 Docker 的监控。但是他们提供 SDK 可以自定义上传数据,所以我们就用它来承接 PM 2.5 的数据吧。

    他们也提供任一指标的报警功能,所以也可以通过设置报警,来发邮件提醒给我。

    Cloud Insight SDK 和 StatsD 原理很像, SDK 的详情可以参考文档

    源代码如下:
    ```
    import requests

    from oneapm_ci_sdk import statsd

    PM25_API_URL = "http://feed.aqicn.org/feed/%s/en/feed.v1.json"

    def get_city_data(city):
    try:
    res = requests.get(PM25_API_URL % city)
    except:
    return 0
    else:
    return res.json()['aqi']['val']

    def using_sdk():
    statsd.gauge('airquality.beijing.pm25', float(get_city_data('beijing')))
    statsd.gauge('airquality.shanghai.pm25', float(get_city_data('shanghai')))
    statsd.gauge('airquality.guangzhou.pm25', float(get_city_data('guangzhou')))
    statsd.gauge('airquality.xuchang.pm25', float(get_city_data('xuchang'))) # 家里。。

    if name == 'main':
    using_sdk()
    ``
    首先通过 API 把数值取出来,然后通过
    stats.gauge` 对指标进行赋值,就可以了。呼~接下来是产品内部的使用了。

    啦啦啦~自定义仪表盘开个 Air Quaility 仪表盘,数据选进来,就可以看各个城市的 PM 2.5 的实时数值了。

    想随时随地知道北京空气质量是否超标,却又不想下载广告一大堆的空气质量 App 。那我自己动手设一个报警策略吧。

    大于或等于 100 ,就算超标好了。很简单就设置完成了。

    大功告成,等着邮件提醒吧。顺便秀一下 Kickstarter 买来的 Pebble 手表。舒心啊:没有广告的北京空气质量监测。

    本文参考一篇帖子 pm25 ,关爱老大,征求原作者同意后改写。

    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1106 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 23:42 PVG 07:42 LAX 15:42 JFK 18:42
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86