- Ability to discovery multiple Redis instances running on same host
- Generate automatically a zabbix screen for general statistics, commands and replication overview on host! level.
- Triggers identify command anomaly (not done yet) and instance crash
- Import zbx_template/zbx_export_templates.xml via Zabbix -> Configuration -> Templates -> Import
- Place zbx_template/zbx_redis_discovery.sh under /usr/bin/zbx_redis_discovery.sh
- Place template userparameters under /etc/zabbix/zabbix_agentd.d/ or other place according your installation
- Restart your zabbix agent where all above were placed
- Replace following line your.first.redis.host.local under zbx_screens/zbx_export_screens.xml with your first redis host
- Import saved file zbx_export_screens.xml via Zabbix -> Monitoring -> Screens
- Make sure your redis-server configuration file ends with .conf otherwise INSTANCE name won't be discovered
- Discovery produce stats files from where template gathers stats per 1 min basis, so important to leave discovery rules to run with short interval only. (current template do that each 1 min)
- You don't have to worry about discovery process to update all items per 1 min basic, actually Zabbix Server use its own cache and perform DB update only when there is a new item appears.
- if Discovery: "Discover Redis Instances" doesn't work: execute following command zbx_template/zbx_redis_discovery.sh general debug and output attach to the issue ticket
- if Discovery: "Discover Redis Commands" doesn't work: execute following command zbx_template/zbx_redis_discovery.sh stats debug and output attach to the issue ticket
- if Discovery: "Discover Redis Slaves" doesn't work: execute following command zbx_template/zbx_redis_discovery.sh replications debug and output attach to the issue ticket
- Keep pushing on Zabbix R&D to let create graphs with multiple prototype items, meanwhile use Zabbix Grafana
zabbix_get -s redis.host.me -k redis.discovery[general,"123456 123456"] | jq .
{
"data": [
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6399",
"{#INSTANCE}": "INSTANCE1",
"{#RDB_PATH}": "/usr/share/redis/instance1.rdb"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6395",
"{#INSTANCE}": "INSTANCE2",
"{#RDB_PATH}": "/usr/share/redis/instance2.rdb"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#INSTANCE}": "INSTANCE3",
"{#RDB_PATH}": "/usr/share/redis/instance3.rdb"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6389",
"{#INSTANCE}": "INSTANCE4",
"{#RDB_PATH}": "/usr/share/redis/instance4.rdb"
}
]
}
zabbix_get -s redis.host.me -k redis.discovery[stats,"123456 123456"] | jq .
{
"data": [
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6399",
"{#COMMAND}": "cmdstat_auth",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6399",
"{#COMMAND}": "cmdstat_ping",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6399",
"{#COMMAND}": "cmdstat_info",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6399",
"{#COMMAND}": "cmdstat_config",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6399",
"{#COMMAND}": "cmdstat_slowlog",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6395",
"{#COMMAND}": "cmdstat_auth",
"{#INSTANCE}": "INSTANCE2"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6395",
"{#COMMAND}": "cmdstat_ping",
"{#INSTANCE}": "INSTANCE2"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6395",
"{#COMMAND}": "cmdstat_info",
"{#INSTANCE}": "INSTANCE2"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6395",
"{#COMMAND}": "cmdstat_config",
"{#INSTANCE}": "INSTANCE2"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6395",
"{#COMMAND}": "cmdstat_slowlog",
"{#INSTANCE}": "INSTANCE2"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#COMMAND}": "cmdstat_set",
"{#INSTANCE}": "INSTANCE3"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#COMMAND}": "cmdstat_select",
"{#INSTANCE}": "INSTANCE3"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#COMMAND}": "cmdstat_auth",
"{#INSTANCE}": "INSTANCE3"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#COMMAND}": "cmdstat_ping",
"{#INSTANCE}": "INSTANCE3"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#COMMAND}": "cmdstat_info",
"{#INSTANCE}": "INSTANCE3"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#COMMAND}": "cmdstat_config",
"{#INSTANCE}": "INSTANCE3"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6397",
"{#COMMAND}": "cmdstat_slowlog",
"{#INSTANCE}": "INSTANCE3"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6389",
"{#COMMAND}": "cmdstat_auth",
"{#INSTANCE}": "INSTANCE4"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6389",
"{#COMMAND}": "cmdstat_ping",
"{#INSTANCE}": "INSTANCE4"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6389",
"{#COMMAND}": "cmdstat_info",
"{#INSTANCE}": "INSTANCE4"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6389",
"{#COMMAND}": "cmdstat_config",
"{#INSTANCE}": "INSTANCE4"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6389",
"{#COMMAND}": "cmdstat_slowlog",
"{#INSTANCE}": "INSTANCE4"
}
]
}
zabbix_get -s redis.host.me -k redis.discovery[replication] | jq .
{
"data": [
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6400",
"{#SLAVE}": "slave0",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6400",
"{#SLAVE}": "slave1",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6400",
"{#SLAVE}": "slave2",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6400",
"{#SLAVE}": "slave4",
"{#INSTANCE}": "INSTANCE1"
},
{
"{#HOST}": "127.0.0.1",
"{#PORT}": "6400",
"{#SLAVE}": "slave5",
"{#INSTANCE}": "INSTANCE1"
}
]
}