Con InfluxDB instalado, está listo para comenzar a hacer cosas increíbles. En esta sección usaremos el influxinterfaz de línea de comandos (CLI), que se incluye en todos los paquetes de InfluxDB y es una forma ligera y sencilla de interactuar con la base de datos. La CLI se comunica con InfluxDB directamente al realizar solicitudes a la API HTTP de InfluxDB a través del puerto 8086 por defecto.

Nota: La base de datos también se puede utilizar realizando solicitudes HTTP sin procesar. Consulte Escritura de datos y Consulta de datos para ver ejemplos con el curl solicitud.

Creando una base de datos

Si ha instalado InfluxDB localmente, el influx El comando debe estar disponible a través de la línea de comando. Ejecutando influx iniciará la CLI y se conectará automáticamente a la instancia local de InfluxDB (asumiendo que ya ha iniciado el servidor con service influxdb start o corriendo influxd directamente). La salida debería verse así:

$ influx -precision rfc3339
Connected to http://localhost:8086 version 1.3.x
InfluxDB shell 1.3.x
>

Notas:

  • La API HTTP de InfluxDB se ejecuta en el puerto 8086 por defecto. Por lo tanto, influx se conectará al puerto 8086 y localhost por defecto. Si necesita modificar estos valores predeterminados, ejecute influx --help.
  • los -precision El argumento especifica el formato / precisión de las marcas de tiempo devueltas. En el ejemplo anterior, rfc3339 le dice a InfluxDB que devuelva las marcas de tiempo en Formato RFC3339 (YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ).

La línea de comando ahora está lista para recibir entradas en forma de declaraciones del lenguaje de consulta Influx (también conocido como InfluxQL). Para salir del shell InfluxQL, escriba exit y presione regresar.

Una nueva instalación de InfluxDB no tiene bases de datos (aparte del sistema _internal), por lo que crear uno es nuestra primera tarea. Puede crear una base de datos con el CREATE DATABASE Declaración de InfluxQL, donde es el nombre de la base de datos que desea crear. Los nombres de las bases de datos pueden contener cualquier carácter Unicode siempre que el string está entre comillas dobles. Los nombres también se pueden dejar sin comillas si contienen solamente Letras, dígitos o guiones bajos ASCII y no comienzan con un dígito.

A lo largo de esta guía, usaremos el nombre de la base de datos mydb:

>CREATEDATABASE mydb
>

Nota: Después de presionar Enter, aparece un nuevo mensaje y no se muestra nada más. En la CLI, esto significa que la instrucción se ejecutó y no hubo errores para mostrar. Siempre se mostrará un error si algo salió mal. ¡La ausencia de malas noticias son buenas noticias!

Ahora que el mydb se crea la base de datos, usaremos el SHOW DATABASES declaración para mostrar todas las bases de datos existentes:

>SHOWDATABASES
name: databases---------------
name
_internal
mydb

>

Nota: los _internal InfluxDB crea y utiliza la base de datos para almacenar métricas de tiempo de ejecución internas. Compruébelo más tarde para obtener una visión interesante de cómo se está desempeñando InfluxDB bajo el capó.

diferente a SHOW DATABASES, la mayoría de las declaraciones de InfluxQL deben operar en una base de datos específica. Puede nombrar explícitamente la base de datos con cada consulta, pero la CLI proporciona una declaración de conveniencia, USE , que configurará automáticamente la base de datos para todas las solicitudes futuras. Por ejemplo:

>USE mydb
Usingdatabase mydb
>

Ahora los comandos futuros solo se ejecutarán contra el mydb base de datos.

Escribir y explorar datos

Ahora que tenemos una base de datos, InfluxDB está listo para aceptar consultas y escrituras.

Primero, una breve introducción al almacén de datos. Los datos en InfluxDB están organizados por “series de tiempo”, que contienen un valor medido, como “cpu_load” o “temperatura”. Las series de tiempo tienen de cero a muchos points, uno para cada muestra discreta de la métrica. Los puntos consisten en time (una marca de tiempo), una measurement (“Cpu_load”, por ejemplo), al menos una key-valor field (el valor medido en sí, por ejemplo, “valor = 0,64” o “temperatura = 21,2”), y de cero a muchos key-valor tags que contenga cualquier metadato sobre el valor (por ejemplo, “host = servidor01”, “región = EMEA”, “dc = Frankfurt”).

Conceptualmente puedes pensar en un measurement como una tabla SQL, donde el índice principal siempre es el tiempo. tags y fields son efectivamente columnas en la tabla. tags están indexados, y fields no son. La diferencia es que, con InfluxDB, puede tener millones de mediciones, no tiene que definir esquemas por adelantado y null los valores no se almacenan.

Los puntos se escriben en InfluxDB utilizando el protocolo de línea, que sigue el siguiente formato:

[,=...] =[,=...] [unix-nano-timestamp]

Las siguientes líneas son ejemplos de puntos que se pueden escribir en InfluxDB:

cpu,host=serverA,region=us_west value=0.64
payment,device=mobile,product=Notepad,method=credit billed=33,licenses=3i 1434067467100293230
stock,symbol=AAPL bid=127.46,ask=127.48
temperature,machine=unit42,type=assembly external=25,internal=37 1434067467000000000

Nota: Puede encontrar más información sobre el protocolo de línea en la página Escribir sintaxis.

Para insertar un único punto de datos de serie temporal en InfluxDB usando la CLI, ingrese INSERT seguido de un punto:

>INSERT cpu,host=serverA,region=us_west value=0.64>

Un punto con el nombre de medición de cpu y etiquetas host y region ahora se ha escrito en la base de datos, con la medida value de 0.64.

Ahora consultaremos los datos que acabamos de escribir:

>SELECT"host","region","value"FROM"cpu"
name: cpu
---------time		    	                     host     	region   value2015-10-21T19:28:07.580664347Z  serverA	  us_west	 0.64>

Nota: No proporcionamos una marca de tiempo al escribir nuestro punto. Cuando no se proporciona ninguna marca de tiempo para un punto, InfluxDB asigna la marca de tiempo actual local cuando se ingiere el punto. Eso significa que su marca de tiempo será diferente.

Intentemos almacenar otro tipo de datos, con dos campos en la misma medida:

>INSERT temperature,machine=unit42,type=assembly external=25,internal=37>

Para devolver todos los campos y etiquetas con una consulta, puede utilizar el * operador:

>SELECT*FROM"temperature"
name: temperature
-----------------time		                        	 external	  internal	 machine	type2015-10-21T19:28:08.385013942Z  2537     		unit42  assembly

>

InfluxQL tiene muchas características y palabras clave que no se tratan aquí, incluida la compatibilidad con expresiones regulares estilo Go. Por ejemplo:

>SELECT*FROM/.*/LIMIT1-->SELECT*FROM"cpu_load_short"-->SELECT*FROM"cpu_load_short"WHERE"value">0.9

Esto es todo lo que necesita saber para escribir datos en InfluxDB y volver a consultarlos. Para obtener más información sobre el protocolo de escritura InfluxDB, consulte la guía sobre escritura de datos. Para explorar más el lenguaje de consulta, consulte la guía sobre consultas de datos. Para obtener más información sobre los conceptos de InfluxDB, consulte la página de conceptos clave.