summaryrefslogtreecommitdiffstats
path: root/src/health/health_silencers.h
blob: fe80c247790deb22a8fda31ae6e4776bb6d0bd3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
// SPDX-License-Identifier: GPL-3.0-or-later

#ifndef NETDATA_HEALTH_SILENCERS_H
#define NETDATA_HEALTH_SILENCERS_H

#include "health.h"

typedef struct silencer {
    char *alarms;
    SIMPLE_PATTERN *alarms_pattern;

    char *hosts;
    SIMPLE_PATTERN *hosts_pattern;

    char *contexts;
    SIMPLE_PATTERN *contexts_pattern;

    char *charts;
    SIMPLE_PATTERN *charts_pattern;

    struct silencer *next;
} SILENCER;

typedef enum silence_type {
    STYPE_NONE,
    STYPE_DISABLE_ALARMS,
    STYPE_SILENCE_NOTIFICATIONS
} SILENCE_TYPE;

typedef struct silencers {
    int all_alarms;
    SILENCE_TYPE stype;
    SILENCER *silencers;
} SILENCERS;

extern SILENCERS *silencers;

SILENCER *create_silencer(void);
int health_silencers_json_read_callback(JSON_ENTRY *e);
void health_silencers_add(SILENCER *silencer);
SILENCER * health_silencers_addparam(SILENCER *silencer, char *key, char *value);
int health_initialize_global_silencers();

void free_silencers(SILENCER *t);

struct web_client;
int web_client_api_request_v1_mgmt_health(RRDHOST *host, struct web_client *w, char *url);

const char *health_silencers_filename(void);
void health_set_silencers_filename(void);
void health_silencers_init(void);
SILENCE_TYPE health_silencers_check_silenced(RRDCALC *rc, const char *host);
int health_silencers_update_disabled_silenced(RRDHOST *host, RRDCALC *rc);

#endif //NETDATA_HEALTH_SILENCERS_H