天天看點

OpenTSDB常用接口使用DEMO(查詢)

一、說明

OpenTSDB的寫入目前有OpenTSDB開源的tcollector采集架構,是以不着重去寫關于寫入的接口說明,這裡主要是介紹常用的讀取接口,便于對監控資料進行一些定制化檢查、統計。

二、常用接口

OpenTSDB位址:192.168.180.128:16002

*1、查詢所有的metric*

    http://192.168.180.128:16002/api/suggest?max=1000&q=&type=metrics

    傳回

    ["test.delete","test.delete2"] 

*2、查詢全量tag*

    http://192.168.180.128:16002/api/suggest?max=1000&q=&type=tagk

    ["host","idc"]

*3、查詢全量tagv*

    http://192.168.180.128:16002/api/suggest?max=1000&q=&type=tagv

    ["0.0.0.1","0.0.0.2","test1"]

*4、指定metric,查全量tagk*

    http://192.168.180.128:16002/api/search/lookup?limit=1000&m=test.delete

    得到的結果是這個metric下所有的tag、tagv,需要處理之後才會得到全量tagk

    {"type":"LOOKUP","metric":"test.delete","tags":[],"limit":1000,"time":14.0,"results":[{"tsuid":"C66AC1000001000001000002000002","metric":"test.delete","tags":{"host":"0.0.0.1","idc":"test1"}}],"startIndex":0,"totalResults":1}

*5、指定metric,指定tagk,查全量tagv*

    http://192.168.180.128:16002/api/search/lookup?limit=3000&m=test.delete{idc=*}

    {"type":"LOOKUP","metric":"test.delete","tags":[{"key":"idc","value":"*"}],"limit":3000,"time":13.0,"results":[{"tsuid":"C66AC1000001000001000002000002","metric":"test.delete","tags":{"host":"0.0.0.1","idc":"test1"}}],"startIndex":0,"totalResults":1}

*6、指定metric,限定一個tagk=takv,查另外一個tagk下的所有tagv*

    (如:test.delete,查指定idc=test1條件下,host的所有值)

    http://192.168.180.128:16002/api/search/lookup?limit=3000&m=test.delete%7Bhost%3D*,idc%3Dtest1%7D

    {"type":"LOOKUP","metric":"test.delete","tags":[{"key":"host","value":"*"},{"key":"idc","value":"test1"}],"limit":3000,"time":4.0,"results":[{"tsuid":"C66AC1000001000001000002000002","metric":"test.delete","tags":{"host":"0.0.0.1","idc":"test1"}}],"startIndex":0,"totalResults":1}

三、應用場景之巡檢

  • 功能1,巡檢cmdb中沒有添加監控的主機:

    通過/api/search/lookup?limit=3000&m=monitor.alive{endpoint=*}接口查所有監控主機,與cmdb中的主機進行比對,得出未添加監控的主機清單。

  • 功能2,巡檢cmdb中沒有添加監控的資料庫執行個體

    通過/api/search/lookup?limit=3000&m=mysql.alive{endpoint=*}接口查詢所有監控主機及資料庫端口号,與cmdb中的資料庫執行個體進行對比,得出未添加監控的執行個體清單。

  • 功能3,巡檢指定時間内指定metric無資料上報的主機:

   #使用 /api/query接口

   #ipList為周遊的ip清單

    tsdbQuery = {

        'start': starttime,

        'end': endtime,

        'queries': [{

            'aggregator':'avg',

            'downsample':'1h-avg',

            'metric': ‘monitor.alive’,

            'rate': 'false',

            'filters': [{

                'type': 'literal_or',

                'tagk': 'endpoint',

                'filter': "|".join(ipList),

                'groupBy': 'true'

            }]

        }]

    }

取出無資料的endpoint,這些endpoint則為采集資料失敗的主機

  • 功能4,巡檢cpu、磁盤、記憶體全天平均使用率top 10的主機清單:

    同功能3的接口,隻是metric改為對于cpu、磁盤、記憶體的metric即可。

功能n,使用/api/query出來的監控資料可以做各種應用,具體看需求。