mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Removed files from other branch
This commit is contained in:
parent
cb9f257c2d
commit
75112331ec
@ -1,169 +0,0 @@
|
||||
#!/bin/bash
|
||||
######################################################################################################################
|
||||
# Plugin to monitor basic statistics of EMC VNX 5300 Unified Datamovers #
|
||||
######################################################################################################################
|
||||
|
||||
# Author: Evgeny Beysembaev <megabotva@gmail.com>
|
||||
|
||||
#####################################
|
||||
# Description #
|
||||
#####################################
|
||||
|
||||
# The plugin monitors basic statistics of EMC Unified Storage system Datamovers. Probably it can also be compatible with
|
||||
# other Isilon or Celerra systems. It uses SSH to connect to Control Stations, then remotely executes
|
||||
# /nas/sbin/server_stats and fetches and parses data from it. It supports gathering data both from active/active
|
||||
# and active/passive Datamover configurations, ignoring offline or standby Datamovers. If all Datamovers are
|
||||
# offline or absent, the plugin returns error.
|
||||
# This plugin also automatically chooses Primary Control Station from the list by calling /nasmcd/sbin/getreason and
|
||||
# /nasmcd/sbin/t2slot.
|
||||
#
|
||||
# Data is gathered from basic-std Statistics Group
|
||||
#
|
||||
# It's quite easy to comment out unneeded data to make graphs less overloaded or to add new statistics sources.
|
||||
|
||||
#####################################
|
||||
# Configuration #
|
||||
#####################################
|
||||
|
||||
# The plugin uses SSH to connect to Control Stations. It's possible to use 'nasadmin' user, but it would be better
|
||||
# if you create read-only global user by Unisphere Client. The user should have only Operator role.
|
||||
# I created "operator" user but due to the fact that Control Stations already had one internal "operator" user,
|
||||
# the new one was called "operator1". So be careful.
|
||||
#
|
||||
# On munin-node side choose a user which will be used to connect through SSH. Generally user "munin" is ok. Then,
|
||||
# execute "sudo su munin -s /bin/bash", "ssh-keygen" and "ssh-copy-id" to both Control Stations with newly created
|
||||
# user.
|
||||
#
|
||||
# Make a link from /usr/share/munin/plugins/emc_vnx_dm_basic_stats to /etc/munin/plugins/emc_vnx_dm_basic_stats_<NAME>,
|
||||
# where <NAME> is any arbitrary name of your storage system. The plugin will return <NAME> in its answer
|
||||
# as "host_name" field.
|
||||
# Assume your storage system is called "VNX5300".
|
||||
#
|
||||
# Make a configuration file at /etc/munin/plugin-conf.d/emc_vnx_dm_basic_stats_VNX5300
|
||||
#
|
||||
# [emc_vnx_dm_basic_stats_vnx5300]
|
||||
# user munin # SSH Client local user
|
||||
# env.username operator1 # Remote user with Operator role
|
||||
# env.cs_addr 192.168.1.1 192.168.1.2 # Control Stations addresses
|
||||
# env.nas_servers server_2 server_3 # This is the default value and can be omitted
|
||||
|
||||
#####################################
|
||||
# History #
|
||||
#####################################
|
||||
|
||||
# 08.11.2016 - First Release
|
||||
|
||||
######################################################################################################################
|
||||
|
||||
export LANG=C
|
||||
|
||||
TARGET=$(echo "${0##*/}" | cut -d _ -f 6)
|
||||
: ${nas_servers:="server_2 server_3"}
|
||||
SSH_CHECK='ssh -q $username@$CS "/nasmcd/sbin/getreason | grep -w slot_\`/nasmcd/sbin/t2slot\` | cut -d- -f1"'
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
echo "yes"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$username" ]; then
|
||||
echo "No username!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$cs_addr" ]; then
|
||||
echo "No control station addresses!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#Choosing Cotrol Station. Code have to be "10"
|
||||
for CS in $cs_addr; do
|
||||
if [ "`eval $SSH_CHECK`" -eq "10" ]; then
|
||||
# echo "$CS is Primary"
|
||||
PRIMARY_CS=$CS
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$PRIMARY_CS" ]; then
|
||||
echo "No alive primary Control Station from list \"$cs_addr\"";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
SSH="ssh -q $username@$PRIMARY_CS . /home/operator1/.bash_profile; "
|
||||
|
||||
echo "host_name ${TARGET}"
|
||||
|
||||
if [ "$1" = "config" ] ; then
|
||||
for server in $nas_servers; do
|
||||
$SSH nas_server -i $server | grep -q 'type *= nas'
|
||||
if [ "$?" != 0 ] ; then continue; fi
|
||||
nas_server_ok=TRUE
|
||||
echo "multigraph emc_vnx_cpu_percent
|
||||
graph_title EMC VNX 5300 Datamover CPU Util %
|
||||
graph_vlabel %
|
||||
graph_category cpu
|
||||
${server}_cpuutil.min 0
|
||||
${server}_cpuutil.label $server CPU util. in % in this interval."
|
||||
echo "
|
||||
multigraph emc_vnx_network_kib
|
||||
graph_title EMC VNX 5300 Datamover Network bytes over all interfaces
|
||||
graph_vlabel B/s sent (+)/ recv. (-)
|
||||
graph_category network
|
||||
graph_args --base 1000
|
||||
${server}_net_in.graph no
|
||||
${server}_net_in.label none
|
||||
${server}_net_in.cdef ${server}_net_in,1000,*
|
||||
${server}_net_out.label $server B/s
|
||||
${server}_net_out.cdef ${server}_net_out,1000,*
|
||||
${server}_net_out.negative ${server}_net_in
|
||||
${server}_net_out.draw AREA"
|
||||
echo "
|
||||
multigraph emc_vnx_storage_kib
|
||||
graph_title EMC VNX 5300 Datamover Storage bytes over all interfaces
|
||||
graph_vlabel B/s sent (+)/ recv. (-)
|
||||
graph_category network
|
||||
graph_args --base 1000
|
||||
${server}_stor_read.graph no
|
||||
${server}_stor_read.label none
|
||||
${server}_stor_read.cdef ${server}_stor_read,1000,*
|
||||
${server}_stor_write.label $server B/s
|
||||
${server}_stor_write.cdef ${server}_stor_write,1000,*
|
||||
${server}_stor_write.negative ${server}_stor_read
|
||||
${server}_stor_write.draw AREA"
|
||||
done
|
||||
if [ -z $nas_server_ok ]; then
|
||||
echo "No active data movers!"
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for server in $nas_servers; do
|
||||
$SSH nas_server -i $server | grep -q 'type *= nas'
|
||||
if [ "$?" != 0 ] ; then continue; fi
|
||||
nas_server_ok=TRUE
|
||||
member_elements=`$SSH server_stats $server -count 1 -terminationsummary no -titles never `
|
||||
NUMCOL=5
|
||||
IFS=$' ' read -ra graphs <<< $member_elements
|
||||
|
||||
echo "multigraph emc_vnx_cpu_percent"
|
||||
echo "${server}_cpuutil.value ${graphs[1]}"
|
||||
|
||||
echo "
|
||||
multigraph emc_vnx_network_kib"
|
||||
echo "${server}_net_in.value ${graphs[2]}"
|
||||
echo "${server}_net_out.value ${graphs[3]}"
|
||||
|
||||
echo "
|
||||
multigraph emc_vnx_storage_kib"
|
||||
echo "${server}_stor_read.value ${graphs[4]}"
|
||||
echo "${server}_stor_write.value ${graphs[5]}"
|
||||
|
||||
done
|
||||
if [ -z $nas_server_ok ]; then
|
||||
echo "No active data movers!"
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
|
@ -1,266 +0,0 @@
|
||||
#!/bin/bash
|
||||
######################################################################################################################
|
||||
# Plugin to monitor NFS statistics of EMC VNX 5300 Unified Storage system #
|
||||
######################################################################################################################
|
||||
|
||||
# Author: Evgeny Beysembaev <megabotva@gmail.com>
|
||||
|
||||
#####################################
|
||||
# Description #
|
||||
#####################################
|
||||
|
||||
# The plugin monitors NFS v3 statistics of EMC Unified Storage system. Probably it can also be compatible with
|
||||
# other Isilon or Celerra systems. It uses SSH to connect to Control Stations, then remotely executes
|
||||
# /nas/sbin/server_stats and fetches and parses data from it. It supports gathering data both from active/active
|
||||
# and active/passive Datamover configurations, ignoring offline or standby Datamovers. If all Datamovers are
|
||||
# offline or absent, the plugin returns error.
|
||||
# This plugin also automatically chooses Primary Control Station from the list by calling /nasmcd/sbin/getreason and
|
||||
# /nasmcd/sbin/t2slot.
|
||||
#
|
||||
# At the moment data is gathered from the following statistics sources:
|
||||
# nfs.v3.op - Tons of timings about NFS RPC calls
|
||||
# nfs.client - Here new Client addresses are rescanned and added automatically.
|
||||
#
|
||||
# It's quite easy to comment out unneeded data to make graphs less overloaded or to add new statistics sources.
|
||||
|
||||
#####################################
|
||||
# Configuration #
|
||||
#####################################
|
||||
|
||||
# The plugin uses SSH to connect to Control Stations. It's possible to use 'nasadmin' user, but it would be better
|
||||
# if you create read-only global user by Unisphere Client. The user should have only Operator role.
|
||||
# I created "operator" user but due to the fact that Control Stations already had one internal "operator" user,
|
||||
# the new one was called "operator1". So be careful.
|
||||
#
|
||||
# On munin-node side choose a user which will be used to connect through SSH. Generally user "munin" is ok. Then,
|
||||
# execute "sudo su munin -s /bin/bash", "ssh-keygen" and "ssh-copy-id" to both Control Stations with newly created
|
||||
# user.
|
||||
#
|
||||
# Make a link from /usr/share/munin/plugins/emc_vnx_nfsv3_stats to /etc/munin/plugins/emc_vnx_nfsv3_stats_<NAME>,
|
||||
# where <NAME> is any arbitrary name of your storage system. The plugin will return <NAME> in its answer
|
||||
# as "host_name" field.
|
||||
# Assume your storage system is called "VNX5300".
|
||||
#
|
||||
# Make a configuration file at /etc/munin/plugin-conf.d/emc_vnx_nfsv3_stats_VNX5300
|
||||
#
|
||||
# [emc_vnx_nfsv3_stats_vnx5300]
|
||||
# user munin # SSH Client local user
|
||||
# env.username operator1 # Remote user with Operator role
|
||||
# env.cs_addr 192.168.1.1 192.168.1.2 # Control Stations addresses
|
||||
# env.nas_servers server_2 server_3 # This is the default value and can be omitted
|
||||
|
||||
#####################################
|
||||
# History #
|
||||
#####################################
|
||||
|
||||
# 08.11.2016 - First Release
|
||||
|
||||
######################################################################################################################
|
||||
|
||||
export LANG=C
|
||||
|
||||
TARGET=$(echo "${0##*/}" | cut -d _ -f 5)
|
||||
: ${nas_servers:="server_2 server_3"}
|
||||
SSH_CHECK='ssh -q $username@$CS "/nasmcd/sbin/getreason | grep -w slot_\`/nasmcd/sbin/t2slot\` | cut -d- -f1"'
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
echo "yes"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ -z "$username" ]; then
|
||||
echo "No username!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$cs_addr" ]; then
|
||||
echo "No control station addresses!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#Choosing Cotrol Station. Code have to be "10"
|
||||
for CS in $cs_addr; do
|
||||
if [ "`eval $SSH_CHECK`" -eq "10" ]; then
|
||||
# echo "$CS is Primary"
|
||||
PRIMARY_CS=$CS
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$PRIMARY_CS" ]; then
|
||||
echo "No alive primary Control Station from list \"$cs_addr\"";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
SSH="ssh -q $username@$PRIMARY_CS . /home/operator1/.bash_profile; "
|
||||
|
||||
echo "host_name ${TARGET}"
|
||||
|
||||
if [ "$1" = "config" ] ; then
|
||||
for server in $nas_servers; do
|
||||
$SSH nas_server -i $server | grep -q 'type *= nas'
|
||||
if [ "$?" != 0 ] ; then continue; fi
|
||||
nas_server_ok=TRUE
|
||||
#nfs.v3.op data
|
||||
member_elements=`$SSH server_stats $server -info nfs.v3.op | grep member_elements | sed -ne 's/^.*= //p'`
|
||||
IFS=',' read -ra graphs <<< $member_elements
|
||||
echo "multigraph vnx_emc_calls_s
|
||||
graph_title EMC VNX 5300 NFS V3 Calls per second
|
||||
graph_vlabel Calls
|
||||
graph_category nfs
|
||||
graph_args --base 1000"
|
||||
for graph in "${graphs[@]}"; do
|
||||
field=`echo "$graph" | cut -d '.' -f4 `
|
||||
echo "${server}_$field.label $server $field"
|
||||
done
|
||||
|
||||
echo "
|
||||
multigraph vnx_emc_usec_call
|
||||
graph_title EMC VNX 5300 NFS V3 uSeconds per call
|
||||
graph_vlabel uSec / call
|
||||
graph_category nfs
|
||||
graph_args --base 1000"
|
||||
for graph in "${graphs[@]}"; do
|
||||
field=`echo "$graph" | cut -d '.' -f4 `
|
||||
echo "${server}_$field.label $server $field"
|
||||
done
|
||||
echo "
|
||||
multigraph vnx_emc_op_percent
|
||||
graph_title EMC VNX 5300 NFS V3 Op %
|
||||
graph_vlabel %
|
||||
graph_category nfs"
|
||||
for graph in "${graphs[@]}"; do
|
||||
field=`echo "$graph" | cut -d '.' -f4 `
|
||||
echo "${server}_$field.label $server $field"
|
||||
echo "${server}_$field.min 0"
|
||||
done
|
||||
|
||||
|
||||
#nfs.client data
|
||||
# Total Read Write Suspicious Total Read Write Avg
|
||||
# Ops/s Ops/s Ops/s Ops diff KiB/s KiB/s KiB/s uSec/call
|
||||
member_elements=`$SSH server_stats server_2 -monitor nfs.client -count 1 -terminationsummary no -titles never | sed -ne 's/^.*id=//p' | cut -d' ' -f1`
|
||||
readarray graphs2 <<< $member_elements
|
||||
echo "
|
||||
multigraph vnx_emc_nfs_client_ops_s
|
||||
graph_title EMC VNX 5300 NFS Client Ops/s
|
||||
graph_vlabel Ops/s
|
||||
graph_category nfs"
|
||||
echo -n "graph_order "
|
||||
for graph in "${graphs2[@]}"; do
|
||||
field=`echo "$graph" | sed -ne 's/\./_/pg' `
|
||||
echo -n "${server}_${field}_r ${server}_${field}_w ${server}_${field}_t ${server}_${field}_s "
|
||||
done
|
||||
echo " "
|
||||
for graph in "${graphs2[@]}"; do
|
||||
field=`echo "$graph" | sed -ne 's/\./_/pg' `
|
||||
echo "${server}_${field}_r.label $server $field Read Ops/s"
|
||||
echo "${server}_${field}_w.label $server $field Write Ops/s"
|
||||
echo "${server}_${field}_w.draw STACK"
|
||||
echo "${server}_${field}_t.label $server $field Total Ops/s"
|
||||
echo "${server}_${field}_s.label $server $field Suspicious Ops diff"
|
||||
done
|
||||
|
||||
echo "
|
||||
multigraph vnx_emc_nfs_client_kib_s
|
||||
graph_title EMC VNX 5300 NFS Client KiB/s
|
||||
graph_vlabel KiB/s
|
||||
graph_category nfs"
|
||||
echo -n "graph_order "
|
||||
for graph in "${graphs2[@]}"; do
|
||||
field=`echo "$graph" | sed -ne 's/\./_/pg' `
|
||||
echo -n "${server}_${field}_r ${server}_${field}_w ${server}_${field}_t "
|
||||
done
|
||||
echo " "
|
||||
for graph in "${graphs2[@]}"; do
|
||||
field=`echo "$graph" | sed -ne 's/\./_/pg' `
|
||||
echo "${server}_${field}_r.label $server $field Read KiB/s"
|
||||
echo "${server}_${field}_w.label $server $field Write KiB/s"
|
||||
echo "${server}_${field}_w.draw STACK"
|
||||
echo "${server}_${field}_t.label $server $field Total KiB/s"
|
||||
done
|
||||
|
||||
echo "
|
||||
multigraph vnx_emc_nfs_client_avg_usec
|
||||
graph_title EMC VNX 5300 NFS Client Avg uSec/call
|
||||
graph_vlabel uSec/call
|
||||
graph_category nfs"
|
||||
for graph in "${graphs2[@]}"; do
|
||||
field=`echo "$graph" | sed -ne 's/\./_/pg' `
|
||||
echo "${server}_${field}.label $server $field Avg uSec/call"
|
||||
done
|
||||
done
|
||||
if [ -z $nas_server_ok ]; then
|
||||
echo "No active data movers!"
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
#nfs.v3.op data
|
||||
for server in $nas_servers; do
|
||||
$SSH nas_server -i $server | grep -q 'type *= nas'
|
||||
if [ "$?" != 0 ] ; then continue; fi
|
||||
nas_server_ok=TRUE
|
||||
member_elements=`$SSH server_stats $server -monitor nfs.v3.op -count 1 -terminationsummary no -titles never | sed -ne 's/^.*v3/v3/p'`
|
||||
NUMCOL=5
|
||||
LINES=`wc -l <<< $member_elements`
|
||||
while IFS=$'\n' read -ra graphs ; do
|
||||
element+=( $graphs )
|
||||
done <<< $member_elements
|
||||
|
||||
echo "multigraph vnx_emc_calls_s"
|
||||
for ((i=0; i<$((LINES)); i++ )); do
|
||||
echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+1]}"
|
||||
done
|
||||
|
||||
echo "
|
||||
multigraph vnx_emc_usec_call"
|
||||
for ((i=0; i<$((LINES)); i++ )); do
|
||||
echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+3]}"
|
||||
done
|
||||
|
||||
echo "
|
||||
multigraph vnx_emc_op_percent"
|
||||
for ((i=0; i<$((LINES)); i++ )); do
|
||||
echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+4]}"
|
||||
done
|
||||
|
||||
element=()
|
||||
#nfs.client data
|
||||
echo "
|
||||
multigraph vnx_emc_nfs_client_ops_s"
|
||||
member_elements=`$SSH server_stats server_2 -monitor nfs.client -count 1 -terminationsummary no -titles never | sed -ne 's/^.*id=//p'`
|
||||
NUMCOL=9
|
||||
LINES=`wc -l <<< $member_elements`
|
||||
while IFS=$'\n' read -ra graphs; do
|
||||
element+=($graphs)
|
||||
done <<< $member_elements
|
||||
for (( i=0; i<$((LINES)); i++ )); do
|
||||
client=` echo ${element[i*$NUMCOL]} | sed -ne 's/\./_/pg'`
|
||||
echo "${server}_${client}_r".value "${element[$i*$NUMCOL+2]}"
|
||||
echo "${server}_${client}_w".value "${element[$i*$NUMCOL+3]}"
|
||||
echo "${server}_${client}_t".value "${element[$i*$NUMCOL+1]}"
|
||||
echo "${server}_${client}_s".value "${element[$i*$NUMCOL+4]}"
|
||||
done
|
||||
echo "
|
||||
multigraph vnx_emc_nfs_client_kib_s"
|
||||
for (( i=0; i<$((LINES)); i++ )); do
|
||||
client=` echo ${element[i*$NUMCOL]} | sed -ne 's/\./_/pg'`
|
||||
echo "${server}_${client}_r".value "${element[$i*$NUMCOL+6]}"
|
||||
echo "${server}_${client}_w".value "${element[$i*$NUMCOL+7]}"
|
||||
echo "${server}_${client}_t".value "${element[$i*$NUMCOL+5]}"
|
||||
done
|
||||
echo "
|
||||
multigraph vnx_emc_nfs_client_avg_usec"
|
||||
for (( i=0; i<$((LINES)); i++ )); do
|
||||
client=` echo ${element[i*$NUMCOL]} | sed -ne 's/\./_/pg'`
|
||||
echo "${server}_${client}".value "${element[$i*$NUMCOL+8]}"
|
||||
done
|
||||
done
|
||||
if [ -z $nas_server_ok ]; then
|
||||
echo "No active data movers!"
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user