influx+grafana自定义python采集数据和一些坑的总结

yipeiwu_com7年前Python基础

先上网卡数据采集脚本,这个基本上是最大的坑,因为一些数据的类型不正确会导致no datapoint的错误,真是令人抓狂,注意其中几个key的值必须是int或者float类型,如果你不慎写成了string,那就麻烦了,其他的tag是string类型。

另外数据采集时间间隔一般就是10秒,这是潜规则,大家都懂。

有图有真相

#! /usr/bin/env python
#-*- coding:utf-8 -*-
 
import os
import arrow
import time
from time import sleep
from influxdb import InfluxDBClient
 
client = InfluxDBClient('localhost', 8086, 'root', '', 'telegraf') 
 
while True:
  if int(time.time())%10 == 0:
    cmd = 'cat /proc/net/dev|grep "ens4"'
    rawline = os.popen(cmd).read().strip()
    rxbytes = int(rawline.split()[1])
    txbytes = int(rawline.split()[9])
    rxpks = int(rawline.split()[2])
    txpks = int(rawline.split()[10])
    now = str(arrow.now()).split('.')[0] + 'Z'
 
    print time.time(), rxbytes,txbytes,rxpks,txpks  
 
    json_body = [
      {
        "measurement": "network",
        "tags": {
          "host": "gc-u16",
          "nio": "ens4"
        },
        #"time": now,
        "fields": {
          "rxbytes": rxbytes,
          "txbytes": txbytes,
          "rxpks": rxpks,
          "txpks": txpks
        }
      }
    ]
 
    client.write_points(json_body)
  sleep(1)

运行脚本,查看influxdb数据,至于后台+独立线程这些东西就见仁见智了

然后配置图形,这个就简单了,只要你数据没写错,基本上grafana都能采集到,这里忽略配置数据源创建dashboard和表格等乱七八糟的,直接上配置的sql图形,大致就是这样吧

总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对【听图阁-专注于Python设计】的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

Python画图学习入门教程

本文实例讲述了Python画图的基本方法。分享给大家供大家参考,具体如下: Python:使用matplotlib绘制图表 python绘制图表的方法,有个强大的类库matplotlib...

python中hasattr()、getattr()、setattr()函数的使用

python中hasattr()、getattr()、setattr()函数的使用

 引言:   在阅读源码时,有很多简写的形式,其中一个比较常用的就是getattr()用来调用一个类中的变量或者方法,相关联的hasattr()、getattr()、setat...

python中的插值 scipy-interp的实现代码

python中的插值 scipy-interp的实现代码

具体代码如下所示: import numpy as np from matplotlib import pyplot as plt from scipy.interpolate im...

python利用wx实现界面按钮和按钮监听和字体改变的方法

python利用wx实现界面按钮和按钮监听和字体改变的方法

wxPython是Python语言的一套优秀的GUI图形库。允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。 wxPython是作为优秀的跨平台GUI库wxWidge...

pybind11和numpy进行交互的方法

使用一个遵循buffer protocol的对象就可以和numpy交互了. 这个buffer_protocol要有哪些东西呢? 要有如下接口: struct buffer_i...