// Author: Ricardas Stoma // Company: Kolmisoft // Year: 2017 // About: Script gets system info and sends to specified URL #define SCRIPT_VERSION "1.2" #define SCRIPT_NAME "m2_system_stats_report" #define REPORT_URL "http://support.kolmisoft.com/monitoring/report_from_server" #include "m2_functions.c" int main(int argc, char *argv[]) { FILE *pipe; char var1[256] = ""; char var2[256] = ""; char var3[256] = ""; char var4[256] = ""; char buffer[256] = ""; char url_buffer[3500] = ""; char system_cmd[4096] = ""; // Starting sript m2_init("Starting M2 System Stats Report script\n"); // Initialize URL sprintf(url_buffer, "%s", REPORT_URL); // Get CPU core count pipe = popen("cat /proc/cpuinfo | grep processor | wc -l", "r"); if (pipe == NULL) return 1; fgets(buffer, 256, pipe); buffer[strlen(buffer) - 1] = 0; strcat(url_buffer, "?cpu_cores="); strcat(url_buffer, buffer); m2_log("cpu_cores = %s\n", buffer); pclose(pipe); // Get load average pipe = popen("top -n 1 | grep -Po 'load average: [0-9\\.]+' | grep -Po '[0-9\\.]+'", "r"); if (pipe == NULL) return 1; fgets(buffer, 256, pipe); buffer[strlen(buffer) - 1] = 0; strcat(url_buffer, "&load_avg="); strcat(url_buffer, buffer); m2_log("load_avg = %s\n", buffer); pclose(pipe); // Get memory related information pipe = popen("free -m | grep -Po '\\d+' | head -n 5", "r"); if (pipe == NULL) return 1; fscanf(pipe, "%s %s %s %s %s", var1, var2, var3, var4, var4); // RAM total strcat(url_buffer, "&ram_total="); strcat(url_buffer, var1); m2_log("ram_total = %s\n", var1); // RAM used strcat(url_buffer, "&ram_used="); strcat(url_buffer, var2); m2_log("ram_used = %s\n", var2); // RAM free strcat(url_buffer, "&ram_free="); strcat(url_buffer, var3); m2_log("ram_free = %s\n", var3); // RAM buffers strcat(url_buffer, "&ram_buffers="); strcat(url_buffer, var4); m2_log("ram_buffers = %s\n", var4); pclose(pipe); // MySQL process running? pipe = popen("service mysqld status | grep -o 'running'", "r"); if (pipe == NULL) return 1; fgets(buffer, 256, pipe); strcat(url_buffer, "&mysql="); if (strstr(buffer, "running")) { strcat(url_buffer, "1"); m2_log("mysql running = 1\n"); } else { strcat(url_buffer, "0"); m2_log("mysql running = 0\n"); } pclose(pipe); // Apache process running? pipe = popen("service httpd status | grep -o 'running'", "r"); if (pipe == NULL) return 1; fgets(buffer, 256, pipe); strcat(url_buffer, "&httpd="); if (strstr(buffer, "running")) { strcat(url_buffer, "1"); m2_log("httpd running = 1\n"); } else { strcat(url_buffer, "0"); m2_log("httpd running = 0\n"); } pclose(pipe); // Freeswitch process running? pipe = popen("service freeswitch status | grep -o 'running'", "r"); if (pipe == NULL) return 1; fgets(buffer, 256, pipe); strcat(url_buffer, "&freeswitch="); if (strstr(buffer, "running")) { strcat(url_buffer, "1"); m2_log("freeswitch running = 1\n"); } else { strcat(url_buffer, "0"); m2_log("freeswitch running = 0\n"); } pclose(pipe); // HDD usage int hdd_usage = m2_get_hdd_usage(); sprintf(buffer, "%d", hdd_usage); strcat(url_buffer, "&hdd_usage="); strcat(url_buffer, buffer); m2_log("hdd_usage = %d %%\n", hdd_usage); // Send data m2_log("HTTP Request:\n"); sprintf(system_cmd, "/usr/bin/wget --no-check-certificate --spider -q -t 1 --timeout=10 '%s'", url_buffer); m2_log("%s\n", system_cmd); system(system_cmd); m2_log("Script finished\n"); return 0; }