The following custom collectd exec plugin uses Bash and the used/free buffers values from the Linux command, free.

RightScript: Install memory_buffers collectd plugin

Create a RightScript with the following code and ensure that you set SERVER_UUID as an input with a dropdown default value of RS_INSTANCE_UUID.

#!/bin/bash -e



interval=20



# Determine the collectd plugin path, based on the architecture of the machine.

collectd_dir="/usr/lib/collectd"

["$(uname -m)" == "x86_64"] && collectd_dir="/usr/lib64/collectd"



# Create the plugin directory if needed, and copy the script into it.

mkdir -p "$collectd_dir"/plugins

cp -f "$RS_ATTACH_DIR"/memory_buffers.bash "$collectd_dir"/plugins/memory_buffers.bash

chmod +x "$collectd_dir"/plugins/memory_buffers.bash

chmod 775 "$collectd_dir"/plugins/memory_buffers.bash



if ["$RS_DISTRO" = 'ubuntu']; then

    config="/etc/collectd/collectd.conf"

    plugin_dir="/etc/collectd/conf"

elif ["$RS_DISTRO" = 'centos']; then

    config="/etc/collectd.conf"

    plugin_dir="/etc/collectd.d"

fi

exec_plugin_conf="$plugin_dir/memory_buffers.conf"



if ! grep memory_buffers "$exec_plugin_conf" >/dev/null 2>&1; then

cat <<EOF>> $exec_plugin_conf

<Plugin exec>

  # userid plugin executable plugin args

  Exec "nobody" "$collectd_dir/plugins/memory_buffers.bash" "$SERVER_UUID" "$interval"

</Plugin>

EOF

fi



/etc/init.d/collectd restart



echo 'Done.'

memory_buffers.bash

Copy and paste the following into a new text file on your computer. Save it as memory_buffers.bash and upload it as an attachment to the RightScript.

: ${id:="$SERVER_UUID"}

: ${id:="$1"}

: ${id:=$(< /var/spool/ec2/meta-data/instance-id)}



while true; do

    start_run=$(date +%s)

    data_used=$(free | grep "buffers/cache" | awk '{ print $3 }')

    data_free=$(free | grep "buffers/cache" | awk '{ print $4 }')

    echo 'PUTVAL '"$id"'/memory_buffers/gauge-used '"$start_run"':'"$data_used"

    echo 'PUTVAL '"$id"'/memory_buffers/gauge-free '"$start_run"':'"$data_free"

    sleep 10

done

Example Output of Plugin

After you running the RightScript on the server successfully, its also possible to test it manually within shell:

root@sandbox:~# "/usr/lib/collectd/plugins/memory_buffers.bash" "00-0BIJPUB"PUTVAL 00-0BIJPUB/memory_buffers/gauge-used 1299043002:99288PUTVAL 00-0BIJPUB/memory_buffers/gauge-free 1299043002:1606424PUTVAL 00-0BIJPUB/memory_buffers/gauge-used 1299043012:99380PUTVAL 00-0BIJPUB/memory_buffers/gauge-free 1299043012:1606292PUTVAL 00-0BIJPUB/memory_buffers/gauge-used 1299043022:99364PUTVAL 00-0BIJPUB/memory_buffers/gauge-free 1299043022:1606308

Example Alert Specification

Add an alert to your ServerTemplate, such as:

if memory_buffers/gauge-free.value < '100' for 1 min then escalate to 'critical'