Merge pull request #139 from Gjum/wb-colored-cpu-usage
Add CPU usage color thresholds
This commit is contained in:
commit
8e852fa945
@ -412,7 +412,10 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
cfg_opt_t usage_opts[] = {
|
||||
CFG_STR("format", "%usage", CFGF_NONE),
|
||||
CFG_FLOAT("max_threshold", 95, CFGF_NONE),
|
||||
CFG_FLOAT("degraded_threshold", 90, CFGF_NONE),
|
||||
CFG_CUSTOM_ALIGN_OPT,
|
||||
CFG_CUSTOM_COLOR_OPTS,
|
||||
CFG_CUSTOM_MIN_WIDTH_OPT,
|
||||
CFG_CUSTOM_SEPARATOR_OPT,
|
||||
CFG_CUSTOM_SEP_BLOCK_WIDTH_OPT,
|
||||
@ -725,7 +728,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
CASE_SEC("cpu_usage") {
|
||||
SEC_OPEN_MAP("cpu_usage");
|
||||
print_cpu_usage(json_gen, buffer, cfg_getstr(sec, "format"));
|
||||
print_cpu_usage(json_gen, buffer, cfg_getstr(sec, "format"), cfg_getfloat(sec, "max_threshold"), cfg_getfloat(sec, "degraded_threshold"));
|
||||
SEC_CLOSE_MAP;
|
||||
}
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ void print_wireless_info(yajl_gen json_gen, char *buffer, const char *interface,
|
||||
void print_run_watch(yajl_gen json_gen, char *buffer, const char *title, const char *pidfile, const char *format, const char *format_down);
|
||||
void print_path_exists(yajl_gen json_gen, char *buffer, const char *title, const char *path, const char *format, const char *format_down);
|
||||
void print_cpu_temperature_info(yajl_gen json_gen, char *buffer, int zone, const char *path, const char *format, int);
|
||||
void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format);
|
||||
void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format, const float max_threshold, const float degraded_threshold);
|
||||
void print_eth_info(yajl_gen json_gen, char *buffer, const char *interface, const char *format_up, const char *format_down);
|
||||
void print_load(yajl_gen json_gen, char *buffer, const char *format, const float max_threshold);
|
||||
void print_volume(yajl_gen json_gen, char *buffer, const char *fmt, const char *fmt_muted, const char *device, const char *mixer, int mixer_idx);
|
||||
|
@ -381,12 +381,25 @@ specified thermal zone is getting too hot. Defaults to 75 degrees C.
|
||||
|
||||
=== CPU Usage
|
||||
|
||||
Gets the percentual CPU usage from +/proc/stat+ (Linux) or +sysctl(3)+ (FreeBSD/OpenBSD).
|
||||
Gets the percentual CPU usage from +/proc/stat+ (Linux) or +sysctl(3)+
|
||||
(FreeBSD/OpenBSD).
|
||||
|
||||
It is possible to define a max_threshold that will color the load
|
||||
value red in case the CPU average over the last interval is getting
|
||||
higher than the configured threshold. Defaults to 95.
|
||||
|
||||
It is possible to define a degraded_threshold that will color the load
|
||||
value yellow in case the CPU average over the last interval is getting
|
||||
higher than the configured threshold. Defaults to 90.
|
||||
|
||||
*Example order*: +cpu_usage+
|
||||
|
||||
*Example format*: +%usage+
|
||||
|
||||
*Example max_threshold*: +75+
|
||||
|
||||
*Example degraded_threshold*: +25+
|
||||
|
||||
=== Load
|
||||
|
||||
Gets the system load (number of processes waiting for CPU time in the last
|
||||
|
@ -41,11 +41,12 @@ static int prev_idle = 0;
|
||||
* percentage.
|
||||
*
|
||||
*/
|
||||
void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format) {
|
||||
void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format, const float max_threshold, const float degraded_threshold) {
|
||||
const char *walk;
|
||||
char *outwalk = buffer;
|
||||
int curr_user = 0, curr_nice = 0, curr_system = 0, curr_idle = 0, curr_total;
|
||||
int diff_idle, diff_total, diff_usage;
|
||||
bool colorful_output = false;
|
||||
|
||||
#if defined(LINUX)
|
||||
static char statpath[512];
|
||||
@ -101,10 +102,21 @@ void print_cpu_usage(yajl_gen json_gen, char *buffer, const char *format) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (diff_usage >= max_threshold) {
|
||||
START_COLOR("color_bad");
|
||||
colorful_output = true;
|
||||
} else if (diff_usage >= degraded_threshold) {
|
||||
START_COLOR("color_degraded");
|
||||
colorful_output = true;
|
||||
}
|
||||
|
||||
if (BEGINS_WITH(walk + 1, "usage")) {
|
||||
outwalk += sprintf(outwalk, "%02d%s", diff_usage, pct_mark);
|
||||
walk += strlen("usage");
|
||||
}
|
||||
|
||||
if (colorful_output)
|
||||
END_COLOR;
|
||||
}
|
||||
|
||||
OUTPUT_FULL_TEXT(buffer);
|
||||
|
Loading…
Reference in New Issue
Block a user