Redis
Este documento describe la funcionalidad Redis del discovery de PandoraFMS.
- Introducción
- Prerrequisitos
- Parámetros y configuracion
- Ejecución manual
- Discovery
- Agentes y módulos generados por el plugin
Introducción
Este plugin tiene como finalidad monitorizar instancias de Redis, mediante consultas que extraen información clave para evaluar el rendimiento y el estado del servicio, como el uso de memoria, número de clientes conectados, operaciones ejecutadas o estadísticas de replicación. Estos datos se reflejan en Pandora FMS en forma de módulos que proporcionan valores estadísticos dentro de un agente que representa cada instancia de Redis.
Prerrequisitos
En Redis 6 o superior, si se usan ACLs (listas de control de acceso), cada usuario puede tener permisos específicos para ejecutar ciertos comandos. Es requerido el permiso +info para la ejecución de esta integración.
Para otorgar este permiso a un usuario, se puede usar:
ACL SETUSER <usuario> on >contraseña ~* +info
Parámetros y configuracion
Parámetros
| --conf | Ruta al archivo de configuración |
Archivo de configuración (--conf)
[CONF]
threads = < Número de hilos que se usarán para la creación de agentes >
prefix = < Prefijo que se añadirá al nombre de los módulos generados >
agents_group = < ID del grupo de Pandora FMS donde se crearán los agentes >
tentacle_ip = < IP del servidor Tentacle al que se enviará la información >
allow_regexp = < Expresión regular para filtrar nombres de módulos que se permitirán >
deny_regexp = < Expresión regular para filtrar nombres de módulos que se denegarán >
scan_server = < Activar con 1 para monitorizar estadísticas del servidor Redis >
scan_clients = < Activar con 1 para monitorizar estadísticas de clientes conectados >
scan_memory = < Activar con 1 para monitorizar estadísticas de memoria >
scan_persistence = < Activar con 1 para monitorizar estado de persistencia >
scan_threads = < Activar con 1 para monitorizar estadísticas de threads internos >
scan_stats = < Activar con 1 para monitorizar estadísticas generales >
scan_replication = < Activar con 1 para monitorizar estado de replicación >
scan_cpu = < Activar con 1 para monitorizar uso de CPU >
scan_commandstats = < Activar con 1 para monitorizar estadísticas de comandos ejecutados >
scan_latencystats = < Activar con 1 para monitorizar estadísticas de latencia >
scan_sentinel = < Activar con 1 para monitorizar estado de Sentinel >
scan_cluster = < Activar con 1 para monitorizar estado del cluster >
scan_modules = < Activar con 1 para monitorizar estadísticas de módulos >
scan_keyspace = < Activar con 1 para monitorizar el keyspace de Redis >
scan_errorstats = < Activar con 1 para monitorizar estadísticas de errores >
[CONNECTION_STRINGS]
< Cadena de conexión para un servidor Redis. Se debe definir una cadena por linea, se puede especificar nombre de agente usando | al final de la cadena de conexion y especificando el nombre del agente. >
[UMBRALS]
< Configuración de umbrales para aplicar a determinado módulo. Se debe definir uno por línea. >
< Configuración de umbrales para aplicar a determinados módulos que coincidan con expresión de regexp. Se debe definir uno por línea. >
[QUERIES]
< Módulo personalizado para ejecutar una custom query de busqueda. Se debe definir uno por línea. >
Ejemplo
[CONF]
threads = 1
prefix = pre-
agents_group =
tentacle_ip= 192.168.10.51
allow_regexp = ^used
deny_regexp =
scan_server = 1
scan_clients = 1
scan_memory = 1
scan_persistence = 1
scan_threads = 1
scan_stats = 1
scan_replication = 1
scan_cpu = 1
scan_commandstats = 1
scan_latencystats = 1
scan_sentinel = 1
scan_cluster = 1
scan_modules = 1
scan_keyspace = 1
scan_errorstats = 1
[CONNECTION_STRINGS]
host='localhost', port=6379
host='127.0.0.1', port=6379|redis_agent
[UMBRALS]
pre-used_memory [name] = min_warning 75|min_critical 85
pre-used_cpu_sys_children [name] = min_warning 60|min_critical 90
^used [regexp] = min_warning 50|min_critical 80
[QUERIES]
custom_module 1|generic_data_string|idx:users|Paul @age:[30 40]|name
custom_module 2|generic_data_string|idx:users|@city:{Tel Aviv}
Ejecución manual
El formato de la ejecución del plugin es el siguiente:
./pandora_redis --conf < ruta al fichero de configuración >
Por ejemplo:
./pandora_redis --conf /usr/share/pandora_server/util/plugin/redis.conf
Discovery
Este plugin puede integrarse con el Discovery de Pandora FMS.
Para ello se debe cargar el paquete ".disco" que puede descargar desde la librería de Pandora FMS
Una vez cargado, se podrán monitorizar entornos de Microsoft SQL Server creando tareas de Discovery desde la sección Management > Discovery > Applications.
Para cada tarea se solicitarán los siguientes datos mínimos:
- Connection strings:
host='172.17.0.2', port=6379|redis_agent - Tentacle IP: IP del servidor de Tentacle al que enviar los datos de los agentes. Normalmente este parámetro no se modificará.
- Tentacle Port: Puerto del servidor de Tentacle al que enviar los datos. Normalmente este parámetro no se modificará.
- Tentacle extra options: Opciones adicionales para el envio de datos mediante el cliente de Tentacle. Normalmente este parámetro no se modificará.
También se podrá ajustar la configuración de la tarea para personalizar la monitorización deseada:
- Max threads: Para optimizar el tiempo de ejecución, se podrán configurar múltiples hilos para monitorizar los agentes de la tarea. Hay que tener en cuenta que configurar múltiples hilos puede aumentar el uso de CPU de la tarea.
- Use prefix for modules: Habilita este token para poder especificar un prefijo.
- Prefix for modules created: Especifica un prefijo que sera añadido a los módulos creados.
- Use prefix for agents: Habilita este token para poder especificar un prefijo.
- Use prefix for agents created: Especifica un prefijo que sera añadido a los agentes creados.
- Regexp to filter modules: Habilita este token para poder especificar un patron de regexp para filtrar.
- Allow regexp: Valor de regexp, solo se crearan los módulos que coincidan con este patron.
- Regexp to discard modules: Habilita este token para poder especificar un patron de regexp para descartar.
- Deny regexp: Valor de regexp, los módulos que coincidan con este patron se descartaran.
-
Scan server stats : Si se activa monitorizará las estadísticas de server.
-
Scan clients stats : Si se activa monitorizará las estadísticas de clients.
-
Scan memory stats : Si se activa monitorizará las estadísticas de memoria.
-
Scan persistance stats : Si se activa monitorizará las estadísticas de persistencia.
-
Scan threads stats :Si se activa monitorizará las estadísticas de threads.
-
Scan stats : Si se activa monitorizará estadísticas generales de Redis.
-
Scan replication stats : Si se activa monitorizará las estadísticas de replicación.
-
Scan CPU stats : Si se activa monitorizará las estadísticas de CPU.
-
Scan command stats : Si se activa monitorizará las estadísticas de comandos.
-
Scan latency stats : Si se activa monitorizará las estadísticas de latencia.
-
Scan cluster stats : Si se activa monitorizará las estadísticas de cluster.
-
Scan modules stats : Si se activa monitorizará las estadísticas de módulos.
-
Scan keyspace stats : Si se activa monitorizará las estadísticas de keyspace.
-
Scan error stats : Si se activa monitorizará las estadísticas de errores.
- Define tresholds: En este apartado se puede especificar umbrales que se aplicaran a los módulos. Se puede especificar un nombre de módulo que sera en el que se aplique el umbral, o un patron de regexp para añadir el umbral en los módulos que contengan ese regexp.
La sintaxis para especificar cada query se debe especificar en una linea diferente para cada umbral y es la siguiente :
< nombre modulo a aplicar el umbral, o patron de regexp > [< tipo, name si es un nombre o regexp si es patron ] = umbral, separando cada umbral por | >
Por ejemplo si queremos aplicar umbrales a un módulo concreto:
Si queremos aplicar umbrales a un grupo de módulos, determinados por un patron regexp :
- Custom queries: Bloque de configuración para definir las consultas personalizadas que se ejecutarán. Cada consulta generará un nuevo módulo para cada agente de la tarea.
La sintaxis para especificar cada umbral se debe especificar en una linea diferente para cada query y es la siguiente :
< nombre módulo > | < tipo modulo > | < nombre index > | < query > | < field (opcional) >
Por ejemplo:
El apartado campo, sirve para especificar una "key" del documento en el que extraer el valor. Si no se usa, o si la query devuelve varios documentos, el valor sera los documentos en string.
Las tareas que se completen exitosamente dispondrán de un sumario de ejecución con la siguiente información:
- Total agents: Total de agentes generados por la tarea.
Las tareas que no se completen exitosamente dispondrán de un sumario de ejecución registrando los errores producidos.
Agentes y módulos generados por el plugin
El plugin creara un agente para instancia de Redis con el nombre especificado en la configuración, si no se especifica nombre, el nombre del agente sera < redis_<host redis > .
La ejecucion de la integración creará en los agentes, los módulos de custom query definidos y los siguientes módulos :
Si esta activado el token Scan server stats:
- redis_version
- redis_git_sha1
- redis_git_dirty
- redis_build_id
- redis_mode
- os
- arch_bits
- monotonic_clock
- multiplexing_api
- atomicvar_api
- gcc_version
- process_id
- process_supervised
- run_id
- tcp_port
- server_time_usec
- uptime_in_seconds
- uptime_in_days
- hz
- configured_hz
- lru_clock
- executable
- config_file
- io_threads_active
- listener0
Si esta activado el token Scan clients stats:
- connected_clients
- cluster_connections
- maxclients
- client_recent_max_input_buffer
- client_recent_max_output_buffer
- blocked_clients
- tracking_clients
- pubsub_clients
- watching_clients
- clients_in_timeout_table
- total_watched_keys
- total_blocking_keys
- total_blocking_keys_on_nokey
Si esta activado el token Scan memory stats:
- used_memory
- used_memory_human
- used_memory_rss
- used_memory_rss_human
- used_memory_peak
- used_memory_peak_human
- used_memory_peak_time
- used_memory_peak_perc
- used_memory_overhead
- used_memory_startup
- used_memory_dataset
- used_memory_dataset_perc
- allocator_allocated
- allocator_active
- allocator_resident
- allocator_muzzy
- total_system_memory
- total_system_memory_human
- used_memory_lua
- used_memory_vm_eval
- used_memory_lua_human
- used_memory_scripts_eval
- number_of_cached_scripts
- number_of_functions
- number_of_libraries
- used_memory_vm_functions
- used_memory_vm_total
- used_memory_vm_total_human
- used_memory_functions
- used_memory_scripts
- used_memory_scripts_human
- maxmemory
- maxmemory_human
- maxmemory_policy
- allocator_frag_ratio
- allocator_frag_bytes
- allocator_rss_ratio
- allocator_rss_bytes
- rss_overhead_ratio
- rss_overhead_bytes
- mem_fragmentation_ratio
- mem_fragmentation_bytes
- mem_not_counted_for_evict
- mem_replication_backlog
- mem_total_replication_buffers
- mem_replica_full_sync_buffer
- mem_clients_slaves
- mem_clients_normal
- mem_cluster_links
- mem_aof_buffer
- mem_allocator
- mem_overhead_db_hashtable_rehashing
- active_defrag_running
- lazyfree_pending_objects
- lazyfreed_objects
Si esta activado el token Scan persistance stats:
- loading
- async_loading
- current_cow_peak
- current_cow_size
- current_cow_size_age
- current_fork_perc
- current_save_keys_processed
- current_save_keys_total
- rdb_changes_since_last_save
- rdb_bgsave_in_progress
- rdb_last_save_time
- rdb_last_bgsave_status
- rdb_last_bgsave_time_sec
- rdb_current_bgsave_time_sec
- rdb_saves
- rdb_last_cow_size
- rdb_last_load_keys_expired
- rdb_last_load_keys_loaded
- aof_enabled
- aof_rewrite_in_progress
- aof_rewrite_scheduled
- aof_last_rewrite_time_sec
- aof_current_rewrite_time_sec
- aof_last_bgrewrite_status
- aof_rewrites
- aof_rewrites_consecutive_failures
- aof_last_write_status
- aof_last_cow_size
- module_fork_in_progress
- module_fork_last_cow_size
Si esta activado el token Scan threads stats:
-io_thread_0
Si esta activado el token Scan stats:
- total_connections_received
- total_commands_processed
- instantaneous_ops_per_sec
- total_net_input_bytes
- total_net_output_bytes
- total_net_repl_input_bytes
- total_net_repl_output_bytes
- instantaneous_input_kbps
- instantaneous_output_kbps
- instantaneous_input_repl_kbps
- instantaneous_output_repl_kbps
- rejected_connections
- sync_full
- sync_partial_ok
- sync_partial_err
- expired_subkeys
- expired_keys
- expired_stale_perc
- expired_time_cap_reached_count
- expire_cycle_cpu_milliseconds
- evicted_keys
- evicted_clients
- evicted_scripts
- total_eviction_exceeded_time
- current_eviction_exceeded_time
- keyspace_hits
- keyspace_misses
- pubsub_channels
- pubsub_patterns
- pubsubshard_channels
- latest_fork_usec
- total_forks
- migrate_cached_sockets
- slave_expires_tracked_keys
- active_defrag_hits
- active_defrag_misses
- active_defrag_key_hits
- active_defrag_key_misses
- total_active_defrag_time
- current_active_defrag_time
- tracking_total_keys
- tracking_total_items
- tracking_total_prefixes
- unexpected_error_replies
- total_error_replies
- dump_payload_sanitizations
- total_reads_processed
- total_writes_processed
- io_threaded_reads_processed
- io_threaded_writes_processed
- io_threaded_total_prefetch_batches
- io_threaded_total_prefetch_entries
- client_query_buffer_limit_disconnections
- client_output_buffer_limit_disconnections
- reply_buffer_shrinks
- reply_buffer_expands
- eventloop_cycles
- eventloop_duration_sum
- eventloop_duration_cmd_sum
- instantaneous_eventloop_cycles_per_sec
- instantaneous_eventloop_duration_usec
- acl_access_denied_auth
Si esta activado el token Scan replication stats
- role
- connected_slaves
- master_failover_state
- master_replid
- master_replid2
- master_repl_offset
- second_repl_offset
- repl_backlog_active
- repl_backlog_size
- repl_backlog_first_byte_offset
- repl_backlog_histlen
Si esta activado el token Scan CPU stats:
- used_cpu_sys
- used_cpu_user
- used_cpu_sys_children
- used_cpu_user_children
- used_cpu_sys_main_thread
- used_cpu_user_main_thread
Si esta activado el token Scan command stats
- cmdstat_FT.SEARCH
- cmdstat_ping
- cmdstat_config|get
- cmdstat_info
- cmdstat_client|setinfo
Si esta activado el token Scan latency stats:
- latency_percentiles_usec_FT.SEARCH
- latency_percentiles_usec_ping
- latency_percentiles_usec_config|get
- latency_percentiles_usec_info
- latency_percentiles_usec_client|setinfo
Si esta activado el token Scan cluster stats:
-cluster_enabled
Si esta activado el token Scan modules stats:
- modules
- search_version
- search_redis_version
- search_number_of_indexes
- search_number_of_active_indexes
- search_number_of_active_indexes_running_queries
- search_number_of_active_indexes_indexing
- search_total_active_write_threads
- search_total_indexing_time
- search_fields_text
- search_fields_numeric
- search_fields_tag
- search_used_memory_indexes
- search_used_memory_indexes_human
- search_smallest_memory_index
- search_smallest_memory_index_human
- search_largest_memory_index
- search_largest_memory_index_human
- search_used_memory_vector_index
- search_global_idle_user
- search_global_idle_internal
- search_global_total_user
- search_global_total_internal
- search_gc_bytes_collected
- search_gc_total_cycles
- search_gc_total_ms_run
- search_gc_total_docs_not_collected
- search_gc_marked_deleted_vectors
- search_total_queries_processed
- search_total_query_commands
- search_total_query_execution_time_ms
- search_total_active_queries
- search_errors_indexing_failures
- search_errors_for_index_with_max_failures
- search_OOM_indexing_failures_indexes_count
- search_dialect_1
- search_dialect_2
- search_dialect_3
- search_dialect_4
- search_extension_load
- search_friso_ini
- search_enableGC
- search_minimal_term_prefix
- search_minimal_stem_length
- search_maximal_prefix_expansions
- search_query_timeout_ms
- search_timeout_policy
- search_cursor_read_size
- search_cursor_max_idle_time
- search_max_doc_table_size
- search_max_search_results
- search_max_aggregate_results
- search_gc_scan_size
- search_min_phonetic_term_length
- search_bm25std_tanh_factor
Si esta activado el token Scan keyspace stats:
-db0
Si esta activado el token Scan error stats:
-errorstat_Expected