Mostrando entradas con la etiqueta Kibana. Mostrar todas las entradas
Mostrando entradas con la etiqueta Kibana. Mostrar todas las entradas

29 marzo 2019

¿Hay vida más allá de Oracle? KQL: Kibana Query Language




Este tutorial es una explicación breve sobre cómo escribir consultas en Kibana, en la barra de búsqueda en la parte superior, o en Elasticsearch, utilizando la consulta de cadena de consulta. El lenguaje de consulta utilizado es en realidad el lenguaje de consulta de Apache Lucene, ya que es Lucene  el motor utilizado en Elasticsearch para indexar datos.

Comprender cómo se indexan sus datos en Elasticsearch influye en gran medida en qué y cómo puede buscar con sus consultas. Por eso esta no solo será otra entrada del Lucene query parser.

Por lo tanto, el tema de este tutorial no es solo explicar el lenguaje de consulta, sino también explicar por qué puede o no encontrar sus documentos almacenados en Elasticsearch.

Indexación de documentos
Primero, es crucial entender cómo Elasticsearch indexa los datos. Por lo tanto, ponemos los siguientes dos documentos en nuestra instancia de Elasticsearch.
:

{
  "title": "Lord Jim",
  "author": "Joseph Conrad"
}
{
  "title": "The Last Command",
  "author": "Timothy Zahn"
}
{
  "title": "Heart of Darkness",
  "author": "Joseph Conrad"
}


Si no cambiamos nada en las asignaciones de Elasticsearch para ese índice, Elasticsearch detectará automáticamente la cadena como el tipo de ambos campos al insertar el primer documento.

¿Qué hace un analizador?
Un analizador tiene varios tokenizadores y / o filtros adjuntos. El tokenizer obtendrá el valor del campo que se debe indexar (por ejemplo, "The Heart of Darkness") y puede dividir el valor en varios fragmentos que el usuario debería poder buscar (más en un momento). Los filtros de un analizador pueden transformar o filtrar tokens que produce el tokenizador.

Todas las fichas resultantes se almacenarán en un llamado índice invertido. Ese índice contendrá todos los tokens producidos por el analizador y un enlace a cuál de los documentos los contenían.

Por lo tanto, si el usuario presenta Elasticsearch con una palabra de búsqueda, solo tiene que buscarlo en el índice invertido y verá instantáneamente qué documentos debe devolver. Dado que no especificamos ninguna asignación para nuestro índice de Elasticsearch, los campos de la cadena de tipo se analizarán con el Analizador Estándar de forma predeterminada.

Este analizador dividirá primero el valor del campo en palabras (utilizará caracteres de espacio y puntuación como límites) y luego utilizará un filtro para transformar todas las fichas en minúsculas. Después de insertar los dos documentos anteriores, el índice invertido para el campo de título se vería de la siguiente manera, con 1 que se refiere al primer documento “Lord Jim”, 2 al segundo. "The Last Command" y 3 al tercero que se refieren al "The heart of Darkness":

Término
Documento
lord
1
jim
1
the
2,3
last
2
command
2
heart
3
of
3
darkness
3


También se creará un índice invertido para el campo de autor. Este contendrá cuatro entradas: una para “Timothy”, otra para  “Zahn” una para "Joseph" y otra para "Conrad" que están vinculadas a ambos documentos.

Ese índice invertido ahora permite a Elasticsearch buscar rápidamente qué documentos devolver para una búsqueda si el usuario busca "guía". Además, los Términos-Agregación en Elasticsearch / Kibana solo analizan ese índice invertido y devuelven los términos que tienen los documentos más / menos (según el orden especificado por el usuario) adjuntos.

Mapeos en Elasticsearch
Si inserta datos en elasticsearch, eso no es realmente texto, pero, por ejemplo, una URL o similar que el análisis predeterminado no tiene mucho sentido. Especialmente si va a visualizar sus datos con Kibana, no desea que un gráfico de las URL más visitadas contenga una entrada para "http" y la ruta de acceso se divide en cada barra. Le gustaría tener una entrada por dominio real. Lo que desea es que Elasticsearch no analice los valores de sus documentos.

Por lo tanto, debe definir una asignación para su índice manualmente. Esto no está cubierto en ese tutorial, pero eche un vistazo a la documentación oficial. Si específica “index: not_analyzed“ en el mapeo, el índice invertido para el campo del título se vería de la siguiente manera:


Término
Documento
Lord Jim
1
The Last Commnad
2
The heart of darkness
3

Y el índice invertido del campo de autor ahora se vería así.

Término
Documento
Joseph Conrad
1,3
Timothy Zahn
2


