# Redis

# Introduction

This plugin is designed to monitor Redis instances by means of queries that extract key information to evaluate service performance and status, such as memory usage, number of connected clients, operations executed, or replication statistics. This data is reflected in Pandora FMS in the form of modules that provide statistical values within an agent representing each Redis instance.

# Pre requisites

In Redis 6 or higher, if ACLs (access control lists) are used, each user can have specific permissions to execute certain commands. The +info permission is required to execute this integration.

To grant this permission to a user, you can use:

```
ACL SETUSER <user> on >password ~* +info
```

# Parameters and configuration

**Parameters**

<table border="1" id="bkmrk---conf-ruta-al-archi" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 20.6735%;">--conf</td><td style="width: 79.4389%;">Path to the configuration file</td></tr></tbody></table>

**Configuration file (--conf)**

```
[CONF]

threads = < Number of threads to be used for agent creation >
prefix = < Prefix to be added to the name of the generated modules >
prefix_agents = < Prefix to be added to the name of the generated agents >
agents_group = < ID of the Pandora FMS group where the agents will be created >
tentacle_ip = < IP of the Tentacle server to which the information will be sent >
allow_regexp = < Regular expression to filter module names that will be allowed >
deny_regexp = < Regular expression to filter module names that will be denied >
scan_server = < Enable with 1 to monitor Redis server statistics >
scan_clients = < Enable with 1 to monitor connected client statistics >
scan_memory = < Enable with 1 to monitor memory statistics >
scan_persistence = < Enable with 1 to monitor persistence status >
scan_threads = < Enable with 1 to monitor internal thread statistics >
scan_stats = < Enable with 1 to monitor general statistics >
scan_replication = < Enable with 1 to monitor replication status >
scan_cpu = < Enable with 1 to monitor CPU usage >
scan_commandstats = < Enable with 1 to monitor executed command statistics >
scan_latencystats = < Enable with 1 to monitor latency statistics >
scan_sentinel = < Enable with 1 to monitor Sentinel status >
scan_cluster = < Enable with 1 to monitor cluster status >
scan_modules = < Enable with 1 to monitor module statistics >
scan_keyspace = < Enable with 1 to monitor the Redis keyspace >
scan_errorstats = < Enable with 1 to monitor error statistics >

[CONNECTION_STRINGS]

< Connection string for a Redis server. One string must be defined per line. You can specify the agent name by using | at the end of the connection string and specifying the agent name. >

[THRESHOLDS]

< Threshold settings to apply to a specific module. One must be defined per line. >

< Threshold settings to apply to specific modules that match a regexp expression. One must be defined per line. >

[QUERIES]

< Custom module to execute a custom search query. One must be defined per line

```

<span style="text-decoration: underline;">Example</span>

```
[CONF]
threads = 1
prefix = redis-
prefix_agents = redis-
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}
```

# Manual execution

The plugin execution format is as follows:

```shell
./pandora_redis --conf < path to the configuration file > 
```

For example:

```shell
./pandora_redis --conf /usr/share/pandora_server/util/plugin/redis.conf 
```

# Discovery

This plugin can be integrated with Pandora FMS Discovery.

To do this, you must load the “.disco” package, which you can download from the Pandora FMS library.

