Просмотр поста

.
Swank
Сексуальность валенка

Вот если кому интересно простой пример мониторинга чтоли

#include <stdio.h>
#include <unistd.h>

char cpuUsage();
int memTotal();
int memFree();

int main() {
    while(1) {
        
        printf("CPU: %d%%\nMEM: %d/%d\n", cpuUsage(), memTotal(), memFree());
        fflush(stdout);
        sleep(1);
    }
   return 0;
}


char cpuUsage() {
    char load = 0;
    unsigned long total, c, n, s, i = 0;
    unsigned long c1, n1, s1, i1 = 0; 

    FILE *f = fopen("/proc/stat", "r");
    if (fscanf(f, "cpu %lu %lu %lu %lu", &c, &n, &s, &i) < 4) {
        fclose(f);
        return -1;
    }
    fclose(f);
    sleep(1);
    f = fopen("/proc/stat", "r");
    if (fscanf(f, "cpu %lu %lu %lu %lu", &c1, &n1, &s1, &i1) < 4) {
        fclose(f);
        return -1;
    }
    fclose(f);

    c = c1-c;
    n = n1 -n;
    s = s1 -s;
    i = i1 - i;

    total = c + n + s + i;
    load =  100.0 * ((c + n + s)/(double)total);
    return load;
}

int memTotal() {
 unsigned long memtotal;
    FILE *fp;

fp = fopen("/proc/meminfo", "r");
if (!fp)
return -1;
if(fscanf(fp, "MemTotal:%lu kB\n", &memtotal) != 1) {
        fclose(fp);
        return -1;
}
fclose(fp);
return memtotal / 1024;
}

int memFree() {
int memFree;
    int ignore;
FILE *fp;

fp = fopen("/proc/meminfo", "r");
if (!fp)
return -1;

if(fscanf(fp, "MemTotal:%llu kB\n", &ignore) != 1) {
        fclose(fp);
return -1;
}

if(fscanf(fp, "MemFree:%lu kB\n", &memFree) != 1) {
        fclose(fp);
        return -1;
}
fclose(fp);
return memFree / 1024;
}

Скомпилить можно так:
gcc file.c
Запустить:
chmod +x a.out
./a.out

Можно прописать условие на отправку письма на емаил, если cpuUsage()> 95% or mrmFree() <(memTotal /8)
Отправляем письмо "[server]highload, help me pls"