Redis

Este documento describe la funcionalidad Redis del discovery de PandoraFMS.

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

Captura desde 2025-10-30 17-59-54.png

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:

Captura desde 2025-10-30 18-03-43.png

También se podrá ajustar la configuración de la tarea para personalizar la monitorización deseada:

Captura desde 2025-12-29 15-06-30.png

Captura desde 2025-10-30 18-08-12.png

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:

Captura desde 2025-10-31 15-11-20.png

Si queremos aplicar umbrales a un grupo de módulos, determinados por un patron regexp :

Captura desde 2025-10-31 15-12-27.png

Captura desde 2025-12-29 15-09-39.png

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:

Captura desde 2025-10-31 14-19-17.png



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:

Captura desde 2025-10-30 18-11-11.png

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