[![Captura desde 2025-10-30 17-59-54.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/captura-desde-2025-10-30-17-59-54.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/captura-desde-2025-10-30-17-59-54.png)Once loaded, Microsoft SQL Server environments can be monitored by creating Discovery tasks from the Management &gt; Discovery &gt; Applications section.

For each task, the following minimum information will be requested:

- **Connection strings**: ```
    host='172.17.0.2', port=6379|redis_agent
    ```
- **Tentacle IP**: IP address of the Tentacle server to which agent data should be sent. Normally, this parameter will not be modified.
- **Tentacle Port**: Port of the Tentacle server to which the data should be sent. Normally, this parameter will not be modified.
- **Tentacle extra options:** Additional options for sending data using the Tentacle client. Normally, this parameter will not be modified.

[![Captura desde 2025-10-30 18-03-43.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/Sq6captura-desde-2025-10-30-18-03-43.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/Sq6captura-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:

- **Max threads**: To optimize execution time, multiple threads can be configured to monitor task agents. Keep in mind that configuring multiple threads can increase the CPU usage of the task.
- **Use prefix for modules**: Enable this token to specify a prefix.
- **Prefix for modules created:** Specify a prefix that will be added to the agents modules created.
- **Use prefix for agents**: Enable this token to specify a prefix.
- **Prefix for agents created:** Specify a prefix that will be added to the agents created.
- **Regexp to filter modules**: Enable this token to specify a regexp pattern for filtering.
- **Allow regexp:** Regex value; only modules that match this pattern will be created.
- **Regexp to discard modules**: Enable this token to specify a regexp pattern to discard.
- **Deny regexp:** Regex value, modules matching this pattern will be discarded.

[![Captura desde 2025-12-29 15-06-30.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-12/scaled-1680-/captura-desde-2025-12-29-15-06-30.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-12/captura-desde-2025-12-29-15-06-30.png)

- **Scan server stats**  : If enabled, it will monitor server statistics.
- **Scan clients stats**  : If enabled, it will monitor client statistics.
- **Scan memory stats** : If enabled, it will monitor memory statistics.
- **Scan persistance stats** : If enabled, it will monitor persistence statistics.
- **Scan threads stats**  :If enabled, it will monitor thread statistics.
- **Scan stats**  : If enabled, it will monitor general Redis statistics.
- **Scan replication stats** : If enabled, it will monitor replication statistics.
- **Scan CPU stats** : If enabled, it will monitor CPU statistics.
- **Scan command stats** : If enabled, it will monitor command statistics.
- **Scan latency stats** : If enabled, it will monitor latency statistics.
- **Scan cluster stats**  : If enabled, it will monitor cluster statistics.
- **Scan modules stats** : If enabled, it will monitor module statistics.
- **Scan keyspace stats**  : If enabled, it will monitor keyspace statistics.
- **Scan error stats**  : If enabled, it will monitor error statistics.

[![Captura desde 2025-10-30 18-08-12.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/captura-desde-2025-10-30-18-08-12.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/captura-desde-2025-10-30-18-08-12.png)

- **Define tresholds:** In this section, you can specify thresholds that will be applied to the modules. You can specify a module name to which the threshold will be applied, or a regexp pattern to add the threshold to modules containing that regexp.  
      
    [![Captura desde 2025-12-29 15-08-37.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-12/scaled-1680-/vtLcaptura-desde-2025-12-29-15-08-37.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-12/vtLcaptura-desde-2025-12-29-15-08-37.png)

The syntax for specifying each query must be specified on a different line for each threshold and is as follows:

```
< name of module to apply the threshold to, or regexp pattern > [< type, name if it is a name or regexp if it is a pattern ] = threshold, separating each threshold with | >
```

For example, if we want to apply thresholds to a specific module:

[![Captura desde 2025-10-31 15-11-20.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/captura-desde-2025-10-31-15-11-20.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/captura-desde-2025-10-31-15-11-20.png)

If we want to apply thresholds to a group of modules, determined by a regexp pattern:

[![Captura desde 2025-10-31 15-12-27.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/captura-desde-2025-10-31-15-12-27.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/captura-desde-2025-10-31-15-12-27.png)

- **Custom queries**: Configuration block to define the custom queries to be executed. Each query will generate a new module for each task agent.

[![Captura desde 2025-12-29 15-09-39.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-12/scaled-1680-/captura-desde-2025-12-29-15-09-39.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-12/captura-desde-2025-12-29-15-09-39.png)

The syntax for specifying each threshold must be specified on a different line for each query and is as follows:

```
< module name > | < module type > | < index name > | < query > | < field (optional) >
```

Example:

[![Captura desde 2025-10-31 14-19-17.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/captura-desde-2025-10-31-14-19-17.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/captura-desde-2025-10-31-14-19-17.png)

The field section is used to specify a “key” for the document from which to extract the value. If it is not used, or if the query returns multiple documents, the value will be the documents in string format.

  
Successfully completed tasks will have an execution summary with the following information:

- **Total agents**: Total agents generated by the task.

[![Captura desde 2025-10-30 18-11-11.png](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/scaled-1680-/captura-desde-2025-10-30-18-11-11.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2025-10/captura-desde-2025-10-30-18-11-11.png)

Tasks that are not successfully completed will have an execution summary recording the errors that occurred.

# Agents and modules generated by the plugin

The plugin will create an agent for the Redis instance with the name specified in the configuration. If no name is specified, the agent name will be &lt;redis\_&lt;host redis&gt;&gt;.

Running the integration will create the defined custom query modules and the following modules in the agents:

**If the Scan server stats token is enabled:** *- 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* **If the Scan clients stats token is enabled:**

*- 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* **If the Scan memory stats token is enabled:** *- 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* **If the Scan persistence stats token is enabled:  
*- 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* **If the Scan threads stats token is enabled:** *-io\_thread\_0* **If the Scan stats token is enabled:** *- 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* **If the Scan replication stats token is enabled**   
*- 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* **If the Scan CPU stats token is enabled:** *- used\_cpu\_sys*  
*- used\_cpu\_user*  
*- used\_cpu\_sys\_children*  
*- used\_cpu\_user\_children*  
*- used\_cpu\_sys\_main\_thread*  
*- used\_cpu\_user\_main\_thread* **If the Scan command stats token is enabled** *- cmdstat\_FT.SEARCH*  
*- cmdstat\_ping*  
*- cmdstat\_config|get*  
*- cmdstat\_info*  
*- cmdstat\_client|setinfo* **If the Scan latency stats token is enabled:** *- latency\_percentiles\_usec\_FT.SEARCH*  
*- latency\_percentiles\_usec\_ping*  
*- latency\_percentiles\_usec\_config|get*  
*- latency\_percentiles\_usec\_info*  
*- latency\_percentiles\_usec\_client|setinfo* **If the Scan cluster stats token is enabled:** *-cluster\_enabled* **If the Scan modules stats token is enabled:** *- 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* **If the Scan keyspace stats token is enabled:** *-db0* **If the Scan error stats token is enabled:** -errorstat\_Expected