Como ves, Elasticsearch ya no divide los valores y tampoco los transforma en minúsculas. Ya sea que sus valores sean analizados o no (es decir, qué términos están en el índice invertido) tienen un gran impacto en qué y cómo puede buscar, como veremos en las siguientes secciones.

Cuando hablamos de los "datos analizados", esto significa que tiene los datos en los campos de cadena analizados. Cuando hablamos de "datos no analizados", esto significa que usted tiene una asignación que tiene ambos campos como no analizados.

Ahora explicaremos cómo Elasticsearch indexa los datos, podemos continuar con el tema real: la búsqueda.

Las siguientes consultas siempre se pueden usar en Kibana en la parte superior de la pestaña Descubrir, su visualización y / o paneles de control. Además, estas consultas se pueden usar en la consulta de cadena de consulta cuando se habla directamente con Elasticsearch.

Empecemos con el autor de la consulta bastante simple: joseph. Si ingresa esta consulta en el conjunto de datos analizado, Elasticsearch devolverá ambos documentos. ¿Por qué? Buscará el término "joseph" en el índice invertido para el campo del autor. Está allí enlazando a ambos documentos, por lo que Elasticsearch devolverá esos dos documentos como resultados.

Si utilizará la misma búsqueda en el conjunto de datos no analizados, no obtendrá ningún resultado. ¿Por qué? Elasticsearch busca de nuevo "joseph" en el índice invertido. No hay ninguna entrada para solo "joseph" como término (solo para "Joseph Conrad"), por lo que no devolverá ningún resultado.

Si intenta buscar el autor: Conrard (primera letra en mayúscula) en los datos analizados, obtendrá como resultado ambos documentos. ¿Por qué? Debido a que Elasticsearch reconoce que el campo del autor ha sido analizado e intenta aplicar el mismo analizador a su consulta de búsqueda "Conrad", significa que también se transformará en minúsculas antes de que se busque en el índice invertido. Por eso sigue encontrando los documentos. La misma consulta en datos no analizados aún no producirá ningún resultado, ya que no hay ninguna entrada para "Joseph" (solo para "Joseph Conrad").

06 septiembre 2017

¿Hay vida más allá de Oracle? Hoy presentamos Kibana de Elastic


Kibana es una plataforma de análisis y visualización de código abierto diseñada para trabajar con Elasticsearch. Utiliza Kibana para buscar, ver e interactuar con datos almacenados en los índices de Elasticsearch. Puede realizar análisis de datos avanzados y visualizar fácilmente sus datos en una variedad de gráficos, tablas y mapas.

Kibana facilita la comprensión de grandes volúmenes de datos. Su sencilla interfaz basada en navegador le permite crear y compartir rápidamente paneles dinámicos que muestran cambios en las consultas de Elasticsearch en tiempo real.

La configuración de Kibana es muy fácil. Puedes instalar Kibana y comenzar a explorar sus índices Elasticsearch en minutos - sin código, sin infraestructura adicional requerida.

Versión Elasticsearch

Kibana debe estar configurado para ejecutarse contra un nodo Elasticsearch de la misma versión. Esta es la configuración oficialmente admitida.

No se admite la ejecución de versiones de versiones mayores de Kibana y Elasticsearch (por ejemplo, Kibana 5.x y Elasticsearch 2.x) ni una versión menor de Kibana que sea más reciente que la versión de Elasticsearch (por ejemplo, Kibana 5.1 y Elasticsearch 5.0).

Ejecutar una versión menor de Elasticsearch que sea más alta que Kibana generalmente funcionará para facilitar un proceso de actualización donde Elasticsearch se actualiza primero (por ejemplo, Kibana 5.0 y Elasticsearch 5.1). En esta configuración, se registrará una advertencia en el inicio del servidor Kibana, por lo que sólo se pretende que sea temporal hasta que Kibana se actualiza a la misma versión que Elasticsearch.

Normalmente se admite la ejecución de versiones de versión de parche diferente de Kibana y Elasticsearch (por ejemplo, Kibana 5.0.0 y Elasticsearch 5.0.1), aunque alentamos a los usuarios a ejecutar las mismas versiones de Kibana y Elasticsearch hasta la versión de revisión.

Plataformas soportadas


Los paquetes de Kibana se proporcionan y se prueban contra Linux, Darwin y Windows. Dado que Kibana se ejecuta en Node.js, incluimos los binarios Node.js necesarios para estas plataformas. Ejecutar Kibana contra una versión de Node.js mantenida por separado no es compatible.

Como instalar Kibana en Windows

