Beispiel #1
0
 def test_all_good(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     database='database',
                                     shuffle=True,
                                     client_base_class=FakeClient)
     self.assertEqual('Success', cluster.query(''))
     self.assertEqual(3, len(cluster.hosts))
     self.assertEqual(0, len(cluster.bad_hosts))
Beispiel #2
0
 def test_two_servers_fail(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     database='database',
                                     shuffle=False,
                                     client_base_class=FakeClient)
     self.assertEqual('Success', cluster.query('Fail twice'))
     self.assertEqual(1, len(cluster.hosts))
     self.assertEqual(2, len(cluster.bad_hosts))
Beispiel #3
0
 def test_all_fail(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     database='database',
                                     shuffle=True,
                                     client_base_class=FakeClient)
     with self.assertRaises(InfluxDBServerError):
         cluster.query('Fail')
     self.assertEqual(0, len(cluster.hosts))
     self.assertEqual(3, len(cluster.bad_hosts))
Beispiel #4
0
 def test_one_server_fails(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     database='database',
                                     shuffle=False,
                                     client_base_class=FakeClient)
     cluster.clients[0].fail = True
     self.assertEqual('Success', cluster.query(''))
     self.assertEqual(2, len(cluster.clients))
     self.assertEqual(1, len(cluster.bad_clients))
Beispiel #5
0
 def test_recovery(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     database='database',
                                     shuffle=True,
                                     client_base_class=FakeClient)
     with self.assertRaises(InfluxDBServerError):
         cluster.query('Fail')
     self.assertEqual('Success', cluster.query(''))
     self.assertEqual(1, len(cluster.hosts))
     self.assertEqual(2, len(cluster.bad_hosts))
Beispiel #6
0
 def test_init(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     username='******',
                                     password='******',
                                     database='database',
                                     shuffle=False,
                                     client_base_class=FakeClient)
     self.assertEqual(3, len(cluster.hosts))
     self.assertEqual(0, len(cluster.bad_hosts))
     self.assertIn((cluster._client._host, cluster._client._port),
                   cluster.hosts)
Beispiel #7
0
 def test_init(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     username='******',
                                     password='******',
                                     database='database',
                                     shuffle=False,
                                     client_base_class=FakeClient)
     self.assertEqual(3, len(cluster.clients))
     self.assertEqual(0, len(cluster.bad_clients))
     for idx, client in enumerate(cluster.clients):
         self.assertEqual(self.hosts[idx][0], client._host)
         self.assertEqual(self.hosts[idx][1], client._port)
    def __init__(self, cfg):
        influxdb.__init__(self, cfg)
        if 'influxdb_extra_tags' in cfg:
            self.influxdb_extra_tags = ast.literal_eval(
                cfg['influxdb_extra_tags'])
            print self.influxdb_extra_tags
        else:
            self.influxdb_extra_tags = {}

        hosts = map(lambda x: (x.split(':')[0], x.split(':')[1]),
                    self.influxdb_servers)
        self.client = InfluxDBClusterClient(hosts,
                                            self.influxdb_user,
                                            self.influxdb_password,
                                            timeout=self.timeout)
Beispiel #9
0
 def test_healing(self):
     cluster = InfluxDBClusterClient(hosts=self.hosts,
                                     database='database',
                                     shuffle=True,
                                     healing_delay=1,
                                     client_base_class=FakeClient)
     with self.assertRaises(InfluxDBServerError):
         cluster.query('Fail')
     self.assertEqual('Success', cluster.query(''))
     time.sleep(1.1)
     self.assertEqual('Success', cluster.query(''))
     self.assertEqual(2, len(cluster.hosts))
     self.assertEqual(1, len(cluster.bad_hosts))
     time.sleep(1.1)
     self.assertEqual('Success', cluster.query(''))
     self.assertEqual(3, len(cluster.hosts))
     self.assertEqual(0, len(cluster.bad_hosts))
    def open(self):
        """
       Connect to InfluxDB cluster.
       """
        try:
            self.cc = InfluxDBClusterClient(
                hosts=self.hosts,
                username=self.influxdb_user,
                password=self.influxdb_passwd,
                ssl=self.influxdb_ssl,
                verify_ssl=self.influxdb_verify_ssl)

            self.is_connected = CONNECTED

        except InfluxDBClientError as e:
            logging.warning("Connection failed: %s" % e)
            return False

        return True
Beispiel #11
0
def init_influxdb_client():
    global db

    if not cfg['influxdb']['cluster']:
        try:
            from influxdb import InfluxDBClient
        except ImportError as e:
            log.exception("Could not import influxdb module: {0}".format(e))
            sys.exit(1)
        db = InfluxDBClient(host=cfg['influxdb']['host'],
                            port=cfg['influxdb']['port'],
                            username=cfg['influxdb']['username'],
                            password=cfg['influxdb']['password'],
                            database=cfg['influxdb']['database'],
                            ssl=cfg['influxdb']['ssl'],
                            verify_ssl=cfg['influxdb']['verify_ssl'],
                            timeout=float(cfg['influxdb']['timeout']),
                            use_udp=cfg['influxdb']['use_udp'],
                            udp_port=cfg['influxdb']['udp_port'],
                            proxies=cfg['influxdb']['proxies'])
    else:
        try:
            from influxdb import InfluxDBClusterClient
        except ImportError as e:
            log.exception("Could not import influxdb module: {0}".format(e))
        db = InfluxDBClusterClient(
            hosts=cfg['influxdb']['hosts'],
            username=cfg['influxdb']['username'],
            password=cfg['influxdb']['password'],
            database=cfg['influxdb']['database'],
            ssl=cfg['influxdb']['ssl'],
            verify_ssl=cfg['influxdb']['verify_ssl'],
            timeout=float(cfg['influxdb']['timeout']),
            use_udp=cfg['influxdb']['use_udp'],
            udp_port=cfg['influxdb']['udp_port'],
            shuffle=cfg['influxdb']['shuffle'],
            healing_delay=cfg['influxdb']['healing_delay'])
Beispiel #12
0
#!/usr/bin/env python

from influxdb import InfluxDBClusterClient

influx_host = "127.0.0.1"
influx_port = 8086
influx_user = "******"
influx_pass = "******"
database = "example"

influx_timeout = 10
c.influx_max_metrics = 40
c.influx = InfluxDBClusterClient([(influx_host, influx_port)],
                                 influx_user,
                                 influx_pass,
                                 database,
                                 timeout=influx_timeout)

query = c.influx.query("SHOW FIELD KEYS")
values = []

for key, items in query.items():
    for i in list(items):
        values.append(i["fieldKey"])

# String of all mean(values)
# Set makes a uniq list
cq_values = ",".join(map(lambda v: 'mean("%s") AS "%s"' % (v, v), set(values)))

cq_query = 'CREATE CONTINUOUS QUERY {cq_name} ON {database} BEGIN SELECT {cq_values} INTO {database}."rp_{rp}".:MEASUREMENT FROM {database}."{query}"./.*/ GROUP BY time({rp}), * END'