Difference between revisions of "Plugin:exec-redis.sh"

From collectd Wiki
Jump to: navigation, search
m (moved Plugin:exec-redis to Plugin:exec-redis.sh: Add .sh suffix.)
(Code: Use the environment variables provided by collectd by default.)
Line 17: Line 17:
 
  #!/bin/bash
 
  #!/bin/bash
 
   
 
   
  HOSTNAME=`hostname -f`
+
  HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}"
 +
INTERVAL="${COLLECTD_INTERVAL:-10}"
 
  PORT=6379
 
  PORT=6379
INTERVAL=10
 
 
   
 
   
  while true; do
+
  while sleep "$INTERVAL"
 +
do
 
   
 
   
 
  info=$(echo info|nc -w 1 127.0.0.1 $PORT)
 
  info=$(echo info|nc -w 1 127.0.0.1 $PORT)
Line 40: Line 41:
 
  echo "PUTVAL $HOSTNAME/redis-$PORT/memcached_items-db0 interval=$INTERVAL N:$keys"
 
  echo "PUTVAL $HOSTNAME/redis-$PORT/memcached_items-db0 interval=$INTERVAL N:$keys"
 
   
 
   
sleep $INTERVAL
 
 
  done
 
  done
 
</source>
 
</source>

Revision as of 07:48, 16 June 2010

exec-redis.sh plugin
Type: read
Callbacks: n/a
Status: external
First version: n/a
Copyright: 2010 Astro
License: unknown
Manpage: n/a
List of Plugins

The exec-redis.sh plugin reads statistics from Redis, a high-performance NoSQL data structure server with persistent storage.

Code

Create /etc/collectd/redis.sh and make it executable:

 #!/bin/bash
 
 HOSTNAME="${COLLECTD_HOSTNAME:-`hostname -f`}"
 INTERVAL="${COLLECTD_INTERVAL:-10}"
 PORT=6379
 
 while sleep "$INTERVAL"
 do
 
 info=$(echo info|nc -w 1 127.0.0.1 $PORT)
 connected_clients=$(echo "$info"|awk -F : '$1 == "connected_clients" {print $2}')
 connected_slaves=$(echo "$info"|awk -F : '$1 == "connected_slaves" {print $2}')
 uptime=$(echo "$info"|awk -F : '$1 == "uptime_in_seconds" {print $2}')
 used_memory=$(echo "$info"|awk -F ":" '$1 == "used_memory" {print $2}'|sed -e 's/\r//')
 changes_since_last_save=$(echo "$info"|awk -F : '$1 == "changes_since_last_save" {print $2}')
 total_commands_processed=$(echo "$info"|awk -F : '$1 == "total_commands_processed" {print $2}')
 keys=$(echo "$info"|egrep -e "^db0"|sed -e 's/^.\+:keys=//'|sed -e 's/,.\+//')
 
 echo "PUTVAL $HOSTNAME/redis-$PORT/memcached_connections-clients interval=$INTERVAL N:$connected_clients"
 echo "PUTVAL $HOSTNAME/redis-$PORT/memcached_connections-slaves interval=$INTERVAL N:$connected_slaves"
 echo "PUTVAL $HOSTNAME/redis-$PORT/uptime interval=$INTERVAL N:$uptime"
 echo "PUTVAL $HOSTNAME/redis-$PORT/df-memory interval=$INTERVAL N:$used_memory:U"
 echo "PUTVAL $HOSTNAME/redis-$PORT/files-unsaved_changes interval=$INTERVAL N:$changes_since_last_save"
 echo "PUTVAL $HOSTNAME/redis-$PORT/memcached_command-total interval=$INTERVAL N:$total_commands_processed"
 echo "PUTVAL $HOSTNAME/redis-$PORT/memcached_items-db0 interval=$INTERVAL N:$keys"
 
 done

Configuration

Configure the Exec plugin:

<Plugin exec>
	Exec nobody "/etc/collectd/redis.sh"
</Plugin>

Example graph

Plugin-exec-redis-commands.png

Dependencies

  • nc(1) (netcat)
  • awk(1)

See also