Icinga Check Scripts
Various check scripts for use in icinga.
All scripts support option --help, so call ./scriptname --help for
more information.
load_per_cpu.sh
Icinga plugin to check load average per CPU. Shows 1min, 5min 15min average per CPU. Different to check_load, the load is divided by the number of CPU units and therefore normalized. So the same warning and critical levels fit for any server.
If a server's load is often high, you can find tipps in Isolating Linux High System Load, in short words:
- see the load average in
uptime - check system logs with
dmesg - see
vmstat:- high
WA(wait) column: CPU is often waiting, you probably have high disk load- check
swap→siandso, if they are often much above 0, you are out of memory- check memory usage of processes with
ps awwlx --sort=vsz - solution: add more memory
- check memory usage of processes with
- check
- if
cpu→ID(idle) is around 0, your CPU is overloaded- if
SY(system) is high, there could be large directories, e.g. mail spam - if
SY(system) is high, it could be the firewall iptables - if
US(user-space) is high, check withtopfor CPU consuming processes
- if
- if
io→biandbo(in/out) are high, check withiostatorsudo iotop
- high
mountpoint.sh
Icinga plugin to check whether a given mountpoint is available. Detects problems, e.g. with glusterfs: In case of a problem, there is an error message such as "socket not connected". Called with path to check.
diskio.sh
Icinga plugin to check whether a given path is writable and checks the
performance of the given path. Detects problems with the filesystem or
specific io performance. Writes a test file using dd and reports
write speed. It is recommended to use a subdirectory tmp for writing
test files.
gluster-geo-replication.sh
Icinga plugin to check gluster geo replication. Returns OK, if no connection is Faulty and one connection is Active. Returns CRITICAL, if one connection is Faulty- Returns WARNING, if no connection is Active.
Installation
Install
Checkout to a path, e.g. /opt/icinga-checks:
cd /opt
sudo git co https://mrw.sh/admin-scripts/icinga-checks.git
Update
cd /opt/icinga-checks
sudo git pull
Configure
Go to Icinga Director, in Commands add one:
- Command type:
Plugin Check Command - Command name:
load per cpu - Command:
check_by_ssh
After adding the command, add the following parameters:
-C /opt/icinga-checks/load_per_cpu.sh
-H $host.name$
-oStrictHostKeyChecking=no
The last argument -oStrictHostKeyChecking=no is a key only ith no value.
To check mountpoint of /var/volumes use argument name -C with value /opt/icinga-checks/mountpount.sh /var/volumes.
Then create a new Service Template, give it a name. e.g. load per cpu and assign the check command just created.
Finally add a service, again you can use the same name and import the template just created, then assign the hosts to check. I use a host template for all linux servers, so the command is run in each of them.
Don't forget to deploy the activity log in Icinga Director.