summaryrefslogtreecommitdiffstats
path: root/src/fluent-bit/plugins/in_windows_exporter_metrics/we.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fluent-bit/plugins/in_windows_exporter_metrics/we.c')
-rw-r--r--src/fluent-bit/plugins/in_windows_exporter_metrics/we.c1144
1 files changed, 0 insertions, 1144 deletions
diff --git a/src/fluent-bit/plugins/in_windows_exporter_metrics/we.c b/src/fluent-bit/plugins/in_windows_exporter_metrics/we.c
deleted file mode 100644
index 0f99fb83f..000000000
--- a/src/fluent-bit/plugins/in_windows_exporter_metrics/we.c
+++ /dev/null
@@ -1,1144 +0,0 @@
-/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-/* Fluent Bit
- * ==========
- * Copyright (C) 2019-2021 The Fluent Bit Authors
- * Copyright (C) 2015-2018 Treasure Data Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <fluent-bit/flb_input_plugin.h>
-#include <fluent-bit/flb_config.h>
-#include <fluent-bit/flb_config_map.h>
-#include <fluent-bit/flb_error.h>
-#include <fluent-bit/flb_pack.h>
-
-#include "we.h"
-#include "we_wmi.h"
-#include "we_config.h"
-
-/* collectors */
-#include "we_cpu.h"
-#include "we_os.h"
-#include "we_net.h"
-#include "we_logical_disk.h"
-#include "we_cs.h"
-
-/* wmi collectors */
-#include "we_wmi_cpu_info.h"
-#include "we_wmi_logon.h"
-#include "we_wmi_system.h"
-#include "we_wmi_thermalzone.h"
-#include "we_wmi_service.h"
-#include "we_wmi_memory.h"
-#include "we_wmi_paging_file.h"
-#include "we_wmi_process.h"
-
-static int we_timer_cpu_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_cpu_update(ctx);
-
- return 0;
-}
-
-static int we_timer_os_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_os_update(ctx);
-
- return 0;
-}
-
-static int we_timer_net_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_net_update(ctx);
-
- return 0;
-}
-
-static int we_timer_logical_disk_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_logical_disk_update(ctx);
-
- return 0;
-}
-
-static int we_timer_cs_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_cs_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_thermalzone_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_thermalzone_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_cpu_info_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_cpu_info_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_logon_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_logon_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_system_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_system_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_service_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_service_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_memory_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_memory_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_paging_file_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_paging_file_update(ctx);
-
- return 0;
-}
-
-static int we_timer_wmi_process_metrics_cb(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- struct flb_ne *ctx = in_context;
-
- we_wmi_process_update(ctx);
-
- return 0;
-}
-
-struct flb_we_callback {
- char *name;
- void (*func)(char *, void *, void *);
-};
-
-static int we_update_cb(struct flb_we *ctx, char *name);
-
-static void update_metrics(struct flb_input_instance *ins, struct flb_we *ctx)
-{
- int ret;
- struct mk_list *head;
- struct flb_slist_entry *entry;
-
- /* Update our metrics */
- if (ctx->metrics) {
- mk_list_foreach(head, ctx->metrics) {
- entry = mk_list_entry(head, struct flb_slist_entry, _head);
- ret = flb_callback_exists(ctx->callback, entry->str);
- if (ret == FLB_TRUE) {
- we_update_cb(ctx, entry->str);
- }
- else {
- flb_plg_debug(ctx->ins, "Callback for metrics '%s' is not registered", entry->str);
- }
- }
- }
-}
-
-/*
- * Update the metrics, this function is invoked every time 'scrape_interval'
- * expires.
- */
-static int cb_we_collect(struct flb_input_instance *ins,
- struct flb_config *config, void *in_context)
-{
- int ret;
- struct flb_we *ctx;
-
- ctx = in_context;
-
- update_metrics(ins, ctx);
-
- /* Append the updated metrics */
- ret = flb_input_metrics_append(ins, NULL, 0, ctx->cmt);
-
- if (ret) {
- flb_plg_error(ins, "could not append metrics");
- }
-
- return 0;
-}
-
-static void we_cpu_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_cpu_update(ctx);
-}
-
-static void we_os_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_os_update(ctx);
-}
-
-static void we_net_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_net_update(ctx);
-}
-
-static void we_logical_disk_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_logical_disk_update(ctx);
-}
-
-static void we_cs_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_cs_update(ctx);
-}
-
-static void we_wmi_thermalzone_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_thermalzone_update(ctx);
-}
-
-static void we_wmi_cpu_info_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_cpu_info_update(ctx);
-}
-
-static void we_wmi_logon_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_logon_update(ctx);
-}
-
-static void we_wmi_system_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_system_update(ctx);
-}
-
-static void we_wmi_service_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_service_update(ctx);
-}
-
-static void we_wmi_memory_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_memory_update(ctx);
-}
-
-static void we_wmi_paging_file_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_paging_file_update(ctx);
-}
-
-static void we_wmi_process_update_cb(char *name, void *p1, void *p2)
-{
- struct flb_we *ctx = p1;
-
- we_wmi_process_update(ctx);
-}
-
-static int we_update_cb(struct flb_we *ctx, char *name)
-{
- int ret;
-
- ret = flb_callback_do(ctx->callback, name, ctx, NULL);
- return ret;
-}
-
-/*
- * Callbacks Table
- */
-struct flb_we_callback ne_callbacks[] = {
- /* metrics */
- { "cpu_info", we_wmi_cpu_info_update_cb },
- { "cpu", we_cpu_update_cb },
- { "os", we_os_update_cb },
- { "net", we_net_update_cb },
- { "logical_disk", we_logical_disk_update_cb },
- { "cs", we_cs_update_cb },
- { "thermalzone", we_wmi_thermalzone_update_cb },
- { "logon", we_wmi_logon_update_cb },
- { "system", we_wmi_system_update_cb },
- { "service", we_wmi_service_update_cb },
- { "memory", we_wmi_memory_update_cb },
- { "paging_file", we_wmi_paging_file_update_cb },
- { "process", we_wmi_process_update_cb },
- { 0 }
-};
-
-static int in_we_init(struct flb_input_instance *in,
- struct flb_config *config, void *data)
-{
- int ret;
- int metric_idx = -1;
- struct flb_we *ctx;
- double windows_version = 0.0;
- struct mk_list *head;
- struct flb_slist_entry *entry;
- struct flb_we_callback *cb;
-
- /* Create plugin context */
- ctx = flb_we_config_create(in, config);
-
- if (ctx == NULL) {
- flb_errno();
-
- return -1;
- }
-
- /* Initialize fds */
- ctx->coll_cpu_fd = -1;
- ctx->coll_net_fd = -1;
- ctx->coll_logical_disk_fd = -1;
- ctx->coll_cs_fd = -1;
- ctx->coll_os_fd = -1;
- ctx->coll_wmi_thermalzone_fd = -1;
- ctx->coll_wmi_cpu_info_fd = -1;
- ctx->coll_wmi_logon_fd = -1;
- ctx->coll_wmi_system_fd = -1;
- ctx->coll_wmi_service_fd = -1;
- ctx->coll_wmi_memory_fd = -1;
- ctx->coll_wmi_paging_file_fd = -1;
- ctx->coll_wmi_process_fd = -1;
-
- ctx->callback = flb_callback_create(in->name);
- if (!ctx->callback) {
- flb_plg_error(ctx->ins, "Create callback failed");
- return -1;
- }
-
- /* Associate context with the instance */
- flb_input_set_context(in, ctx);
-
- ret = we_get_windows_version(&windows_version);
-
- if (ret == FLB_FALSE) {
- flb_plg_error(in, "could not get windows version");
-
- return -1;
- }
- ctx->windows_version = windows_version;
-
- ret = we_perflib_init(ctx);
-
- if (ret) {
- flb_plg_error(in, "could not initialize PERFLIB");
- return -1;
- }
-
- ret = we_wmi_init(ctx);
-
- if (ret) {
- flb_plg_error(in, "could not initialize WMI");
-
- return -1;
- }
-
- /* Create the collector */
- ret = flb_input_set_collector_time(in,
- cb_we_collect,
- ctx->scrape_interval, 0,
- config);
-
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set collector for "
- "Windows Exporter Metrics plugin");
- return -1;
- }
-
- ctx->coll_fd = ret;
-
- /* Check and initialize enabled metrics */
- if (ctx->metrics) {
- mk_list_foreach(head, ctx->metrics) {
- entry = mk_list_entry(head, struct flb_slist_entry, _head);
- ret = flb_callback_exists(ctx->callback, entry->str);
-
- if (ret == FLB_FALSE) {
- if (strncmp(entry->str, "cpu_info", 8) == 0) {
- if (ctx->wmi_cpu_info_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 0;
- }
- else {
- /* Create the cpu_info collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_cpu_info_metrics_cb,
- ctx->wmi_cpu_info_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set cpu_info collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_cpu_info_fd = ret;
- }
-
- /* Initialize cpu info metric collectors */
- ret = we_wmi_cpu_info_init(ctx);
- if (ret == -1) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "cpu", 3) == 0) {
- if (ctx->cpu_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 1;
- }
- else {
- /* Create the cpu collector */
- ret = flb_input_set_collector_time(in,
- we_timer_cpu_metrics_cb,
- ctx->cpu_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set cpu collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_cpu_fd = ret;
- }
-
- /* Initialize cpu metric collectors */
- ret = we_cpu_init(ctx);
- if (ret < 0) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "os", 2) == 0) {
- if (ctx->os_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 2;
- } else {
- /* Create the os collector */
- ret = flb_input_set_collector_time(in,
- we_timer_os_metrics_cb,
- ctx->os_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set os collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_os_fd = ret;
- }
-
- /* Initialize os metric collectors */
- ret = we_os_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "net", 3) == 0) {
- if (ctx->net_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 3;
- }
- else {
- /* Create the net collector */
- ret = flb_input_set_collector_time(in,
- we_timer_net_metrics_cb,
- ctx->net_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set net collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_net_fd = ret;
- }
-
- /* Initialize net metric collectors */
- ret = we_net_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "logical_disk", 12) == 0) {
- if (ctx->logical_disk_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 4;
- }
- else {
- /* Create the logical_disk collector */
- ret = flb_input_set_collector_time(in,
- we_timer_logical_disk_metrics_cb,
- ctx->logical_disk_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set logical_disk collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_logical_disk_fd = ret;
- }
-
- /* Initialize logical_disk metric collectors */
- ret = we_logical_disk_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "cs", 2) == 0) {
- if (ctx->cs_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 5;
- }
- else {
- /* Create the logical_disk collector */
- ret = flb_input_set_collector_time(in,
- we_timer_cs_metrics_cb,
- ctx->cs_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set cs collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_cs_fd = ret;
- }
-
- /* Initialize cs metric collectors */
- ret = we_cs_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "thermalzone", 11) == 0) {
- if (ctx->wmi_thermalzone_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 6;
- }
- else {
- /* Create the thermalzone collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_thermalzone_metrics_cb,
- ctx->wmi_thermalzone_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set thermalzone collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_thermalzone_fd = ret;
- }
-
- /* Initialize thermalzone metric collectors */
- ret = we_wmi_thermalzone_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "logon", 5) == 0) {
- if (ctx->wmi_logon_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 7;
- }
- else {
- /* Create the logon collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_logon_metrics_cb,
- ctx->wmi_logon_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set thermalzone collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_logon_fd = ret;
- }
-
- /* Initialize logon metric collectors */
- ret = we_wmi_logon_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "system", 6) == 0) {
- if (ctx->wmi_logon_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 8;
- }
- else {
- /* Create the logon collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_system_metrics_cb,
- ctx->wmi_system_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set system collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_system_fd = ret;
- }
-
- /* Initialize system metric collectors */
- ret = we_wmi_system_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "service", 7) == 0) {
- if (ctx->wmi_service_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 9;
- }
- else {
- /* Create the service collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_service_metrics_cb,
- ctx->wmi_service_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set service collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_service_fd = ret;
- }
-
- /* Initialize service metric collectors */
- ret = we_wmi_service_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "memory", 6) == 0) {
- if (ctx->wmi_memory_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 10;
- }
- else {
- /* Create the memory collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_memory_metrics_cb,
- ctx->wmi_memory_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set memory collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_memory_fd = ret;
- }
-
- /* Initialize memory metric collectors */
- ret = we_wmi_memory_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "paging_file", 11) == 0) {
- if (ctx->wmi_paging_file_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 11;
- }
- else {
- /* Create the paging_file collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_paging_file_metrics_cb,
- ctx->wmi_paging_file_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set paging_file collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_paging_file_fd = ret;
- }
-
- /* Initialize paging_file metric collectors */
- ret = we_wmi_paging_file_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else if (strncmp(entry->str, "process", 7) == 0) {
- if (ctx->wmi_process_scrape_interval == 0) {
- flb_plg_debug(ctx->ins, "enabled metrics %s", entry->str);
- metric_idx = 12;
- }
- else {
- /* Create the process collector */
- ret = flb_input_set_collector_time(in,
- we_timer_wmi_process_metrics_cb,
- ctx->wmi_process_scrape_interval, 0,
- config);
- if (ret == -1) {
- flb_plg_error(ctx->ins,
- "could not set process collector for Windows Exporter Metrics plugin");
- return -1;
- }
- ctx->coll_wmi_process_fd = ret;
- }
-
- /* Initialize paging_file metric collectors */
- ret = we_wmi_process_init(ctx);
- if (ret) {
- return -1;
- }
- }
- else {
- flb_plg_warn(ctx->ins, "Unknown metrics: %s", entry->str);
- metric_idx = -1;
- }
-
- if (metric_idx >= 0) {
- cb = &ne_callbacks[metric_idx];
- ret = flb_callback_set(ctx->callback, cb->name, cb->func);
- if (ret == -1) {
- flb_plg_error(ctx->ins, "error setting up default "
- "callback '%s'", cb->name);
- }
- }
- }
- }
- }
- else {
- flb_plg_error(ctx->ins, "No metrics is specified");
-
- return -1;
- }
-
- return 0;
-}
-
-static int in_we_exit(void *data, struct flb_config *config)
-{
- int ret;
- struct flb_we* ctx = data;
- struct mk_list *head;
- struct flb_slist_entry *entry;
-
- if (data == NULL) {
- return 0;
- }
-
- /* Teardown for callback tied up resources */
- if (ctx->metrics) {
- mk_list_foreach(head, ctx->metrics) {
- entry = mk_list_entry(head, struct flb_slist_entry, _head);
- ret = flb_callback_exists(ctx->callback, entry->str);
-
- if (ret == FLB_TRUE) {
- if (strncmp(entry->str, "cpu_info", 8) == 0) {
- we_wmi_cpu_info_exit(ctx);
- }
- else if (strncmp(entry->str, "cpu", 3) == 0) {
- /* nop */
- }
- else if (strncmp(entry->str, "os", 2) == 0) {
- we_os_exit(ctx);
- }
- else if (strncmp(entry->str, "net", 3) == 0) {
- we_net_exit(ctx);
- }
- else if (strncmp(entry->str, "logical_disk", 12) == 0) {
- we_logical_disk_exit(ctx);
- }
- else if (strncmp(entry->str, "cs", 2) == 0) {
- we_cs_exit(ctx);
- }
- else if (strncmp(entry->str, "thermalzone", 11) == 0) {
- we_wmi_thermalzone_exit(ctx);
- }
- else if (strncmp(entry->str, "logon", 5) == 0) {
- we_wmi_logon_exit(ctx);
- }
- else if (strncmp(entry->str, "system", 6) == 0) {
- we_wmi_system_exit(ctx);
- }
- else if (strncmp(entry->str, "service", 7) == 0) {
- we_wmi_service_exit(ctx);
- }
- else if (strncmp(entry->str, "memory", 6) == 0) {
- we_wmi_memory_exit(ctx);
- }
- else if (strncmp(entry->str, "paging_file", 11) == 0) {
- we_wmi_paging_file_exit(ctx);
- }
- else if (strncmp(entry->str, "process", 7) == 0) {
- we_wmi_process_exit(ctx);
- }
- else {
- flb_plg_warn(ctx->ins, "Unknown metrics: %s", entry->str);
- }
- }
- }
- }
-
- /* destroy callback context */
- if (ctx->callback) {
- flb_callback_destroy(ctx->callback);
- }
-
- /* Teardown for timer tied up resources */
- if (ctx->coll_net_fd != -1) {
- we_net_exit(ctx);
- }
- if (ctx->coll_logical_disk_fd != -1) {
- we_logical_disk_exit(ctx);
- }
- if (ctx->coll_cs_fd != -1) {
- we_cs_exit(ctx);
- }
- if (ctx->coll_os_fd != -1) {
- we_os_exit(ctx);
- }
- if (ctx->coll_wmi_thermalzone_fd != -1) {
- we_wmi_thermalzone_exit(ctx);
- }
- if (ctx->coll_wmi_cpu_info_fd != -1) {
- we_wmi_cpu_info_exit(ctx);
- }
- if (ctx->coll_wmi_logon_fd != -1) {
- we_wmi_logon_exit(ctx);
- }
- if (ctx->coll_wmi_system_fd != -1) {
- we_wmi_system_exit(ctx);
- }
- if (ctx->coll_wmi_service_fd != -1) {
- we_wmi_service_exit(ctx);
- }
- if (ctx->coll_wmi_memory_fd != -1) {
- we_wmi_memory_exit(ctx);
- }
- if (ctx->coll_wmi_paging_file_fd != -1) {
- we_wmi_paging_file_exit(ctx);
- }
- if (ctx->coll_wmi_process_fd != -1) {
- we_wmi_process_exit(ctx);
- }
-
- flb_we_config_destroy(ctx);
-
- return 0;
-}
-
-static void in_we_pause(void *data, struct flb_config *config)
-{
- struct flb_we *ctx;
-
- ctx = (struct flb_we *) data;
-
- flb_input_collector_pause(ctx->coll_fd, ctx->ins);
- if (ctx->coll_cpu_fd != -1) {
- flb_input_collector_pause(ctx->coll_cpu_fd, ctx->ins);
- }
- if (ctx->coll_net_fd != -1) {
- flb_input_collector_pause(ctx->coll_net_fd, ctx->ins);
- }
- if (ctx->coll_logical_disk_fd != -1) {
- flb_input_collector_pause(ctx->coll_logical_disk_fd, ctx->ins);
- }
- if (ctx->coll_cs_fd != -1) {
- flb_input_collector_pause(ctx->coll_cs_fd, ctx->ins);
- }
- if (ctx->coll_os_fd != -1) {
- flb_input_collector_pause(ctx->coll_os_fd, ctx->ins);
- }
- if (ctx->coll_wmi_thermalzone_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_thermalzone_fd, ctx->ins);
- }
- if (ctx->coll_wmi_cpu_info_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_cpu_info_fd, ctx->ins);
- }
- if (ctx->coll_wmi_logon_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_logon_fd, ctx->ins);
- }
- if (ctx->coll_wmi_system_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_system_fd, ctx->ins);
- }
- if (ctx->coll_wmi_service_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_service_fd, ctx->ins);
- }
- if (ctx->coll_wmi_memory_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_memory_fd, ctx->ins);
- }
- if (ctx->coll_wmi_paging_file_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_paging_file_fd, ctx->ins);
- }
- if (ctx->coll_wmi_process_fd != -1) {
- flb_input_collector_pause(ctx->coll_wmi_process_fd, ctx->ins);
- }
-}
-
-static void in_we_resume(void *data, struct flb_config *config)
-{
- struct flb_we *ctx;
-
- ctx = (struct flb_we *) data;
-
- flb_input_collector_resume(ctx->coll_fd, ctx->ins);
- if (ctx->coll_cpu_fd != -1) {
- flb_input_collector_resume(ctx->coll_cpu_fd, ctx->ins);
- }
- if (ctx->coll_net_fd != -1) {
- flb_input_collector_resume(ctx->coll_net_fd, ctx->ins);
- }
- if (ctx->coll_logical_disk_fd != -1) {
- flb_input_collector_resume(ctx->coll_logical_disk_fd, ctx->ins);
- }
- if (ctx->coll_wmi_process_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_process_fd, ctx->ins);
- }
- if (ctx->coll_cs_fd != -1) {
- flb_input_collector_resume(ctx->coll_cs_fd, ctx->ins);
- }
- if (ctx->coll_os_fd != -1) {
- flb_input_collector_resume(ctx->coll_os_fd, ctx->ins);
- }
- if (ctx->coll_wmi_thermalzone_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_thermalzone_fd, ctx->ins);
- }
- if (ctx->coll_wmi_cpu_info_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_cpu_info_fd, ctx->ins);
- }
- if (ctx->coll_wmi_logon_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_logon_fd, ctx->ins);
- }
- if (ctx->coll_wmi_system_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_system_fd, ctx->ins);
- }
- if (ctx->coll_wmi_service_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_service_fd, ctx->ins);
- }
- if (ctx->coll_wmi_memory_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_memory_fd, ctx->ins);
- }
- if (ctx->coll_wmi_paging_file_fd != -1) {
- flb_input_collector_resume(ctx->coll_wmi_paging_file_fd, ctx->ins);
- }
-}
-
-/* Configuration properties map */
-static struct flb_config_map config_map[] = {
- {
- FLB_CONFIG_MAP_TIME, "scrape_interval", "1",
- 0, FLB_TRUE, offsetof(struct flb_we, scrape_interval),
- "scrape interval to collect metrics from the node."
- },
- {
- FLB_CONFIG_MAP_STR, "enable_collector", NULL,
- FLB_CONFIG_MAP_MULT, FLB_TRUE, offsetof(struct flb_we, collectors),
- "Collector to enable."
- },
- {
- FLB_CONFIG_MAP_TIME, "collector.cpu.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, cpu_scrape_interval),
- "scrape interval to collect cpu metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.net.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, net_scrape_interval),
- "scrape interval to collect net metrics from the node."
- },
- {
- FLB_CONFIG_MAP_TIME, "collector.logical_disk.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, logical_disk_scrape_interval),
- "scrape interval to collect logical_disk metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.cs.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, cs_scrape_interval),
- "scrape interval to collect cs metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.os.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, os_scrape_interval),
- "scrape interval to collect os metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.thermalzone.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_thermalzone_scrape_interval),
- "scrape interval to collect thermalzone metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.cpu_info.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_cpu_info_scrape_interval),
- "scrape interval to collect cpu_info metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.logon.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_logon_scrape_interval),
- "scrape interval to collect logon metrics from the node."
- },
- {
- FLB_CONFIG_MAP_TIME, "collector.system.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_system_scrape_interval),
- "scrape interval to collect system metrics from the node."
- },
- {
- FLB_CONFIG_MAP_TIME, "collector.service.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_service_scrape_interval),
- "scrape interval to collect service metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.memory.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_memory_scrape_interval),
- "scrape interval to collect memory metrics from the node."
- },
- {
- FLB_CONFIG_MAP_TIME, "collector.paging_file.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_paging_file_scrape_interval),
- "scrape interval to collect paging_file metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_TIME, "collector.process.scrape_interval", "0",
- 0, FLB_TRUE, offsetof(struct flb_we, wmi_process_scrape_interval),
- "scrape interval to collect process metrics from the node."
- },
-
- {
- FLB_CONFIG_MAP_CLIST, "metrics",
- "cpu,cpu_info,os,net,logical_disk,cs,thermalzone,logon,system,service",
- 0, FLB_TRUE, offsetof(struct flb_we, metrics),
- "Comma separated list of keys to enable metrics."
- },
- {
- FLB_CONFIG_MAP_STR, "we.logical_disk.allow_disk_regex", "/.+/",
- 0, FLB_TRUE, offsetof(struct flb_we, raw_allowing_disk),
- "Specify to be scribable regex for logical disk metrics."
- },
- {
- FLB_CONFIG_MAP_STR, "we.logical_disk.deny_disk_regex", NULL,
- 0, FLB_TRUE, offsetof(struct flb_we, raw_denying_disk),
- "Specify to be denied regex for logical disk metrics."
- },
- {
- FLB_CONFIG_MAP_STR, "we.net.allow_nic_regex", "/.+/",
- 0, FLB_TRUE, offsetof(struct flb_we, raw_allowing_nic),
- "Specify to be scribable regex for net metrics by name of NIC."
- },
- {
- FLB_CONFIG_MAP_STR, "we.service.where", NULL,
- 0, FLB_TRUE, offsetof(struct flb_we, raw_where_clause),
- "Specify the where clause for retrieving service metrics."
- },
- {
- FLB_CONFIG_MAP_STR, "we.service.include", NULL,
- 0, FLB_TRUE, offsetof(struct flb_we, raw_service_include),
- "Specify the key value condition pairs for includeing condition to construct where clause of service metrics."
- },
- {
- FLB_CONFIG_MAP_STR, "we.service.exclude", NULL,
- 0, FLB_TRUE, offsetof(struct flb_we, raw_service_exclude),
- "Specify the key value condition pairs for excludeing condition to construct where clause of service metrics."
- },
- {
- FLB_CONFIG_MAP_STR, "we.process.allow_process_regex", "/.+/",
- 0, FLB_TRUE, offsetof(struct flb_we, raw_allowing_process),
- "Specify the regex covering the process metrics to collect."
- },
- {
- FLB_CONFIG_MAP_STR, "we.process.deny_process_regex", NULL,
- 0, FLB_TRUE, offsetof(struct flb_we, raw_denying_process),
- "Specify the regex for process metrics to prevent collection of/ignore."
- },
- /* EOF */
- {0}
-};
-
-struct flb_input_plugin in_windows_exporter_metrics_plugin = {
- .name = "windows_exporter_metrics",
- .description = "Windows Exporter Metrics (Prometheus Compatible)",
- .cb_init = in_we_init,
- .cb_pre_run = NULL,
- .cb_collect = cb_we_collect,
- .cb_flush_buf = NULL,
- .config_map = config_map,
- .cb_pause = in_we_pause,
- .cb_resume = in_we_resume,
- .cb_exit = in_we_exit,
-};