没有项目描述
Grafane的Python项目详细描述
格拉凡尼
一个非常固执己见的infloxdb客户机,它使用official python client,并在grafana的查询生成器中受到很大启发。
设置
pip install grafane
为了查询infloxdb,此库希望设置以下环境变量:
INFLUXDB_HOST
:默认为0.0.0INFLUXDB_PORT
:默认为8086INFLUXDB_DB
:默认为metricsINFLUXDB_USER
:默认为adminINFLUXDB_USER_PASSWORD
:默认为admin123
落差测量
c = Grafane(metric='test')
c.drop_measurement() # Drops test from influxdb
写入
使用:
points=[{'fields':{'value':1.2,'value2':1.3,},'tags':{'tag1':'value1','tag2':'value2'}},{'fields':{'value':1.86,'value2':2.3,},'tags':{'tag1':'value2','tag2':'value1'}},{'fields':{'value':1.4,'value2':1.1,},'tags':{'tag1':'value3','tag2':'value2'}},{'fields':{'value':1.8,'value2':1.95,},'tags':{'tag1':'value1','tag2':'value2'}},]
您可以执行多个单一查询:
fromgrafaneimportGrafanec=Grafane(metric='generic')# Metric defaults to genericforpinpoints:c.report(p['fields'],p['tags'])
或一个具有多个点的查询:
c.report_points(points)
如果不为点提供time
,则默认为:
>>>datetime.utcnow().replace(tzinfo=pytz.utc)datetime.datetime(2019,2,8,19,32,38,788003,tzinfo=<UTC>)
阅读
选择
In[6]:c.select(fields='value')In[7]:c.execute_query()Out[7]:[{'time':'2019-02-10T20:37:13.786477056Z','value':1.2},{'time':'2019-02-10T20:37:13.786508032Z','value':1.86},{'time':'2019-02-10T20:37:13.786518016Z','value':1.4},{'time':'2019-02-10T20:37:13.786535936Z','value':1.8}]
选择多个字段
In[16]:c.select(fields=['value','value2'])In[17]:c.execute_query()Out[17]:[{'time':'2019-02-10T20:42:37.22864512Z','value':1.2,'value2':1.3},{'time':'2019-02-10T20:42:37.228871936Z','value':1.86,'value2':2.3},{'time':'2019-02-10T20:42:37.228883968Z','value':1.4,'value2':1.1},{'time':'2019-02-10T20:42:37.22889216Z','value':1.8,'value2':1.95}]
选择w/聚合
In[18]:c.select(fields='value',aggregation='sum')In[19]:c.execute_query()Out[19]:[{'time':'1970-01-01T00:00:00Z','sum':6.26}]
选择多个字段w/聚合
In[20]:c.select(fields=['value','value2'],aggregation=['sum','mean'])In[21]:c.execute_query()Out[21]:[{'time':'1970-01-01T00:00:00Z','sum':6.26,'mean':1.6625}]
按时间块分组聚合结果
In[22]:c.select(fields=['value','value2'],aggregation=['sum','mean'])In[23]:c.time_block('1m')In[24]:c.execute_query()Out[24]:[{'time':'2019-02-10T20:42:00Z','sum':6.26,'mean':1.6625},{'time':'2019-02-10T20:43:00Z','sum':None,'mean':None},{'time':'2019-02-10T20:44:00Z','sum':None,'mean':None},{'time':'2019-02-10T20:45:00Z','sum':None,'mean':None},{'time':'2019-02-10T20:46:00Z','sum':None,'mean':None},{'time':'2019-02-10T20:47:00Z','sum':None,'mean':None}]
分组时间块时,为了避免空行,您需要用none来填充结果
In[29]:c.select(fields=['value','value2'],aggregation=['sum','mean'])In[30]:c.time_block('1m')In[31]:c.fill_with('none')In[32]:c.execute_query()Out[32]:[{'time':'2019-02-10T20:42:00Z','sum':6.26,'mean':1.6625}]
按标记值将聚合结果分组
In[34]:c.select(fields=['value','value2'],aggregation=['sum','mean'])In[35]:c.group_by('tag1')In[36]:c.execute_query()Out[36]:[{'tags':{'tag1':'value1'},'time':'1970-01-01T00:00:00Z','sum':3,'mean':1.625},{'tags':{'tag1':'value2'},'time':'1970-01-01T00:00:00Z','sum':1.86,'mean':2.3},{'tags':{'tag1':'value3'},'time':'1970-01-01T00:00:00Z','sum':1.4,'mean':1.1}]