Supported OS Linux Windows Mac OS

Versión de la integración2.1.0

Gráfico de Solr

Información general

El check de Solr realiza un seguimiento del estado y el rendimiento de un clúster de Solr. Recopila métricas del número de documentos indexados, los aciertos y desalojos de la caché, los tiempos medios de solicitud, las solicitudes medias por segundo, etc.

Configuración

Instalación

El check de Solr está incluido en el paquete del Datadog Agent, por lo que no necesitas instalar nada más en tus nodos de Solr.

Este check está basado en JMX, por lo que necesitas habilitar JMX Remote en tus servidores de Solr. Consulta la documentación del check de JMX para obtener más información.

Configuración

Host

Para configurar este check para un Agent que se ejecuta en un host:

  1. Edita el archivo solr.d/conf.yaml en la carpeta conf.d/ en la raíz del directorio de configuración de tu Agent. Para conocer todas las opciones de configuración disponibles, consulta el solr.d/conf.yaml de ejemplo.

    init_config:
    
      ## @param is_jmx - boolean - required
      ## Whether or not this file is a configuration for a JMX integration.
      #
      is_jmx: true
    
      ## @param collect_default_metrics - boolean - required
      ## Whether or not the check should collect all default metrics.
      #
      collect_default_metrics: true
    
    instances:
      ## @param host - string - required
      ## Solr host to connect to.
      - host: localhost
    
        ## @param port - integer - required
        ## Solr port to connect to.
        port: 9999
    
  2. Reinicia el Agent.

Lista de métricas

El parámetro conf es una lista de métricas que recopilará la integración. Solo se admiten 2 claves:

  • include (obligatorio): un diccionario de filtros, cualquier atributo que coincida con estos filtros se recopila a menos que también coincida con los filtros exclude (ver más abajo).
  • exclude (opcional): un diccionario de filtros, los atributos que coinciden con estos filtros no se recopilan.

Para un bean dado, las métricas se etiquetan de la siguiente manera:

mydomain:attr0=val0,attr1=val1

En este ejemplo, tu métrica es mydomain (o alguna variación según el atributo dentro del bean) y tiene las etiquetas attr0:val0, attr1:val1 y domain:mydomain.

Si especificas un alias en una clave include con formato camel case, se convierte a snake case. Por ejemplo, MyMetricName aparece en Datadog como my_metric_name.

El filtro de atributos

El filtro attribute puede aceptar dos tipos de valores:

  • Un diccionario cuyas claves son nombres de atributos (ver más adelante). Para este caso, puedes especificar un alias para la métrica que se convierte en el nombre de métrica en Datadog. También puedes especificar el tipo de métrica como gauge o count. Si eliges count, se calcula una tasa por segundo para la métrica.

    conf:
      - include:
        attribute:
          maxThreads:
            alias: tomcat.threads.max
            metric_type: gauge
          currentThreadCount:
            alias: tomcat.threads.count
            metric_type: gauge
          bytesReceived:
            alias: tomcat.bytes_rcvd
            metric_type: counter
    
  • Una lista de nombres de atributos (ver más abajo). Para este caso, el tipo de métrica es un gauge y el nombre de métrica es jmx.\[DOMAIN_NAME].\[ATTRIBUTE_NAME].

    conf:
      - include:
        domain: org.apache.cassandra.db
        attribute:
          - BloomFilterDiskSpaceUsed
          - BloomFilterFalsePositives
          - BloomFilterFalseRatio
          - Capacity
          - CompressionRatio
          - CompletedTasks
          - ExceptionCount
          - Hits
          - RecentHitRate
    

Versiones anteriores

La lista de filtros solo se admite en el Datadog Agent > 5.3.0. Si utilizas una versión anterior, utiliza singletons y varias sentencias include en su lugar.

# Datadog Agent > 5.3.0
  conf:
    - include:
      domain: domain_name
      bean:
        - first_bean_name
        - second_bean_name
# Older Datadog Agent versions
  conf:
    - include:
      domain: domain_name
      bean: first_bean_name
    - include:
      domain: domain_name
      bean: second_bean_name

Contenedores

Para obtener información sobre entornos en contenedores, consulta la guía Autodiscovery con JMX.

Recopilación de logs
  1. La recopilación de logs está desactivada por defecto en el Datadog Agent, actívala en tu archivo datadog.yaml:

     logs_enabled: true
    
  2. Solr utiliza el registrador log4j por defecto. Para personalizar el formato de registro, edita el archivo server/resources/log4j2.xml. Por defecto, el pipeline de la integración de Datadog admite el siguiente patrón de conversión:

    %maxLen{%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p (%t) [%X{collection} %X{shard} %X{replica} %X{core}] %c{1.} %m%notEmpty{ =>%ex{short}}}{10240}%n
    

    Clona y edita el pipeline de integración si tienes un formato diferente.

  3. Anula los comentarios y edita el bloque de configuración de logs en tu archivo solr.d/conf.yaml. Cambia los valores de los parámetros type, path y service en función de tu entorno. Consulta solr.d/solr.yaml de ejemplo para conocer todas las opciones disponibles de configuración.

     logs:
       - type: file
         path: /var/solr/logs/solr.log
         source: solr
         # To handle multi line that starts with yyyy-mm-dd use the following pattern
         # log_processing_rules:
         #   - type: multi_line
         #     pattern: \d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])
         #     name: new_log_start_with_date
    
  4. Reinicia el Agent.

