Poniższe skrypty dają możliwość monitorowania
- statusu całego systemu (ceph status)
- ilości aktywnych OSD
- ilości aktywnych monitorów
- ilości aktywnych RGW
- udostępnia nagios performance data (wykresy)
Skrypt napisałem w JavaScripcie, dlatego potrzebujemy nodejs’a. Zakładam że nagios-nrpe-server jest już skonfigurowany.
Instalację wykonujemy na serwerze na którym jest możliwośc wykonania polecenia ceph status.
Kroki które trzeba wykonać.
1. Należy utworzyć katalog /usr/local/nrpe/ceph/:
1 |
mkdir -p /usr/local/nrpe/ceph/ |
2. W katalogu /usr/local/nrpe/ceph/ tworzymy plik ceph_status.js, oraz uzupełniamy zmienne ALL_MON i ALL_RGW:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
var status = process.argv.slice(2); status = JSON.parse(status); //liczba wszystkich monitorów ALL_MON = 3; //liczba wszystkich node'ow rados gateway, jeżeli nie mamy to wpisujemy 0 ALL_RGW = 3; OSD_COUNT = status.osdmap.osdmap.num_osds OSD_UP = status.osdmap.osdmap.num_up_osds; STATUS = status.health.status; MON_COUNT = status.monmap.mons.length; if (typeof status.servicemap.services.rgw === 'undefined') { RGW_COUNT = "0"; } else { RGW_COUNT = status.servicemap.services.rgw.daemons; } var n = 0; for (var _ in RGW_COUNT) n++; RGW_COUNT = n - 1; if( ALL_RGW > 0 ) { console.log("STATUS: "+STATUS+", OSD UP: "+OSD_UP+"/"+OSD_COUNT+", MON UP: "+MON_COUNT+"/"+ALL_MON+", RGW UP: "+RGW_COUNT+"/"+ALL_RGW+" | OSD_UP="+OSD_UP+", MON_UP="+MON_COUNT+", RGW_UP="+RGW_COUNT) } else { console.log("STATUS: "+STATUS+", OSD UP: "+OSD_UP+"/"+OSD_COUNT+", MON UP: "+MON_COUNT+"/"+ALL_MON+" | OSD_UP="+OSD_UP+", MON_UP="+MON_COUNT) } if ( OSD_COUNT == OSD_UP && STATUS == "HEALTH_OK" && MON_COUNT == ALL_MON && RGW_COUNT == ALL_RGW) { process.exit(0); } else { process.exit(2); } |
3. W katalogu /usr/local/nrpe/ceph/ tworzymy plik ceph_status.sh
1 2 3 4 5 6 7 |
#!/bin/bash status=$(/usr/bin/ceph status --format json | tail -1) nodejs /usr/local/nrpe/ceph/ceph_status.js ${status} exit $? |
4. W katalogu /etc/nagios/nrpe.d/ tworzymy plik check_ceph.cfg
1 |
command[check_ceph]=sudo /usr/local/nrpe/ceph/ceph_status.sh |
5. Do /etc/sudoers dodajemy:
1 |
nagios ALL=(ALL) NOPASSWD: /usr/local/nrpe/ceph/ceph_status.sh |
6. Restartujemy nagios-nrpe-server.
Przykładowy wynik: