python influxdb

Git:https://github.com/influxdata/influxdb-python

帮助文档:http://influxdb-python.readthedocs.io/en/latest/examples.html

代码样例

# -*- coding: utf-8 -*-

"""
pip install influxdb
InfluxDB属于时序数据库,没有提供修改和删除数据的方法。
"""

from influxdb import InfluxDBClient


class InfluxDBBaseClass(object):

    def __init__(self, ip, port, username=None, password=None, timeout=10, dbname=None):
        self.ip = ip
        self.port = int(port)
        self.username = username
        self.password = password
        self.timeout = timeout
        self.dbname = dbname
        self.__connect()

    def __connect(self):
        self.client = InfluxDBClient(host=self.ip, port=self.port, username=self.username, password=self.password,
                                     timeout=self.timeout, database=self.dbname)

    @property
    def get_list_database(self):
        """
        :return: 显示所有数据库名称
        """
        return self.client.get_list_database()

    def create_database(self, dbname):
        """
        :param dbname: 数据库名称
        :return: 创建数据库
        """
        return self.client.create_database(dbname)

    def drop_database(self, dbname):
        """
        :param dbname: 数据库名称
        :return: 删除数据库
        """
        return self.client.drop_database(dbname)

    def get_list_table(self, dbname=None):
        """
        :param dbname: 数据库名称
        :return: 显示数据库中的表
        """
        if self.dbname:
            return self.client.query('show measurements;', database=self.dbname)
        else:
            return self.client.query('show measurements;', database=dbname)

    def delete_table(self, tablename, dbname=None):
        """
        :param dbname: 数据库名称
        :param tablename: 表名
        :return: 删除表
        """
        if self.dbname:
            return self.client.query('drop measurement %s;' % tablename, database=self.dbname)
        else:
            return self.client.query('drop measurement %s;' % tablename, database=dbname)

    def insert_data(self, json_body, dbname=None):
        """
        :param json_body: InfluxDB没有提供单独的建表语句,可以通过并添加数据的方式建表
        :param dbname: 数据库名称
        :return:  创建新表并添加数据
        样例数据:json_body = [
                                {
                                    "measurement": "cpu_load_short",
                                    "tags": {
                                        "host": "server01",
                                        "region": "us-west"
                                    },
                                    "time": "2009-11-10T23:00:00Z",
                                    "fields": {
                                        "Float_value": 0.64,
                                        "Int_value": 3,
                                        "String_value": "Text",
                                        "Bool_value": True
                                    }
                                }
                            ]
        """
        if self.dbname:
            return self.client.write_points(json_body, database=self.dbname)
        else:
            return self.client.write_points(json_body, database=dbname)

    def query_table(self, query_content, dbname=None):
        """
        :param query_content: 查询语句
        :param dbname: 数据库名称
        :return: 查询表中数据
        """
        if self.dbname:
            return self.client.query(query_content, database=self.dbname)
        else:
            return self.client.query(query_content, database=dbname)

    def delete_series(self, dbname=None, measurement=None, tags=None):
        """
        :param dbname: 数据库名称
        :param measurement: 表名
        :param tags: 索引
        :return: 删除series集合
        """
        if self.dbname:
            return self.client.delete_series(database=self.dbname, measurement=measurement, tags=tags)
        else:
            return self.client.delete_series(database=dbname, measurement=measurement, tags=tags)

influxdb结合grafana监控redis性能指标

influxdb结合grafana监控RabbitMQ性能指标

原文地址:https://www.cnblogs.com/twodog/p/12140406.html