Kibana se puede instalar en Windows utilizando el paquete .zip.

La última versión estable de Kibana se puede encontrar en la página de descarga de Kibana. Otras versiones se pueden encontrar en la página de Publicaciones pasadas.

Descargue e instale el paquete .zip
Descargue el archivo de Windows .zip para Kibana v5.5.2 desde https://artifacts.elastic.co/downloads/kibana/kibana-5.5.2-windows-x86.zip

Descomprimirlo con su herramienta de descompresión favorita. Esto creará una carpeta llamada kibana-5.5.2-windows-x86, a la que nos referiremos como $ KIBANA_HOME. En una ventana de terminal, CD al directorio $ KIBANA_HOME, por ejemplo:

CD c: \ kibana-5.5.2-windows-x86

Ejecutar Kibana desde la línea de comandos
Kibana se puede iniciar desde la línea de comandos de la siguiente manera:

\ bin \ kibana

De forma predeterminada, Kibana se ejecuta en primer plano, imprime sus registros en STDOUT y se puede detener presionando Ctrl-C.

Configuración de Kibana
El servidor Kibana lee las propiedades del archivo kibana.yml al inicio. La configuración predeterminada configura Kibana para ejecutarse en localhost: 5601. Para cambiar el host o el número de puerto, o conectarse a Elasticsearch que se ejecuta en una máquina diferente, deberá actualizar su archivo kibana.yml. También puede habilitar SSL y establecer una variedad de otras opciones.

Puerto de servicio:
Valor predeterminado: 5601 Kibana es servido por un servidor back-end. Esta configuración especifica el puerto que se va a usar.

server.host:
Valor predeterminado: "localhost" Esta configuración especifica el host del servidor back-end.

server.basePath:
Permite especificar una ruta de acceso para montar Kibana en si se está ejecutando detrás de un proxy. Esto sólo afecta a las URL generadas por Kibana, se espera que su proxy elimine el valor de basePath antes de reenviar las solicitudes a Kibana. Esta configuración no puede terminar en una barra (/).

server.maxPayloadBytes:
Valor predeterminado: 1048576 El tamaño máximo de la carga útil en bytes para las solicitudes de servidor entrantes.

nombre del servidor:
Predeterminado: "your-hostname" Un nombre de visualización legible por humanos que identifica esta instancia de Kibana.

server.defaultRoute:
Valor predeterminado: "/ app / kibana" Esta configuración especifica la ruta predeterminada al abrir Kibana. Puede utilizar esta configuración para modificar la página de destino al abrir Kibana.

elasticsearch.url:
Predeterminado: "http: // localhost: 9200" La URL de la instancia de Elasticsearch para usar en todas sus consultas.

elasticsearch.preserveHost:
Valor predeterminado: true Cuando el valor de esta configuración es true Kibana utiliza el nombre de host especificado en la configuración server.host. Cuando el valor de esta configuración es false, Kibana utiliza el nombre de host del host que se conecta a esta instancia de Kibana.

kibana.index:
Default: ".kibana" Kibana usa un índice en Elasticsearch para almacenar búsquedas, visualizaciones y cuadros de mando guardados. Kibana crea un nuevo índice si el índice ya no existe.

kibana.defaultAppId:
Predeterminado: "discover" La aplicación predeterminada para cargar.

tilemap.url:
La URL del servicio de mosaico que Kibana utiliza para mostrar los mosaicos de mapa en las visualizaciones de mosaico. De forma predeterminada, Kibana lee esta url de un servicio de metadatos externo, pero los usuarios pueden reemplazar este parámetro para usar su propio servicio de mapa de mosaico. Por ejemplo: "https://tiles.elastic.co/v2/default/{z}/{x}/{y}.png?elastic_tile_service_tos=agree&my_app_name=kibana"

tilemap.options.minZoom:
Valor predeterminado: 1 El nivel de zoom mínimo.

tilemap.options.maxZoom:
Valor predeterminado: 10 El nivel de zoom máximo.

tilemap.options.attribution:
Valor predeterminado: "© Elastic Maps Service (https://www.elastic.co/elastic-maps-service)" La cadena de asignación de mapas.

tilemap.options.subdomains:
Una matriz de subdominios utilizada por el servicio de mosaico. Especifique la posición del subdominio la URL con el token {s}.

mapa de regiones

