X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fprocevent.c;h=a7a0107a3294f566829d862685ed484bc54527b5;hb=936b9757a84885a9e86e7df774d1c82c74f22bb8;hp=78c9182b84b665d6c8133a9da6949e2711b1f327;hpb=b5d7a870dea53f562ad275adf01040896fdbab8d;p=collectd.git diff --git a/src/procevent.c b/src/procevent.c index 78c9182b..a7a0107a 100644 --- a/src/procevent.c +++ b/src/procevent.c @@ -136,14 +136,14 @@ static circbuf_t ring; static processlist_t *processlist_head = NULL; static int event_id = 0; -static const char *config_keys[] = {"BufferLength", "Process", "RegexProcess"}; +static const char *config_keys[] = {"BufferLength", "Process", "ProcessRegex"}; static int config_keys_num = STATIC_ARRAY_SIZE(config_keys); /* * Private functions */ -static int gen_message_payload(int state, int pid, char *process, +static int gen_message_payload(int state, long pid, char *process, long long unsigned int timestamp, char **buf) { const unsigned char *buf2; yajl_gen g; @@ -206,7 +206,7 @@ static int gen_message_payload(int state, int pid, char *process, event_name_len = event_name_len + 13; // "process", 3 spaces, 2 parentheses and null-terminator memset(json_str, '\0', DATA_MAX_NAME_LEN); - snprintf(json_str, event_name_len, "process %s (%d) %s", process, pid, + snprintf(json_str, event_name_len, "process %s (%ld) %s", process, pid, (state == 0 ? PROCEVENT_EVENT_NAME_DOWN_VALUE : PROCEVENT_EVENT_NAME_UP_VALUE)); @@ -321,7 +321,7 @@ static int gen_message_payload(int state, int pid, char *process, alarm_condition_len + 25; // "process", "state", "change", 4 spaces, 2 // parentheses and null-terminator memset(json_str, '\0', DATA_MAX_NAME_LEN); - snprintf(json_str, alarm_condition_len, "process %s (%d) state change", + snprintf(json_str, alarm_condition_len, "process %s (%ld) state change", process, pid); if (yajl_gen_string(g, (u_char *)json_str, strlen(json_str)) != @@ -346,9 +346,8 @@ static int gen_message_payload(int state, int pid, char *process, goto err; if (yajl_gen_string( - g, - (u_char *)(state == 0 ? PROCEVENT_EVENT_SEVERITY_CRITICAL_VALUE - : PROCEVENT_EVENT_SEVERITY_NORMAL_VALUE), + g, (u_char *)(state == 0 ? PROCEVENT_EVENT_SEVERITY_CRITICAL_VALUE + : PROCEVENT_EVENT_SEVERITY_NORMAL_VALUE), strlen((state == 0 ? PROCEVENT_EVENT_SEVERITY_CRITICAL_VALUE : PROCEVENT_EVENT_SEVERITY_NORMAL_VALUE))) != yajl_gen_status_ok) @@ -392,7 +391,7 @@ static int gen_message_payload(int state, int pid, char *process, specific_problem_len + 13; // "process", 3 spaces, 2 parentheses and null-terminator memset(json_str, '\0', DATA_MAX_NAME_LEN); - snprintf(json_str, specific_problem_len, "process %s (%d) %s", process, pid, + snprintf(json_str, specific_problem_len, "process %s (%ld) %s", process, pid, (state == 0 ? PROCEVENT_SPECIFIC_PROBLEM_DOWN_VALUE : PROCEVENT_SPECIFIC_PROBLEM_UP_VALUE)); @@ -407,9 +406,8 @@ static int gen_message_payload(int state, int pid, char *process, goto err; if (yajl_gen_string( - g, - (u_char *)(state == 0 ? PROCEVENT_VF_STATUS_CRITICAL_VALUE - : PROCEVENT_VF_STATUS_NORMAL_VALUE), + g, (u_char *)(state == 0 ? PROCEVENT_VF_STATUS_CRITICAL_VALUE + : PROCEVENT_VF_STATUS_NORMAL_VALUE), strlen((state == 0 ? PROCEVENT_VF_STATUS_CRITICAL_VALUE : PROCEVENT_VF_STATUS_NORMAL_VALUE))) != yajl_gen_status_ok) @@ -448,13 +446,13 @@ err: } // Does /proc//comm contain a process name we are interested in? -static processlist_t *process_check(int pid) { +static processlist_t *process_check(long pid) { int len, is_match, retval; char file[BUFSIZE]; FILE *fh; char buffer[BUFSIZE]; - len = snprintf(file, sizeof(file), PROCDIR "/%d/comm", pid); + len = snprintf(file, sizeof(file), PROCDIR "/%ld/comm", pid); if ((len < 0) || (len >= BUFSIZE)) { WARNING("procevent process_check: process name too large"); @@ -463,14 +461,14 @@ static processlist_t *process_check(int pid) { if (NULL == (fh = fopen(file, "r"))) { // No /proc//comm for this pid, just ignore - DEBUG("procevent plugin: no comm file available for pid %d", pid); + DEBUG("procevent plugin: no comm file available for pid %ld", pid); return NULL; } retval = fscanf(fh, "%[^\n]", buffer); if (retval < 0) { - WARNING("procevent process_check: unable to read comm file for pid %d", + WARNING("procevent process_check: unable to read comm file for pid %ld", pid); fclose(fh); return NULL; @@ -479,7 +477,7 @@ static processlist_t *process_check(int pid) { // Now that we have the process name in the buffer, check if we are // even interested in it if (ignorelist_match(ignorelist, buffer) != 0) { - DEBUG("procevent process_check: ignoring process %s (%d)", buffer, pid); + DEBUG("procevent process_check: ignoring process %s (%ld)", buffer, pid); fclose(fh); return NULL; } @@ -509,12 +507,12 @@ static processlist_t *process_check(int pid) { is_match = (strcmp(buffer, pl->process) == 0 ? 1 : 0); if (is_match == 1) { - DEBUG("procevent plugin: process %d name match for %s", pid, buffer); + DEBUG("procevent plugin: process %ld name match for %s", pid, buffer); if (pl->pid == pid) { // this is a match, and we've already stored the exact pid/name combo DEBUG("procevent plugin: found exact match with name %s, PID %ld for " - "incoming PID %d", + "incoming PID %ld", pl->process, pl->pid, pid); match = pl; break; @@ -522,7 +520,7 @@ static processlist_t *process_check(int pid) { // this is a match, and we've found a candidate processlist_t to store // this new pid/name combo DEBUG("procevent plugin: reusing pl object with PID %ld for incoming " - "PID %d", + "PID %ld", pl->pid, pid); pl->pid = pid; match = pl; @@ -532,7 +530,7 @@ static processlist_t *process_check(int pid) { // claimed this pid/name combo, // so keep looking DEBUG("procevent plugin: found pl object with matching name for " - "incoming PID %d, but object is in use by PID %ld", + "incoming PID %ld, but object is in use by PID %ld", pid, pl->pid); match = pl; continue; @@ -547,9 +545,9 @@ static processlist_t *process_check(int pid) { // contained a pid/name combo, // then make a new one and add it to the linked list - DEBUG( - "procevent plugin: allocating new processlist_t object for PID %d (%s)", - pid, buffer); + DEBUG("procevent plugin: allocating new processlist_t object for PID %ld " + "(%s)", + pid, buffer); processlist_t *pl2; char *process; @@ -587,7 +585,7 @@ static processlist_t *process_check(int pid) { } // Does our map have this PID or name? -static processlist_t *process_map_check(int pid, char *process) { +static processlist_t *process_map_check(long pid, char *process) { processlist_t *pl; pthread_mutex_lock(&procevent_list_lock); @@ -1029,7 +1027,7 @@ static int procevent_config(const char *key, const char *value) /* {{{ */ buffer_length = atoi(value); } else if (strcasecmp(key, "Process") == 0) { ignorelist_add(ignorelist, value); - } else if (strcasecmp(key, "RegexProcess") == 0) { + } else if (strcasecmp(key, "ProcessRegex") == 0) { #if HAVE_REGEX_H status = ignorelist_add(ignorelist, value); @@ -1039,7 +1037,7 @@ static int procevent_config(const char *key, const char *value) /* {{{ */ } #else WARNING("procevent plugin: The plugin has been compiled without support " - "for the \"RegexProcess\" option."); + "for the \"ProcessRegex\" option."); #endif } else { return (-1); @@ -1048,7 +1046,8 @@ static int procevent_config(const char *key, const char *value) /* {{{ */ return (0); } /* }}} int procevent_config */ -static void procevent_dispatch_notification(int pid, const char *type, /* {{{ */ +static void procevent_dispatch_notification(long pid, + const char *type, /* {{{ */ gauge_t value, char *process, long long unsigned int timestamp) { char *buf = NULL; @@ -1083,7 +1082,7 @@ static void procevent_dispatch_notification(int pid, const char *type, /* {{{ */ DEBUG("procevent plugin: notification message: %s", n.meta->nm_value.nm_string); - DEBUG("procevent plugin: dispatching state %d for PID %d (%s)", (int)value, + DEBUG("procevent plugin: dispatching state %d for PID %ld (%s)", (int)value, pid, process); plugin_dispatch_notification(&n); @@ -1123,9 +1122,10 @@ static int procevent_read(void) /* {{{ */ procevent_dispatch_notification(ring.buffer[ring.tail][0], "gauge", ring.buffer[ring.tail][1], pl->process, ring.buffer[ring.tail][3]); - DEBUG("procevent plugin: PID %d (%s) EXITED, removing PID from process " - "list", - pl->pid, pl->process); + DEBUG( + "procevent plugin: PID %ld (%s) EXITED, removing PID from process " + "list", + pl->pid, pl->process); pl->pid = -1; pl->last_status = -1; }