Output of a Bash command

This support forum board is for support questions relating to Nagios XI, our flagship commercial network monitoring solution.
Locked
mindspring
Posts: 117
Joined: Thu Jul 19, 2012 10:24 am

Output of a Bash command

Post by mindspring »

Hi There, I am new to customising a command to be used on NagiosXI and hoping you can help.

The command I run gives me the CPU usage on a cell phone. I want to be able to report on it and send alerts based on warnings and critical.

The command is:

Code: Select all

shell> adb -s 43a9ccab7d64 shell dumpsys cpuinfo 

Code: Select all

The output is below:

Load: 6.12 / 6.37 / 6.44
CPU usage from 1220775ms to 316836ms ago (2018-11-28 10:52:33.317 to 2018-11-28 11:07:37.256):
  52% 3414/com.whatsapp: 45% user + 6.7% kernel / faults: 516197 minor 1870 major
  50% 8360/com.android.systemui: 47% user + 3% kernel / faults: 938424 minor 69 major
  23% 1390/system_server: 13% user + 9.5% kernel / faults: 792718 minor 250 major
  5.6% 448/surfaceflinger: 2.7% user + 2.9% kernel / faults: 33070 minor 31 major
  2.3% 17103/com.c2b.notificationrouter: 1.6% user + 0.7% kernel / faults: 253200 minor 25 major
  1.7% 2358/com.xiaomi.xmsf: 1.2% user + 0.4% kernel / faults: 260727 minor 89 major
  1.6% 2178/com.google.android.ext.services: 0.9% user + 0.6% kernel / faults: 319060 minor 8 major
  1.2% 1555/adbd: 0.3% user + 0.8% kernel / faults: 7498 minor 3 major
  1% 276/mmc-cmdqd/0: 0% user + 1% kernel
  0.8% 348/logd: 0.4% user + 0.4% kernel / faults: 4454 minor 71 major
  0.8% 25056/com.google.android.vpntether: 0.3% user + 0.4% kernel / faults: 78004 minor
  0.4% 2347/com.miui.daemon: 0.2% user + 0.2% kernel / faults: 17959 minor 7 major
  0.4% 532/mdss_fb0: 0% user + 0.4% kernel
  0.4% 322/kworker/0:1H: 0% user + 0.4% kernel
  0.4% 26254/kworker/u8:6: 0% user + 0.4% kernel
  0.4% 3/ksoftirqd/0: 0% user + 0.4% kernel
  0.3% 31930/kworker/u8:1: 0% user + 0.3% kernel
  0.3% 2687/kworker/u8:4: 0% user + 0.3% kernel
  0.3% 585/jbd2/dm-1-8: 0% user + 0.3% kernel
  0.3% 11134/kworker/u8:5: 0% user + 0.3% kernel
  0.2% 133/kswapd0: 0% user + 0.2% kernel
  0.2% 7/rcu_preempt: 0% user + 0.2% kernel
  0% 643/media.extractor: 0% user + 0% kernel / faults: 9011 minor 146 major
  0.1% 1580/VosRXThread: 0% user + 0.1% kernel
  0.1% 271/cfinteractive: 0% user + 0.1% kernel
  0% 644/mediaserver: 0% user + 0% kernel / faults: 3050 minor 65 major
  0.1% 1890/com.google.android.gms.persistent: 0% user + 0% kernel / faults: 23472 minor 185 major
  0.1% 3899/com.google.android.inputmethod.latin: 0% user + 0% kernel / faults: 3187 minor 17 major
  0.1% 447/servicemanager: 0% user + 0% kernel / faults: 3059 minor
  0% 2509/com.miui.home: 0% user + 0% kernel / faults: 2635 minor 23 major
  0% 1//init: 0% user + 0% kernel / faults: 5109 minor
  0% 10/rcuop/0: 0% user + 0% kernel
  0% 2424/com.miui.whetstone: 0% user + 0% kernel / faults: 3014 minor 24 major

I only want to report on these two percentages though.

Code: Select all

 52% 3414/com.whatsapp: 45% user + 6.7% kernel / faults: 516197 minor 1870 major
  50% 8360/com.android.systemui: 47% user + 3% kernel / faults: 938424 minor 69 major

Could you please guide me as to how I would go about doing this?

Many thanks.
User avatar
lmiltchev
Bugs find me
Posts: 13589
Joined: Mon May 23, 2011 12:15 pm

Re: Output of a Bash command

Post by lmiltchev »

Writing a custom plugin is out of scope of nagios support, but you could use a bash script, similar to the one below:

Code: Select all

#!/bin/bash

whatsapp=`adb -s 43a9ccab7d64 shell dumpsys cpuinfo | grep com.whatsapp | awk '{print $1}' | cut -d '%' -f 1`

if [[ $whatsapp > $1 ]] && [[ $whatsapp < $2 ]]; then
  echo "Warning: CPU=$whatsapp%"
  exit 1
elif [[ $whatsapp > $2 ]]; then
  echo "Critical: CPU=$whatsapp%"
  exit 2
else
  echo "OK: CPU=$whatsapp%"
  exit 0
fi
Make it executable, and run it with passing two arguments (one for the warning threshold and one for the critical).

Example:

Code: Select all

./check_whatsapp.sh 80 90
You can create a second script for com.android.systemui in a similar way. If you need more options, e.g. help menu, performance data output, etc. you would need to modify your custom plugin according to the nagios plugin development guidelines:

https://nagios-plugins.org/doc/guidelines.html

This is just an example (a good starting point).

Hope this helps.
Be sure to check out our Knowledgebase for helpful articles and solutions!
mindspring
Posts: 117
Joined: Thu Jul 19, 2012 10:24 am

Re: Output of a Bash command

Post by mindspring »

Thanks for your advice.

I started working with a developer to help me with the script.
scottwilkerson
DevOps Engineer
Posts: 19396
Joined: Tue Nov 15, 2011 3:11 pm
Location: Nagios Enterprises
Contact:

Re: Output of a Bash command

Post by scottwilkerson »

mindspring wrote:Thanks for your advice.

I started working with a developer to help me with the script.
Sounds good!
Former Nagios employee
Creator:
Human Design Website
Get Your Human Design Chart
Locked