mirror of
https://github.com/netdata/netdata.git
synced 2025-04-15 10:04:15 +00:00

This PR was created to fix #3414, here I am completing the job initiated by Christopher, among the newest features that we are bring we have JSON inside the core - We are bringing to the core the capacity to work with JSON files, this is available either using the JSON-C library case it is present in the system or using JSMN library that was incorporated to our core. The preference is to have JSON-C, because it is a more complete library, but case the user does not have the library installed we are keeping the JSMN for we do not lose the feature. Health LIST - We are bringing more one command to the Health API, now with the LIST it is possible to get in JSON format the alarms active with Netdata. Health reorganized - Previously we had duplicated code in different files, this PR is fixing this (Thanks @cakrit !), the Health is now better organized. Removing memory leak - The first implementation of the json.c was creating SILENCERS without to link it in anywhere. Now it has been linked properly. Script updated - We are bringing some changes to the script that tests the Health. This PR also fixes the race condition created by the previous new position of the SILENCERS creation, I had to move it to daemon/main.c, because after various tests, it was confirmed that the error could happen in different parts of the code, case it was not initialized before the threads starts. Component Name health directory health-cmd Additional Information Fixes #6356 and #3414
106 lines
3.2 KiB
C
106 lines
3.2 KiB
C
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#ifndef NETDATA_HEALTH_H
|
|
#define NETDATA_HEALTH_H 1
|
|
|
|
#include "../daemon/common.h"
|
|
|
|
#define NETDATA_PLUGIN_HOOK_HEALTH \
|
|
{ \
|
|
.name = "HEALTH", \
|
|
.config_section = NULL, \
|
|
.config_name = NULL, \
|
|
.enabled = 1, \
|
|
.thread = NULL, \
|
|
.init_routine = NULL, \
|
|
.start_routine = health_main \
|
|
},
|
|
|
|
extern unsigned int default_health_enabled;
|
|
|
|
#define HEALTH_ENTRY_FLAG_PROCESSED 0x00000001
|
|
#define HEALTH_ENTRY_FLAG_UPDATED 0x00000002
|
|
#define HEALTH_ENTRY_FLAG_EXEC_RUN 0x00000004
|
|
#define HEALTH_ENTRY_FLAG_EXEC_FAILED 0x00000008
|
|
#define HEALTH_ENTRY_FLAG_SILENCED 0x00000010
|
|
|
|
#define HEALTH_ENTRY_FLAG_SAVED 0x10000000
|
|
#define HEALTH_ENTRY_FLAG_NO_CLEAR_NOTIFICATION 0x80000000
|
|
|
|
#ifndef HEALTH_LISTEN_PORT
|
|
#define HEALTH_LISTEN_PORT 19998
|
|
#endif
|
|
|
|
#ifndef HEALTH_LISTEN_BACKLOG
|
|
#define HEALTH_LISTEN_BACKLOG 4096
|
|
#endif
|
|
|
|
#define HEALTH_ON_KEY "on"
|
|
#define HEALTH_EVERY_KEY "every"
|
|
#define HEALTH_GREEN_KEY "green"
|
|
#define HEALTH_RED_KEY "red"
|
|
#define HEALTH_WARN_KEY "warn"
|
|
#define HEALTH_CRIT_KEY "crit"
|
|
#define HEALTH_EXEC_KEY "exec"
|
|
#define HEALTH_RECIPIENT_KEY "to"
|
|
#define HEALTH_UNITS_KEY "units"
|
|
#define HEALTH_INFO_KEY "info"
|
|
#define HEALTH_DELAY_KEY "delay"
|
|
#define HEALTH_OPTIONS_KEY "options"
|
|
|
|
#define HEALTH_SILENCERS_MAX_FILE_LEN 10000
|
|
|
|
char *silencers_filename;
|
|
|
|
extern void health_init(void);
|
|
extern void *health_main(void *ptr);
|
|
|
|
extern void health_reload(void);
|
|
|
|
extern int health_variable_lookup(const char *variable, uint32_t hash, RRDCALC *rc, calculated_number *result);
|
|
extern void health_alarms2json(RRDHOST *host, BUFFER *wb, int all);
|
|
extern void health_alarm_log2json(RRDHOST *host, BUFFER *wb, uint32_t after);
|
|
|
|
void health_api_v1_chart_variables2json(RRDSET *st, BUFFER *buf);
|
|
|
|
extern int health_alarm_log_open(RRDHOST *host);
|
|
extern void health_alarm_log_close(RRDHOST *host);
|
|
extern void health_log_rotate(RRDHOST *host);
|
|
extern void health_alarm_log_save(RRDHOST *host, ALARM_ENTRY *ae);
|
|
extern ssize_t health_alarm_log_read(RRDHOST *host, FILE *fp, const char *filename);
|
|
extern void health_alarm_log_load(RRDHOST *host);
|
|
|
|
extern ALARM_ENTRY* health_create_alarm_entry(
|
|
RRDHOST *host,
|
|
uint32_t alarm_id,
|
|
uint32_t alarm_event_id,
|
|
time_t when,
|
|
const char *name,
|
|
const char *chart,
|
|
const char *family,
|
|
const char *exec,
|
|
const char *recipient,
|
|
time_t duration,
|
|
calculated_number old_value,
|
|
calculated_number new_value,
|
|
RRDCALC_STATUS old_status,
|
|
RRDCALC_STATUS new_status,
|
|
const char *source,
|
|
const char *units,
|
|
const char *info,
|
|
int delay,
|
|
uint32_t flags);
|
|
|
|
extern void health_alarm_log(RRDHOST *host, ALARM_ENTRY *ae);
|
|
|
|
extern void health_readdir(RRDHOST *host, const char *user_path, const char *stock_path, const char *subpath);
|
|
extern char *health_user_config_dir(void);
|
|
extern char *health_stock_config_dir(void);
|
|
extern void health_reload_host(RRDHOST *host);
|
|
extern void health_alarm_log_free(RRDHOST *host);
|
|
|
|
extern void health_alarm_log_free_one_nochecks_nounlink(ALARM_ENTRY *ae);
|
|
|
|
extern void *health_cmdapi_thread(void *ptr);
|
|
|
|
#endif //NETDATA_HEALTH_H
|