Especifica capas de vectores adicionales para su uso en las visualizaciones de Mapa de Región. Cada objeto de capa apunta a un archivo vectorial externo que contiene una FeatureCollection geojson. El archivo debe utilizar el sistema de referencia de coordenadas WGS84 y sólo incluir polígonos. Si el archivo está alojado en un dominio separado de Kibana, el servidor debe estar habilitado para CORS para que Kibana pueda descargar el archivo. El campo url también sirve como un identificador único para el archivo. Cada capa puede contener varios campos para indicar qué propiedades de las características de geojson desea exponer. El field.description es el texto legible por el usuario que se muestra en el menú de campo de la visualización del Mapa de Región. También se puede agregar un valor de atribución opcional. El siguiente ejemplo muestra una configuración de mapa de región válida.

regionmap: layers: - name: "Departments of France" url: "http://my.cors.enabled.server.org/france_departements.geojson" attribution: "INRAP" fields: - name: "department" description: "Full department name" - name: "INSEE" description: "INSEE numeric identifier"


elasticsearch.username: y elasticsearch.password:
Si su Elasticsearch está protegida con autenticación básica, estos valores proporcionan el nombre de usuario y la contraseña que el servidor Kibana utiliza para realizar el mantenimiento en el índice Kibana al inicio. Sus usuarios de Kibana aún necesitan autenticarse con Elasticsearch, que se comunica a través del servidor Kibana.

server.ssl.enabled
Predeterminado: "false" Habilita SSL para las solicitudes salientes desde el servidor Kibana al navegador. Cuando se establece en true, se requieren server.ssl.certificate y server.ssl.key
server.ssl.certificate: y server.ssl.key:
Rutas para el certificado SSL de formato PEM y archivos de clave SSL, respectivamente.

server.ssl.keyPassphrase
La frase de contraseña que se utilizará para descifrar la clave privada. Este valor es opcional ya que la clave no puede ser cifrada.

server.ssl.certificateAutoridades
Lista de rutas de acceso a archivos de certificados codificados por PEM que se deben confiar.

protocolos server.ssl.supported
Valor predeterminado:

  • TLSv1
  • TLSv1.1
  • TLSv1.2 

Protocolos compatibles con versiones. Protocolos válidos: TLSv1, TLSv1.1, TLSv1.2
server.ssl.cipherSuites
Por defecto:

  • ECDHE-RSA-AES128-GCM-SHA256, 
  • ECDHE-ECDSHA-AES128-GCM-SHA256, 
  • ECDHE-RSA-AES256-GCM- SHA384, 
  • ECDHE- ECDSA- AES256- GCM- SHA384, 
  • DHE- RSA- AES128- GCM- RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • DHE-RSA-AES256-SHA256, 
  • HIGH,
  • ! ANULL,
  • ! ENULL,
  • ! EXPORT,
  • ! DES,
  • ! RC4,
  • ! MD5,
  • ! PSK,
  • ! SRP,
  • ! CAMELLIA. 

