Puncte:0

De ce acest script bash declanșează atât de multe pozitive false pentru monitorizarea utilizării memoriei?

drapel fi

Monitorizez sute de servere atât dedicate, cât și virtuale folosind următorul script:

#!/bin/bash

PATH=/usr/lib64/ccache:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

prag=90

serverip=$($(care ifconfig) | grep -Eo 'inet (adresa:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9] ]*\.){3}[0-9]*' | grep -v '127.0.0.1' | head -1)
memused=$(free | awk '/Mem/{printf("Utilizare RAM: %.2f%\n"), $3/$2*100}' | awk '{print $3}' | cut -d"." - f1)

if [ "$memused" -gt "$threshold" ]
atunci
    CTIME=$(data +%Y-%m-%d-%H%M%S)
    ps aux > /root/.example/logs/lowmem-"${CTIME}"-ps.log
    top -n 1 -o %MEM -c > /root/.example/logs/lowmem-"${CTIME}"-top.log
    free -m > /root/.example/logs/lowmem-"${CTIME}"-free.log
    mysqladmin proc -v status > /root/.example/logs/lowmem-"${CTIME}"-mysqlproc.log
    bash /example/general/slack.sh "#server-alerts" ":warning: $(hostname) - ${serverip} - Utilizarea memoriei a atins 90% - Verificați jurnalele /root/.example/logs/lowmem-${ CTIME} \n \`\`\`$(head -1 /root/.example/logs/lowmem-"${CTIME}"-free.log) \n $(head -2 /root/.example/logs /lowmem-"${CTIME}"-free.log | tail -1) \n $(tail -1 /root/.example/logs/lowmem-"${CTIME}"-free.log)\`\` \`"
    crontab -l | grep -v '/example/mon_mem.sh' | crontab -
    dormi 900
    crontab -l | { pisică; echo "* * * * * bash /example/mon_mem.sh"; } | crontab -
fi

Deși funcționează în majoritatea cazurilor, primim aleatoriu false pozitive, serverele sale complet aleatorii și nu sunt în concordanță cu fiecare server, așa că un server s-ar putea declanșa, dar apoi nu se declanșează din nou (fals)

Exemplu de fals pozitiv:

totalul folosit gratuit partajat buff/cache disponibil 
Mem: 2048 345 1580 27 122 1674 
Schimb: 2048 0 2048

A venit o alertă de pe acest server, dar puteți vedea că numai 345 MB au fost în uz.

anx avatar
drapel fr
anx
O cantitate mică de memorie „liberă” este *bună*. Dacă doriți să avertizați asupra presiunii memoriei, verificați în schimb numărul „disponibil”. De asemenea, utilizați aceeași ieșire folosită pentru a *declanșa* avertismentul pentru a-l include în *text* de avertizare pentru o explicație mai utilă (sunați gratuit de două ori, cu rezultate probabil diferite).
Puncte:1
drapel fr
anx

3 probleme:

  1. Tu suni liber de două ori: o dată pentru declanșarea avertismentul, o singură dată pentru trimiterea raportului. Cifrele se vor fi schimbat între ele. Stocați rezultatul (într-o variabilă) și preluați aceleași date de două ori.

  2. Memorie „utilizată”. ar trebui să se apropie de cantitatea totală de memorie, iar „liber” ar trebui să se apropie de zero, întotdeauna. Daca ai nefolosit memorie, asta înseamnă că ați irosit resurse care, deși nu sunt alocate, ar trebui să servească cel puțin ca cache.

    Vă recomand să schimbați memorat linie care compară în prezent a doua cu a treia coloană ($3/$2) pentru a compara în schimb prima cu ultima coloană.

  3. Metoda dvs. de livrare a mesajelor pare să piardă formatarea. Poate doriți să vă verificați metoda de livrare (slack.sh) pentru a reda intrarea în monospațiu sau înlocuiți tab-uri și spații cu distanțiere adecvate.

    Iată cum ar trebui să arate tabelul:

    total folosit liber impartit buff/cache disponibil
    Mem: 2048 345 1580 27 122 1674
    Schimbați: 2048 0 2048

    The cinci numerele încep cu memoria „totală” și, dacă este ceva, cu ultimul numărul este cel de care ar trebui să-ți pese.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.