Para habilitar logs para entornos de Kubernetes, consulta Recopilación de log de Kubernetes.

Validación

Ejecuta el subcomando de estado del Agent y busca solr en la sección Checks.

Datos recopilados

Métricas

solr.document_cache.evictions
(gauge)
The total number of cache evictions per second.
Shown as eviction
solr.document_cache.hits
(gauge)
The number of cache hits per second.
Shown as hit
solr.document_cache.inserts
(gauge)
The total number of cache inserts per second.
Shown as set
solr.document_cache.lookups
(gauge)
The total number of cache lookups per second.
Shown as get
solr.filter_cache.evictions
(gauge)
The total number of cache evictions per second.
Shown as eviction
solr.filter_cache.hits
(gauge)
The number of cache hits per second.
Shown as hit
solr.filter_cache.inserts
(gauge)
The total number of cache inserts per second.
Shown as set
solr.filter_cache.lookups
(gauge)
The total number of cache lookups per second.
Shown as get
solr.query_result_cache.evictions
(gauge)
The total number of cache evictions per second.
Shown as eviction
solr.query_result_cache.hits
(gauge)
The number of cache hits per second.
Shown as hit
solr.query_result_cache.inserts
(gauge)
The total number of cache inserts per second.
Shown as set
solr.query_result_cache.lookups
(gauge)
The total number of cache lookups per second.
Shown as get
solr.search_handler.errors
(gauge)
Number of errors per second encountered by the handler.
Shown as error
solr.search_handler.request_times.50percentile
(gauge)
Request processing time in milliseconds (50percentile).
Shown as millisecond
solr.search_handler.request_times.75percentile
(gauge)
Request processing time in milliseconds (75percentile).
Shown as millisecond
solr.search_handler.request_times.95percentile
(gauge)
Request processing time in milliseconds (95percentile).
Shown as millisecond
solr.search_handler.request_times.98percentile
(gauge)
Request processing time in milliseconds (98percentile).
Shown as millisecond
solr.search_handler.request_times.999percentile
(gauge)
Request processing time in milliseconds (999percentile).
Shown as millisecond
solr.search_handler.request_times.99percentile
(gauge)
Request processing time in milliseconds (99percentile).
Shown as millisecond
solr.search_handler.request_times.mean
(gauge)
The average time per request.
Shown as millisecond
solr.search_handler.request_times.mean_rate
(gauge)
Average number of requests received per second since the Solr core was first created.
Shown as request
solr.search_handler.request_times.one_minute_rate
(gauge)
Requests per second received over the past minutes.
Shown as request
solr.search_handler.requests
(gauge)
Number of requests per second processed by the handler.
Shown as request
solr.search_handler.time
(gauge)
The sum of all request processing times (in milliseconds) per second.
solr.search_handler.timeouts
(gauge)
Number of responses per second received with partial results.
Shown as timeout
solr.searcher.maxdocs
(gauge)
One greater than the largest possible document number.
Shown as document
solr.searcher.numdocs
(gauge)
The total number of indexed documents.
Shown as document
solr.searcher.warmup
(gauge)
The time spent warming up.
Shown as millisecond

Eventos

El check de Solr no incluye ningún evento.

Checks de servicio

solr.can_connect

Returns CRITICAL if the Agent is unable to connect to and collect metrics from the monitored SolR instance, WARNING if no metrics are collected, and OK otherwise.

Statuses: ok, critical, warning

Solucionar problemas

Comandos para ver las métricas disponibles

El comando datadog-agent jmx se añadió en la versión 4.1.0.

  • Mostrar una lista de atributos que coincidan con, al menos, una de tus configuraciones de instancias: sudo datadog-agent jmx list matching
  • Mostrar una lista de atributos que coinciden con una de tus configuraciones de instancias, pero no se recopilan porque se superaría el número de métricas que es posible recopilar. sudo datadog-agent jmx list limited
  • Mostrar una lista de atributos que se espera que recopile tu configuración de instancias actual: sudo datadog-agent jmx list collected
  • Mostrar una lista de atributos que no coincidan con ninguna de tus configuraciones de instancias: sudo datadog-agent jmx list not-matching
  • Mostrar cada atributo disponible que tenga un tipo compatible con JMXFetch: sudo datadog-agent jmx list everything
  • Iniciar la recopilación de métricas según tu configuración actual y mostrarlas en la consola: sudo datadog-agent jmx collect

¿Necesitas ayuda? Ponte en contacto con el servicio de asistencia de Datadog.

Referencias adicionales

Parseo de un valor de cadena en un número

Si tu jmxfetch devuelve solo valores de cadena como false y true y quieres transformarlo en una métrica gauge de Datadog para usos avanzados. Por ejemplo, si deseas la siguiente equivalencia para tu jmxfetch:

"myJmxfetch:false" = myJmxfetch:0
"myJmxfetch:true" = myJmxfetch:1

Puedes utilizar el filtro attribute como se indica a continuación:

# ...
attribute:
  myJmxfetch:
    alias: your_metric_name
    metric_type: gauge
    values:
      "false": 0
      "true": 1