root / plugins / emc / emc_vnx_file_stats @ a8e1084b
Historique | Voir | Annoter | Télécharger (17,3 ko)
| 1 | e488bb05 | Diver | #!/bin/bash |
|---|---|---|---|
| 2 | 8b2808b9 | Diver | |
| 3 | : <<=cut |
||
| 4 | |||
| 5 | =head1 NAME |
||
| 6 | |||
| 7 | a8e1084b | Diver | emc_vnx_file_stats - Plugin to monitor Basic, NFSv3 and NFSv4 statistics of EMC VNX 5300 Unified Storage system's Datamovers |
| 8 | 8b2808b9 | Diver | |
| 9 | =head1 AUTHOR |
||
| 10 | |||
| 11 | Evgeny Beysembaev <megabotva@gmail.com> |
||
| 12 | |||
| 13 | =head1 LICENSE |
||
| 14 | |||
| 15 | GPLv2 |
||
| 16 | |||
| 17 | =head1 MAGIC MARKERS |
||
| 18 | |||
| 19 | #%# family=auto |
||
| 20 | #%# capabilities=autoconf |
||
| 21 | |||
| 22 | =head1 DESCRIPTION |
||
| 23 | |||
| 24 | The plugin monitors basic statistics of EMC Unified Storage system Datamovers and NFS statistics of EMC VNX5300 Unified |
||
| 25 | Storage system. Probably it can also be compatible with other Isilon or Celerra systems. It uses SSH to connect to Control |
||
| 26 | Stations, then remotely executes '/nas/sbin/server_stats' and fetches and parses data from it. It supports gathering |
||
| 27 | data both from active/active and active/passive Datamover configurations, ignoring offline or standby Datamovers. |
||
| 28 | If all Datamovers are offline or absent, the plugin returns error. |
||
| 29 | This plugin also automatically chooses Primary Control Station from the list by calling '/nasmcd/sbin/getreason' and |
||
| 30 | '/nasmcd/sbin/t2slot'. |
||
| 31 | |||
| 32 | At the moment data is gathered from the following statistics sources: |
||
| 33 | * nfs.v3.op - Tons of timings about NFSv3 RPC calls |
||
| 34 | * nfs.v4.op - Tons of timings about NFSv4 RPC calls |
||
| 35 | * nfs.client - Here new Client addresses are rescanned and added automatically. |
||
| 36 | * basic-std Statistics Group - Basic Statistics of Datamovers (eg. CPU, Memory etc.) |
||
| 37 | e488bb05 | Diver | |
| 38 | 8b2808b9 | Diver | It's quite easy to comment out unneeded data to make graphs less overloaded or to add new statistics sources. |
| 39 | |||
| 40 | =head1 COMPATIBILITY |
||
| 41 | |||
| 42 | The plugin has been written for being compatible with EMC VNX5300 Storage system, as this is the only EMC storage which |
||
| 43 | i have. |
||
| 44 | By the way, i am pretty sure it can also work with other VNX1 storages, like VNX5100 and VNX5500. |
||
| 45 | About VNX2 series, i don't know whether the plugin will be able to work with them. Maybe it would need some corrections |
||
| 46 | in command-line backend. The same situation is with other EMC systems, so i encourage you to try and fix the plugin. |
||
| 47 | |||
| 48 | =head1 CONFIGURATION |
||
| 49 | |||
| 50 | The plugin uses SSH to connect to Control Stations. It's possible to use 'nasadmin' user, but it would be better |
||
| 51 | if you create read-only global user by Unisphere Client. The user should have only Operator role. |
||
| 52 | I created "operator" user but due to the fact that Control Stations already had one internal "operator" user, |
||
| 53 | the new one was called "operator1". So be careful. |
||
| 54 | |||
| 55 | On munin-node side choose a user which will be used to connect through SSH. Generally user "munin" is ok. Then, |
||
| 56 | execute "sudo su munin -s /bin/bash", "ssh-keygen" and "ssh-copy-id" to both Control Stations with newly created |
||
| 57 | user. |
||
| 58 | |||
| 59 | Make a link from /usr/share/munin/plugins/emc_vnx_file_stats to /etc/munin/plugins/. |
||
| 60 | If you want to get NFS statistics, name the link as "emc_vnx_file_nfs_stats_<NAME>", otherwise to get Basic Datamover |
||
| 61 | statistics you have to name it "emc_vnx_file_basicdm_stats_<NAME>", where <NAME> is any arbitrary name of your |
||
| 62 | storage system. The plugin will return <NAME> in its answer as "host_name" field. |
||
| 63 | |||
| 64 | For example, assume your storage system is called "VNX5300". |
||
| 65 | Make a configuration file at /etc/munin/plugin-conf.d/emc_vnx_file_stats_VNX5300 |
||
| 66 | |||
| 67 | [emc_vnx_file_*] |
||
| 68 | user munin # SSH Client local user |
||
| 69 | env.username operator1 # Remote user with Operator role |
||
| 70 | env.cs_addr 192.168.1.1 192.168.1.2 # Control Stations addresses |
||
| 71 | env.nas_servers server_2 server_3 # This is the default value and can be omitteda |
||
| 72 | |||
| 73 | =head1 HISTORY |
||
| 74 | |||
| 75 | 08.11.2016 - First Release |
||
| 76 | 17.11.2016 - NFSv4 support, Memory section |
||
| 77 | 16.12.2016 - Merged "NFS" and "Datamover Stats" plugins |
||
| 78 | 26.12.2016 - Compatibility with Munin coding style |
||
| 79 | |||
| 80 | =cut |
||
| 81 | e488bb05 | Diver | |
| 82 | export LANG=C |
||
| 83 | |||
| 84 | 31d3dccb | Diver | STATSTYPE=$(echo "${0##*/}" | cut -d _ -f 1-5)
|
| 85 | if [ $STATSTYPE = "emc_vnx_file_nfs_stats" ]; then STATSTYPE=NFS; |
||
| 86 | elif [ $STATSTYPE = "emc_vnx_file_basicdm_stats" ]; then STATSTYPE=BASICDM; |
||
| 87 | else echo "Do not know what to do. Name the plugin as 'emc_vnx_file_nfs_stats_<HOSTNAME>' or 'emc_vnx_file_basicdm_stats_<HOSTNAME>'"; exit 1; fi |
||
| 88 | # echo $STATSTYPE |
||
| 89 | |||
| 90 | TARGET=$(echo "${0##*/}" | cut -d _ -f 6)
|
||
| 91 | e488bb05 | Diver | : ${nas_servers:="server_2 server_3"}
|
| 92 | SSH_CHECK='ssh -q $username@$CS "/nasmcd/sbin/getreason | grep -w slot_\`/nasmcd/sbin/t2slot\` | cut -d- -f1"' |
||
| 93 | |||
| 94 | if [ "$1" = "autoconf" ]; then |
||
| 95 | echo "yes" |
||
| 96 | exit 0 |
||
| 97 | fi |
||
| 98 | |||
| 99 | if [ -z "$username" ]; then |
||
| 100 | echo "No username!" |
||
| 101 | exit 1 |
||
| 102 | fi |
||
| 103 | |||
| 104 | if [ -z "$cs_addr" ]; then |
||
| 105 | echo "No control station addresses!" |
||
| 106 | exit 1 |
||
| 107 | fi |
||
| 108 | |||
| 109 | #Choosing Cotrol Station. Code have to be "10" |
||
| 110 | for CS in $cs_addr; do |
||
| 111 | 5aa034be | Diver | if [[ "10" -eq "$(eval $SSH_CHECK)" ]]; then |
| 112 | e488bb05 | Diver | # echo "$CS is Primary" |
| 113 | PRIMARY_CS=$CS |
||
| 114 | break |
||
| 115 | fi |
||
| 116 | done |
||
| 117 | |||
| 118 | if [ -z "$PRIMARY_CS" ]; then |
||
| 119 | echo "No alive primary Control Station from list \"$cs_addr\""; |
||
| 120 | exit 1; |
||
| 121 | fi |
||
| 122 | |||
| 123 | SSH="ssh -q $username@$PRIMARY_CS . /home/operator1/.bash_profile; " |
||
| 124 | |||
| 125 | echo "host_name ${TARGET}"
|
||
| 126 | |||
| 127 | if [ "$1" = "config" ] ; then |
||
| 128 | for server in $nas_servers; do |
||
| 129 | $SSH nas_server -i $server | grep -q 'type *= nas' |
||
| 130 | if [ "$?" != 0 ] ; then continue; fi |
||
| 131 | nas_server_ok=TRUE |
||
| 132 | 31d3dccb | Diver | |
| 133 | if [ $STATSTYPE = "BASICDM" ] ; then |
||
| 134 | echo "multigraph emc_vnx_cpu_percent |
||
| 135 | graph_title EMC VNX 5300 Datamover CPU Util % |
||
| 136 | graph_vlabel % |
||
| 137 | graph_category cpu |
||
| 138 | graph_scale no |
||
| 139 | graph_args --upper-limit 100 -l 0 |
||
| 140 | ${server}_cpuutil.min 0
|
||
| 141 | ${server}_cpuutil.label $server CPU util. in %."
|
||
| 142 | |||
| 143 | echo -e "\nmultigraph emc_vnx_network_kib |
||
| 144 | graph_title EMC VNX 5300 Datamover Network bytes over all interfaces |
||
| 145 | graph_vlabel B/s recv. (-) / sent (+) |
||
| 146 | graph_category network |
||
| 147 | graph_args --base 1000 |
||
| 148 | ${server}_net_in.graph no
|
||
| 149 | ${server}_net_in.label none
|
||
| 150 | ${server}_net_in.cdef ${server}_net_in,1000,*
|
||
| 151 | ${server}_net_out.label $server B/s
|
||
| 152 | ${server}_net_out.cdef ${server}_net_out,1000,*
|
||
| 153 | ${server}_net_out.negative ${server}_net_in
|
||
| 154 | ${server}_net_out.draw AREA"
|
||
| 155 | |||
| 156 | echo -e "\nmultigraph emc_vnx_storage_kib |
||
| 157 | graph_title EMC VNX 5300 Datamover Storage bytes over all interfaces |
||
| 158 | graph_vlabel B/s recv. (-) / sent (+) |
||
| 159 | graph_category network |
||
| 160 | graph_args --base 1000 |
||
| 161 | ${server}_stor_read.graph no
|
||
| 162 | ${server}_stor_read.label none
|
||
| 163 | ${server}_stor_read.cdef ${server}_stor_read,1000,*
|
||
| 164 | ${server}_stor_write.label $server B/s
|
||
| 165 | ${server}_stor_write.cdef ${server}_stor_write,1000,*
|
||
| 166 | ${server}_stor_write.negative ${server}_stor_read
|
||
| 167 | ${server}_stor_write.draw AREA"
|
||
| 168 | |||
| 169 | echo -e "\nmultigraph emc_vnx_memory |
||
| 170 | graph_title EMC VNX 5300 Datamover Memory |
||
| 171 | graph_vlabel MiB |
||
| 172 | graph_category memory |
||
| 173 | graph_args --base 1024 |
||
| 174 | graph_order ${server}_used ${server}_free ${server}_total ${server}_freebuffer ${server}_encumbered
|
||
| 175 | ${server}_used.label ${server} Used
|
||
| 176 | ${server}_used.cdef ${server}_used,1024,/
|
||
| 177 | ${server}_free.label ${server} Free
|
||
| 178 | ${server}_free.draw STACK
|
||
| 179 | ${server}_free.cdef ${server}_free,1024,/
|
||
| 180 | ${server}_total.label ${server} Total
|
||
| 181 | ${server}_total.cdef ${server}_total,1024,/
|
||
| 182 | ${server}_freebuffer.label ${server} Free Buffer
|
||
| 183 | ${server}_freebuffer.cdef ${server}_freebuffer,1024,/
|
||
| 184 | ${server}_encumbered.label ${server} Encumbered
|
||
| 185 | ${server}_encumbered.cdef ${server}_encumbered,1024,/"
|
||
| 186 | |||
| 187 | echo -e "\nmultigraph emc_vnx_filecache |
||
| 188 | graph_title EMC VNX 5300 File Buffer Cache |
||
| 189 | graph_vlabel per second |
||
| 190 | graph_category memory |
||
| 191 | graph_args --base 1000 |
||
| 192 | graph_order ${server}_highw_hits ${server}_loww_hits ${server}_w_hits ${server}_hits ${server}_lookups
|
||
| 193 | ${server}_highw_hits.label High Watermark Hits
|
||
| 194 | ${server}_loww_hits.label Low Watermark Hits
|
||
| 195 | ${server}_loww_hits.draw STACK
|
||
| 196 | ${server}_w_hits.label Watermark Hits
|
||
| 197 | ${server}_hits.label Hits
|
||
| 198 | ${server}_lookups.label Lookups"
|
||
| 199 | |||
| 200 | echo -e "\nmultigraph emc_vnx_fileresolve |
||
| 201 | graph_title EMC VNX 5300 FileResolve |
||
| 202 | graph_vlabel Entries |
||
| 203 | graph_category memory |
||
| 204 | graph_args --base 1000 |
||
| 205 | ${server}_dropped.label Dropped Entries
|
||
| 206 | ${server}_max.label Max Limit
|
||
| 207 | ${server}_used.label Used Entries"
|
||
| 208 | fi |
||
| 209 | if [ $STATSTYPE = "NFS" ] ; then |
||
| 210 | e488bb05 | Diver | #nfs.v3.op data |
| 211 | fa87ed65 | Diver | member_elements=$($SSH server_stats $server -info nfs.v3.op | grep member_elements | sed -ne 's/^.*= //p') |
| 212 | e488bb05 | Diver | IFS=',' read -ra graphs <<< $member_elements |
| 213 | fa87ed65 | Diver | echo "multigraph vnx_emc_v3_calls_s |
| 214 | graph_title EMC VNX 5300 NFSv3 Calls per second |
||
| 215 | e488bb05 | Diver | graph_vlabel Calls |
| 216 | graph_category nfs |
||
| 217 | graph_args --base 1000" |
||
| 218 | for graph in "${graphs[@]}"; do
|
||
| 219 | fa87ed65 | Diver | field=$(echo "$graph" | cut -d '.' -f4 ) |
| 220 | e488bb05 | Diver | echo "${server}_$field.label $server $field"
|
| 221 | done |
||
| 222 | |||
| 223 | fa87ed65 | Diver | echo -e "\nmultigraph vnx_emc_v3_usec_call |
| 224 | graph_title EMC VNX 5300 NFSv3 uSeconds per call |
||
| 225 | e488bb05 | Diver | graph_vlabel uSec / call |
| 226 | graph_category nfs |
||
| 227 | graph_args --base 1000" |
||
| 228 | for graph in "${graphs[@]}"; do
|
||
| 229 | fa87ed65 | Diver | field=$(echo "$graph" | cut -d '.' -f4 ) |
| 230 | e488bb05 | Diver | echo "${server}_$field.label $server $field"
|
| 231 | done |
||
| 232 | fa87ed65 | Diver | echo -e "\nmultigraph vnx_emc_v3_op_percent |
| 233 | graph_title EMC VNX 5300 NFSv3 Op % |
||
| 234 | e488bb05 | Diver | graph_vlabel % |
| 235 | graph_scale no |
||
| 236 | graph_category nfs" |
||
| 237 | for graph in "${graphs[@]}"; do
|
||
| 238 | fa87ed65 | Diver | field=$(echo "$graph" | cut -d '.' -f4 ) |
| 239 | e488bb05 | Diver | echo "${server}_$field.label $server $field"
|
| 240 | echo "${server}_$field.min 0"
|
||
| 241 | done |
||
| 242 | fa87ed65 | Diver | graphs=() |
| 243 | #nfs.v4.op data |
||
| 244 | member_elements=$($SSH server_stats $server -info nfs.v4.op | grep member_elements | sed -ne 's/^.*= //p') |
||
| 245 | IFS=',' read -ra graphs <<< $member_elements |
||
| 246 | echo "multigraph vnx_emc_v4_calls_s |
||
| 247 | graph_title EMC VNX 5300 NFSv4 Calls per second |
||
| 248 | graph_vlabel Calls |
||
| 249 | graph_category nfs |
||
| 250 | graph_args --base 1000" |
||
| 251 | for graph in "${graphs[@]}"; do
|
||
| 252 | field=$(echo "$graph" | cut -d '.' -f4 ) |
||
| 253 | echo "${server}_$field.label $server $field"
|
||
| 254 | done |
||
| 255 | e488bb05 | Diver | |
| 256 | fa87ed65 | Diver | echo -e "\nmultigraph vnx_emc_v4_usec_call |
| 257 | graph_title EMC VNX 5300 NFSv4 uSeconds per call |
||
| 258 | graph_vlabel uSec / call |
||
| 259 | graph_category nfs |
||
| 260 | graph_args --base 1000" |
||
| 261 | for graph in "${graphs[@]}"; do
|
||
| 262 | field=$(echo "$graph" | cut -d '.' -f4 ) |
||
| 263 | echo "${server}_$field.label $server $field"
|
||
| 264 | done |
||
| 265 | echo -e "\nmultigraph vnx_emc_v4_op_percent |
||
| 266 | graph_title EMC VNX 5300 NFSv4 Op % |
||
| 267 | graph_vlabel % |
||
| 268 | graph_scale no |
||
| 269 | graph_category nfs" |
||
| 270 | for graph in "${graphs[@]}"; do
|
||
| 271 | field=$(echo "$graph" | cut -d '.' -f4 ) |
||
| 272 | echo "${server}_$field.label $server $field"
|
||
| 273 | echo "${server}_$field.min 0"
|
||
| 274 | done |
||
| 275 | e488bb05 | Diver | |
| 276 | #nfs.client data |
||
| 277 | # Total Read Write Suspicious Total Read Write Avg |
||
| 278 | # Ops/s Ops/s Ops/s Ops diff KiB/s KiB/s KiB/s uSec/call |
||
| 279 | fa87ed65 | Diver | member_elements=$($SSH server_stats server_2 -monitor nfs.client -count 1 -terminationsummary no -titles never | sed -ne 's/^.*id=//p' | cut -d' ' -f1) |
| 280 | e488bb05 | Diver | readarray graphs2 <<< $member_elements |
| 281 | echo -e "\nmultigraph vnx_emc_nfs_client_ops_s |
||
| 282 | graph_title EMC VNX 5300 NFS Client Ops/s |
||
| 283 | graph_vlabel Ops/s |
||
| 284 | graph_category nfs" |
||
| 285 | echo -n "graph_order " |
||
| 286 | for graph in "${graphs2[@]}"; do
|
||
| 287 | fa87ed65 | Diver | field=$(echo "$graph" | sed -ne 's/\./_/pg' ) |
| 288 | e488bb05 | Diver | echo -n "${server}_${field}_r ${server}_${field}_w ${server}_${field}_t ${server}_${field}_s "
|
| 289 | done |
||
| 290 | echo " " |
||
| 291 | for graph in "${graphs2[@]}"; do
|
||
| 292 | fa87ed65 | Diver | field=$(echo "$graph" | sed -ne 's/\./_/pg' ) |
| 293 | e488bb05 | Diver | echo "${server}_${field}_r.label $server $field Read Ops/s"
|
| 294 | echo "${server}_${field}_w.label $server $field Write Ops/s"
|
||
| 295 | echo "${server}_${field}_w.draw STACK"
|
||
| 296 | echo "${server}_${field}_t.label $server $field Total Ops/s"
|
||
| 297 | echo "${server}_${field}_s.label $server $field Suspicious Ops diff"
|
||
| 298 | done |
||
| 299 | |||
| 300 | echo -e "\nmultigraph vnx_emc_nfs_client_kib_s |
||
| 301 | graph_title EMC VNX 5300 NFS Client B/s |
||
| 302 | graph_vlabel B/s |
||
| 303 | graph_category nfs" |
||
| 304 | echo -n "graph_order " |
||
| 305 | for graph in "${graphs2[@]}"; do
|
||
| 306 | fa87ed65 | Diver | field=$(echo "$graph" | sed -ne 's/\./_/pg' ) |
| 307 | e488bb05 | Diver | echo -n "${server}_${field}_r ${server}_${field}_w ${server}_${field}_t "
|
| 308 | done |
||
| 309 | echo " " |
||
| 310 | for graph in "${graphs2[@]}"; do
|
||
| 311 | fa87ed65 | Diver | field=$(echo "$graph" | sed -ne 's/\./_/pg' ) |
| 312 | e488bb05 | Diver | echo "${server}_${field}_r.label $server $field Read B/s"
|
| 313 | echo "${server}_${field}_r.cdef ${server}_${field}_r,1024,*"
|
||
| 314 | echo "${server}_${field}_w.label $server $field Write B/s"
|
||
| 315 | echo "${server}_${field}_w.cdef ${server}_${field}_w,1024,*"
|
||
| 316 | echo "${server}_${field}_w.draw STACK"
|
||
| 317 | echo "${server}_${field}_t.label $server $field Total B/s"
|
||
| 318 | echo "${server}_${field}_t.cdef ${server}_${field}_t,1024,*"
|
||
| 319 | done |
||
| 320 | |||
| 321 | echo -e "\nmultigraph vnx_emc_nfs_client_avg_usec |
||
| 322 | graph_title EMC VNX 5300 NFS Client Avg uSec/call |
||
| 323 | graph_vlabel uSec/call |
||
| 324 | graph_category nfs" |
||
| 325 | for graph in "${graphs2[@]}"; do
|
||
| 326 | fa87ed65 | Diver | field=$(echo "$graph" | sed -ne 's/\./_/pg' ) |
| 327 | e488bb05 | Diver | echo "${server}_${field}.label $server $field Avg uSec/call"
|
| 328 | done |
||
| 329 | 31d3dccb | Diver | fi |
| 330 | e488bb05 | Diver | done |
| 331 | if [ -z $nas_server_ok ]; then |
||
| 332 | echo "No active data movers!" |
||
| 333 | exit 1 |
||
| 334 | fi |
||
| 335 | exit 0 |
||
| 336 | fi |
||
| 337 | |||
| 338 | for server in $nas_servers; do |
||
| 339 | $SSH nas_server -i $server | grep -q 'type *= nas' |
||
| 340 | if [ "$?" != 0 ] ; then continue; fi |
||
| 341 | nas_server_ok=TRUE |
||
| 342 | 31d3dccb | Diver | if [ $STATSTYPE = "BASICDM" ] ; then |
| 343 | member_elements=$($SSH server_stats $server -count 1 -terminationsummary no -titles never | grep '^[^[:space:]]') |
||
| 344 | # NUMCOL=5 |
||
| 345 | IFS=$' ' read -ra graphs <<< $member_elements |
||
| 346 | |||
| 347 | echo "multigraph emc_vnx_cpu_percent" |
||
| 348 | echo "${server}_cpuutil.value ${graphs[1]}"
|
||
| 349 | |||
| 350 | echo -e "\nmultigraph emc_vnx_network_kib" |
||
| 351 | echo "${server}_net_in.value ${graphs[2]}"
|
||
| 352 | echo "${server}_net_out.value ${graphs[3]}"
|
||
| 353 | |||
| 354 | echo -e "\nmultigraph emc_vnx_storage_kib" |
||
| 355 | echo "${server}_stor_read.value ${graphs[4]}"
|
||
| 356 | echo "${server}_stor_write.value ${graphs[5]}"
|
||
| 357 | |||
| 358 | member_elements=$($SSH server_stats $server -monitor kernel.memory -count 1 -terminationsummary no -titles never | grep '^[^[:space:]]') |
||
| 359 | IFS=$' ' read -ra graphs <<< $member_elements |
||
| 360 | |||
| 361 | echo -e "\nmultigraph emc_vnx_memory" |
||
| 362 | echo "${server}_total.value ${graphs[14]}"
|
||
| 363 | echo "${server}_used.value ${graphs[15]}"
|
||
| 364 | echo "${server}_free.value ${graphs[12]}"
|
||
| 365 | echo "${server}_freebuffer.value ${graphs[1]}"
|
||
| 366 | echo "${server}_encumbered.value ${graphs[8]}"
|
||
| 367 | |||
| 368 | echo -e "\nmultigraph emc_vnx_filecache" |
||
| 369 | echo "${server}_highw_hits.value ${graphs[2]}"
|
||
| 370 | echo "${server}_loww_hits.value ${graphs[6]}"
|
||
| 371 | echo "${server}_w_hits.value ${graphs[7]}"
|
||
| 372 | echo "${server}_hits.value ${graphs[4]}"
|
||
| 373 | echo "${server}_lookups.value ${graphs[5]}"
|
||
| 374 | |||
| 375 | echo -e "\nmultigraph emc_vnx_fileresolve" |
||
| 376 | echo "${server}_dropped.value ${graphs[9]}"
|
||
| 377 | echo "${server}_max.value ${graphs[10]}"
|
||
| 378 | echo "${server}_used.value ${graphs[11]}"
|
||
| 379 | |||
| 380 | |||
| 381 | fi |
||
| 382 | if [ $STATSTYPE = "NFS" ] ; then |
||
| 383 | fa87ed65 | Diver | #nfs.v3.op data |
| 384 | member_elements=$($SSH server_stats $server -monitor nfs.v3.op -count 1 -terminationsummary no -titles never | sed -ne 's/^.*v3/v3/p') |
||
| 385 | e488bb05 | Diver | NUMCOL=5 |
| 386 | fa87ed65 | Diver | LINES=$(wc -l <<< $member_elements) |
| 387 | e488bb05 | Diver | while IFS=$'\n' read -ra graphs ; do |
| 388 | element+=( $graphs ) |
||
| 389 | done <<< $member_elements |
||
| 390 | |||
| 391 | fa87ed65 | Diver | echo "multigraph vnx_emc_v3_calls_s" |
| 392 | e488bb05 | Diver | for ((i=0; i<$((LINES)); i++ )); do |
| 393 | echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+1]}"
|
||
| 394 | done |
||
| 395 | |||
| 396 | fa87ed65 | Diver | echo -e "\nmultigraph vnx_emc_v3_usec_call" |
| 397 | e488bb05 | Diver | for ((i=0; i<$((LINES)); i++ )); do |
| 398 | echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+3]}"
|
||
| 399 | done |
||
| 400 | |||
| 401 | fa87ed65 | Diver | echo -e "\nmultigraph vnx_emc_v3_op_percent" |
| 402 | e488bb05 | Diver | for ((i=0; i<$((LINES)); i++ )); do |
| 403 | echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+4]}"
|
||
| 404 | done |
||
| 405 | |||
| 406 | element=() |
||
| 407 | fa87ed65 | Diver | |
| 408 | #nfs.v4.op data |
||
| 409 | member_elements=$($SSH server_stats $server -monitor nfs.v4.op -count 1 -terminationsummary no -titles never | sed -ne 's/^.*v4/v4/p') |
||
| 410 | NUMCOL=5 |
||
| 411 | LINES=$(wc -l <<< $member_elements) |
||
| 412 | while IFS=$'\n' read -ra graphs ; do |
||
| 413 | element+=( $graphs ) |
||
| 414 | done <<< $member_elements |
||
| 415 | |||
| 416 | echo -e "\nmultigraph vnx_emc_v4_calls_s" |
||
| 417 | for ((i=0; i<$((LINES)); i++ )); do |
||
| 418 | echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+1]}"
|
||
| 419 | done |
||
| 420 | |||
| 421 | echo -e "\nmultigraph vnx_emc_v4_usec_call" |
||
| 422 | for ((i=0; i<$((LINES)); i++ )); do |
||
| 423 | echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+3]}"
|
||
| 424 | done |
||
| 425 | |||
| 426 | echo -e "\nmultigraph vnx_emc_v4_op_percent" |
||
| 427 | for ((i=0; i<$((LINES)); i++ )); do |
||
| 428 | echo "${server}_${element[i*$NUMCOL]}".value "${element[i*$NUMCOL+4]}"
|
||
| 429 | done |
||
| 430 | |||
| 431 | element=() |
||
| 432 | |||
| 433 | e488bb05 | Diver | #nfs.client data |
| 434 | echo -e "\nmultigraph vnx_emc_nfs_client_ops_s" |
||
| 435 | fa87ed65 | Diver | member_elements=$($SSH server_stats server_2 -monitor nfs.client -count 1 -terminationsummary no -titles never | sed -ne 's/^.*id=//p') |
| 436 | e488bb05 | Diver | NUMCOL=9 |
| 437 | fa87ed65 | Diver | LINES=$(wc -l <<< $member_elements) |
| 438 | e488bb05 | Diver | while IFS=$'\n' read -ra graphs; do |
| 439 | element+=($graphs) |
||
| 440 | done <<< $member_elements |
||
| 441 | for (( i=0; i<$((LINES)); i++ )); do |
||
| 442 | fa87ed65 | Diver | client=$( echo ${element[i*$NUMCOL]} | sed -ne 's/\./_/pg')
|
| 443 | e488bb05 | Diver | echo "${server}_${client}_r".value "${element[$i*$NUMCOL+2]}"
|
| 444 | echo "${server}_${client}_w".value "${element[$i*$NUMCOL+3]}"
|
||
| 445 | echo "${server}_${client}_t".value "${element[$i*$NUMCOL+1]}"
|
||
| 446 | echo "${server}_${client}_s".value "${element[$i*$NUMCOL+4]}"
|
||
| 447 | done |
||
| 448 | echo -e "\nmultigraph vnx_emc_nfs_client_kib_s" |
||
| 449 | for (( i=0; i<$((LINES)); i++ )); do |
||
| 450 | fa87ed65 | Diver | client=$( echo ${element[i*$NUMCOL]} | sed -ne 's/\./_/pg')
|
| 451 | e488bb05 | Diver | echo "${server}_${client}_r".value "${element[$i*$NUMCOL+6]}"
|
| 452 | echo "${server}_${client}_w".value "${element[$i*$NUMCOL+7]}"
|
||
| 453 | echo "${server}_${client}_t".value "${element[$i*$NUMCOL+5]}"
|
||
| 454 | done |
||
| 455 | echo -e "\nmultigraph vnx_emc_nfs_client_avg_usec" |
||
| 456 | for (( i=0; i<$((LINES)); i++ )); do |
||
| 457 | fa87ed65 | Diver | client=$( echo ${element[i*$NUMCOL]} | sed -ne 's/\./_/pg')
|
| 458 | e488bb05 | Diver | echo "${server}_${client}".value "${element[$i*$NUMCOL+8]}"
|
| 459 | done |
||
| 460 | 31d3dccb | Diver | fi |
| 461 | e488bb05 | Diver | done |
| 462 | if [ -z $nas_server_ok ]; then |
||
| 463 | echo "No active data movers!" |
||
| 464 | exit 1 |
||
| 465 | fi |
||
| 466 | exit 0 |
