InfluxDBClientError: политика хранения не найдена: autogen

Я просматриваю https://www.influxdata.com/blog/getting-started-python-influxdb/ документацию, чтобы запросить InflDB с помощью Python.

Я могу создать базу данных:

client = InfluxDBClient(host='localhost', port=8086)
client.create_database('pyexample')
client.get_list_database() 
client.switch_database('pyexample')

Плюс я также отправляю данные в базу данных:

json_body = [
{
    "measurement": "brushEvents",
    "tags": {
        "user": "Carol",
        "brushId": "6c89f539-71c6-490d-a28d-6c5d84c0ee2f"
    },
    "time": "2018-03-28T8:01:00Z",
    "fields": {
        "duration": 127
    }
},
{
    "measurement": "brushEvents",
    "tags": {
        "user": "Carol",
        "brushId": "6c89f539-71c6-490d-a28d-6c5d84c0ee2f"
    },
    "time": "2018-03-29T8:04:00Z",
    "fields": {
        "duration": 132
    }
},
{
    "measurement": "brushEvents",
    "tags": {
        "user": "Carol",
        "brushId": "6c89f539-71c6-490d-a28d-6c5d84c0ee2f"
    },
    "time": "2018-03-30T8:02:00Z",
    "fields": {
        "duration": 129
    }
}
]

Вызов тела json как:

client.write_points(json_body)
True 

Но скоро я хочу запросить метрики из базы данных с помощью:

client.query('SELECT "duration" FROM "pyexample"."autogen"."brushEvents" WHERE time > now() - 4d GROUP BY "user"')

Этот запрос приводит к ошибке:

Файл ipython-input-31-6e47204db16b, строка 1, в модуле client.query('SELECT "duration" ОТ "pyexample". "Autogen". "BrushEvents" ГДЕ время> now() - 4d GROUP BY "user"')

Файл "/home/rahul/anaconda2/lib/python2.7/site-packages/influxdb/client.py", строка 420, в запросе в data.get('results', [])

Файл "/home/rahul/anaconda2/lib/python2.7/site-packages/influxdb/resultset.py", строка 25, в init init InfluxDBClientError(self.error)

InfluxDBClientError: retention policy not found: autogen

Как я могу получить результат запроса?

Я проверил политику хранения, где также обнаружил ошибку:

client.query('SHOW RETENTION POLICIES')

Traceback (последний вызов был последним):

Файл "", строка 1, в файле client.query ('ПОКАЗАТЬ ПОКАЗАНИЯ ПО УХОДУ')

Файл "/home/rahul/anaconda2/lib/python2.7/site-packages/influxdb/client.py", строка 409, в запросе Ожидаемый_ответ_код = ожидаемый_ответ_код

Файл "/home/rahul/anaconda2/lib/python2.7/site-packages/influxdb/client.py", строка 286, в запросе повышает InfluxDBClientError (response.content, response.status_code)

InfluxDBClientError: 400: {"error": "запрос синтаксического анализа ошибки: найден EOF, ожидается включение в строке 1, символ 25"}

2 ответа

Решение

+ Изменить autogen в default:

client.query('SELECT "duration" FROM "pyexample"."default"."brushEvents" WHERE time > now() - 4d GROUP BY "user"')

Это зависит от того, какое сообщение об ошибке вы получаете. В моем случае я получил ошибку « Политика хранения не найдена: навсегда », что переводится как «Политика хранения с именем «навсегда» не найдена» .

И я исправил это:

  • Войдите в док-контейнер InfluxDB.
  • Запуск influx
  • use collectdвыбрать базу данных
  • Создайте новую политику хранения с именем «навсегда»: create retention policy "forever" on "collectd" duration 2d replication 1

Официальную документацию можно найти: Управление политикой хранения

Другие вопросы по тегам