Los detalles sobre el formato y las opciones válidas están disponibles a través de la documentación del formato de la lista de cifrado de OpenSSL (https://www.openssl.org/docs/man1.0.2/apps/ciphers.html#CIPHER-LIST-FORMAT)

elasticsearch.ssl.certificate: y elasticsearch.ssl.key:
Ajustes opcionales que proporcionan las rutas al certificado SSL de formato PEM ya los archivos de claves. Estos archivos validan que el backend de Elasticsearch utiliza los mismos archivos de claves.

elasticsearch.ssl.keyPassphrase
La frase de contraseña que se utilizará para descifrar la clave privada. Este valor es opcional ya que la clave no puede ser cifrada.

elasticsearch.ssl.certificateAutoridades:
Opcional que le permite especificar una lista de rutas de acceso al archivo PEM para la autoridad de certificación de su instancia de Elasticsearch.

elasticsearch.ssl.verificationMode:
Valor predeterminado: full Controla la verificación de certificados. Los valores válidos son none, certificate y full. completa realiza la verificación de nombre de host y el certificado no.

elasticsearch.pingTimeout:
Valor predeterminado: el valor de la configuración elasticsearch.requestTimeout Tiempo en milisegundos para esperar que Elasticsearch responda a pings.

elasticsearch.requestTimeout:
Predeterminado: 30000 Tiempo en milisegundos para esperar las respuestas del back-end o Elasticsearch. Este valor debe ser un entero positivo.

elasticsearch.requestHeadersWhitelist:
Valor predeterminado: ['autorización'] Lista de encabezados de cliente de Kibana para enviar a Elasticsearch. Para enviar ningún encabezado del lado del cliente, establezca este valor en [] (una lista vacía).

elasticsearch.customHeaders:
Valor predeterminado: {} Nombres de encabezado y valores que se enviarán a Elasticsearch. Los encabezados personalizados no pueden ser sobrescritos por los encabezados del cliente, independientemente de la configuración elasticsearch.requestHeadersWhitelist.

elasticsearch.shardTimeout:
Valor predeterminado: 0 Tiempo en milisegundos para que Elasticsearch espere las respuestas de los fragmentos. Establezca en 0 para deshabilitar.

elasticsearch.startupTimeout:
Valor predeterminado: 5000 Tiempo en milisegundos para esperar a Elasticsearch en el inicio de Kibana antes de volver a intentarlo.

pid.file:
Especifica la ruta donde Kibana crea el archivo de ID de proceso.

path.data
Default: ./data La ruta donde Kibana almacena los datos persistentes no guardados en Elasticsearch

logging.dest:
Valor predeterminado: stdout Permite especificar un archivo en el que Kibana almacena la salida del registro.

logging.silent:
Valor predeterminado: false Establezca el valor de este valor en true para suprimir toda la salida de registro.

logging.quiet:
Valor predeterminado: false Establezca el valor de esta configuración en true para suprimir toda la salida de registro distinta de los mensajes de error.

logging.verbose
Valor predeterminado: false Establezca el valor de esta configuración en true para registrar todos los eventos, incluida la información de uso del sistema y todas las solicitudes.

opsinterval
Valor predeterminado: 5000 Establece el intervalo en milisegundos para muestrear métricas de rendimiento del sistema y del proceso. El valor mínimo es 100.

status.allowAnonymous
Predeterminado: false Si la autenticación está habilitada, establecer esta opción en true permite a usuarios no autenticados acceder a la API de estado del servidor Kibana y la página de estado.

cpu.cgroup.path.override
Anular para la ruta de la cpu de cgroup cuando se monta de manera que es inconsistente con / proc / self / cgroup

cpuacct.cgroup.path.override
Anular para cgroup cpuacct path cuando está montado de manera que es inconsistente con / proc / self / cgroup

console.enabled
Valor predeterminado: true Establece en false para deshabilitar la consola. Alternar esto hará que el servidor para regenerar los activos en el próximo arranque, lo que puede causar un retraso antes de que las páginas comienzan a ser servido.

elasticsearch.tribe.url:
URL opcional de la instancia de tribu Elasticsearch para usar en todas sus consultas.

elasticsearch.tribe.username: y elasticsearch.tribe.password:
Si su Elasticsearch está protegido con autenticación básica,estos valores proporcionan el nombre de usuario y la contraseña que el servidor Kibana utiliza para realizar el mantenimiento en el índice Kibana al inicio. Sus usuarios de Kibana aún necesitan autenticarse con Elasticsearch, que se proxiene a través del servidor Kibana.

elasticsearch.tribe.ssl.certificate: y elasticsearch.tribe.ssl.key:
Ajustes opcionales que proporcionan las rutas al certificado SSL de formato PEM ya los archivos de claves. Estos archivos validan que el backend de Elasticsearch utiliza los mismos archivos de claves.

elasticsearch.tribe.ssl.keyPassphrase
La frase de contraseña que se utilizará para descifrar la clave privada. Este valor es opcional ya que la clave no puede ser cifrada.

elasticsearch.tribe.ssl.certificateAuthorities:
Opcional configuración que le permite especificar una ruta de acceso al archivo PEM para la autoridad de certificación de su tribu Elasticsearch instancia.

elasticsearch.tribe.ssl.verificationMode:
Valor predeterminado: full Controla la verificación de certificados. Los valores válidos son none, certificate y full. completa realiza la verificación de nombre de host y el certificado no.

elasticsearch.tribe.pingTimeout:
Valor predeterminado: el valor de la configuración elasticsearch.tribe.requestTimeout Tiempo en milisegundos para esperar que Elasticsearch responda a pings.

elasticsearch.tribe.requestTimeout:
Predeterminado: 30000 Tiempo en milisegundos para esperar las respuestas del back-end o Elasticsearch. Este valor debe ser un entero positivo.

elasticsearch.tribe.requestHeadersWhitelist:
Valor predeterminado: ['autorización'] Lista de encabezados de cliente de Kibana para enviar a Elasticsearch. Para enviar ningún encabezado del lado del cliente, establezca este valor en [] (una lista vacía).

elasticsearch.tribe.customHeaders:
Valor predeterminado: {} Nombres de encabezado y valores que se enviarán a Elasticsearch. Los encabezados personalizados no pueden ser sobrescritos por los encabezados del cliente, independientemente de la configuración elasticsearch.tribe.requestHeadersWhitelist.

En siguientes artículos veremos como empezar a visualizar datos con Kibana.