summaryrefslogtreecommitdiffstats
path: root/src/fluent-bit/plugins/CMakeLists.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:08:03 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-05 12:08:18 +0000
commit5da14042f70711ea5cf66e034699730335462f66 (patch)
tree0f6354ccac934ed87a2d555f45be4c831cf92f4a /src/fluent-bit/plugins/CMakeLists.txt
parentReleasing debian version 1.44.3-2. (diff)
downloadnetdata-5da14042f70711ea5cf66e034699730335462f66.tar.xz
netdata-5da14042f70711ea5cf66e034699730335462f66.zip
Merging upstream version 1.45.3+dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/fluent-bit/plugins/CMakeLists.txt')
-rw-r--r--src/fluent-bit/plugins/CMakeLists.txt416
1 files changed, 416 insertions, 0 deletions
diff --git a/src/fluent-bit/plugins/CMakeLists.txt b/src/fluent-bit/plugins/CMakeLists.txt
new file mode 100644
index 000000000..36299074a
--- /dev/null
+++ b/src/fluent-bit/plugins/CMakeLists.txt
@@ -0,0 +1,416 @@
+set(flb_plugins "" CACHE INTERNAL "flb_plugins")
+
+# REGISTER_CUSTOM_PLUGIN
+macro(REGISTER_CUSTOM_PLUGIN name)
+ string(FIND ${name} "=" pos)
+ if(pos GREATER -1)
+ string(REPLACE "=" ";" list ${name})
+ list(GET list 0 p_name)
+ list(GET list 1 p_path)
+ message(STATUS "EXTERNAL CUSTOM PLUGIN name='${p_name}' path='${p_path}'")
+ else()
+ set(p_name ${name})
+ endif()
+
+ string(TOUPPER ${p_name} NAME)
+ if(FLB_${NAME} OR p_path)
+ set(FLB_IN_PLUGINS_DECL "${FLB_CUSTOM_PLUGINS_DECL}extern struct flb_custom_plugin ${p_name}_plugin;\n")
+
+ # C code
+ set(C_CODE " custom = flb_malloc(sizeof(struct flb_custom_plugin));\n")
+ set(C_CODE "${C_CODE} if (!custom) {\n")
+ set(C_CODE "${C_CODE} flb_errno();\n")
+ set(C_CODE "${C_CODE} return -1;\n")
+ set(C_CODE "${C_CODE} }\n")
+ set(C_CODE "${C_CODE} memcpy(custom, &${p_name}_plugin, sizeof(struct flb_custom_plugin));\n")
+ set(C_CODE "${C_CODE} mk_list_add(&custom->_head, &config->custom_plugins);\n\n")
+
+ set(FLB_IN_PLUGINS_ADD "${FLB_CUSTOM_PLUGINS_ADD}${C_CODE}")
+
+ if (p_path)
+ add_subdirectory(${p_path} ${p_path})
+ else()
+ add_subdirectory(${p_name})
+ endif()
+ set(flb_plugins "${flb_plugins}flb-plugin-${p_name};")
+ endif()
+endmacro()
+
+# REGISTER_IN_PLUGIN
+macro(REGISTER_IN_PLUGIN name)
+ string(FIND ${name} "=" pos)
+ if(pos GREATER -1)
+ string(REPLACE "=" ";" list ${name})
+ list(GET list 0 p_name)
+ list(GET list 1 p_path)
+ message(STATUS "EXTERNAL IN PLUGIN name='${p_name}' path='${p_path}'")
+ else()
+ set(p_name ${name})
+ endif()
+
+ string(TOUPPER ${p_name} NAME)
+ if(FLB_${NAME} OR p_path)
+ set(FLB_IN_PLUGINS_DECL "${FLB_IN_PLUGINS_DECL}extern struct flb_input_plugin ${p_name}_plugin;\n")
+
+ # C code
+ set(C_CODE " in = flb_malloc(sizeof(struct flb_input_plugin));\n")
+ set(C_CODE "${C_CODE} if (!in) {\n")
+ set(C_CODE "${C_CODE} flb_errno();\n")
+ set(C_CODE "${C_CODE} return -1;\n")
+ set(C_CODE "${C_CODE} }\n")
+ set(C_CODE "${C_CODE} memcpy(in, &${p_name}_plugin, sizeof(struct flb_input_plugin));\n")
+ set(C_CODE "${C_CODE} mk_list_add(&in->_head, &config->in_plugins);\n\n")
+
+ set(FLB_IN_PLUGINS_ADD "${FLB_IN_PLUGINS_ADD}${C_CODE}")
+
+ if (p_path)
+ add_subdirectory(${p_path} ${p_path})
+ else()
+ add_subdirectory(${p_name})
+ endif()
+ set(flb_plugins "${flb_plugins}flb-plugin-${p_name};")
+ endif()
+endmacro()
+
+# REGISTER_OUT_PLUGIN
+macro(REGISTER_OUT_PLUGIN name)
+ string(FIND ${name} "=" pos)
+ if(pos GREATER -1)
+ string(REPLACE "=" ";" list ${name})
+ list(GET list 0 p_name)
+ list(GET list 1 p_path)
+ message(STATUS "EXTERNAL OUT PLUGIN name='${p_name}' path='${p_path}'")
+ else()
+ set(p_name ${name})
+ endif()
+
+ string(TOUPPER ${p_name} NAME)
+ if(FLB_${NAME} OR p_path)
+ set(FLB_OUT_PLUGINS_DECL "${FLB_OUT_PLUGINS_DECL}extern struct flb_output_plugin ${p_name}_plugin;\n")
+
+ # C code
+ set(C_CODE " out = flb_malloc(sizeof(struct flb_output_plugin));\n")
+ set(C_CODE "${C_CODE} if (!out) {\n")
+ set(C_CODE "${C_CODE} flb_errno();\n")
+ set(C_CODE "${C_CODE} return -1;\n")
+ set(C_CODE "${C_CODE} }\n")
+ set(C_CODE "${C_CODE} memcpy(out, &${p_name}_plugin, sizeof(struct flb_output_plugin));\n")
+ set(C_CODE "${C_CODE} mk_list_add(&out->_head, &config->out_plugins);\n\n")
+
+ set(FLB_OUT_PLUGINS_ADD "${FLB_OUT_PLUGINS_ADD}${C_CODE}")
+ if (p_path)
+ add_subdirectory(${p_path} ${p_path})
+ else()
+ add_subdirectory(${p_name})
+ endif()
+ set(flb_plugins "${flb_plugins}flb-plugin-${p_name};")
+ endif()
+endmacro()
+
+
+# REGISTER_PROCESSOR_PLUGIN
+macro(REGISTER_PROCESSOR_PLUGIN name)
+ string(FIND ${name} "=" pos)
+ if(pos GREATER -1)
+ string(REPLACE "=" ";" list ${name})
+ list(GET list 0 p_name)
+ list(GET list 1 p_path)
+ message(STATUS "EXTERNAL PROCESSOR PLUGIN name='${p_name}' path='${p_path}'")
+ else()
+ set(p_name ${name})
+ endif()
+
+ string(TOUPPER ${p_name} NAME)
+ if(FLB_${NAME} OR p_path)
+ set(FLB_PROCESSOR_PLUGINS_DECL "${FLB_PROCESSOR_PLUGINS_DECL}extern struct flb_processor_plugin ${p_name}_plugin;\n")
+
+ # C code
+ set(C_CODE " processor = flb_malloc(sizeof(struct flb_processor_plugin));\n")
+ set(C_CODE "${C_CODE} if (!processor) {\n")
+ set(C_CODE "${C_CODE} flb_errno();\n")
+ set(C_CODE "${C_CODE} return -1;\n")
+ set(C_CODE "${C_CODE} }\n")
+ set(C_CODE "${C_CODE} memcpy(processor, &${p_name}_plugin, sizeof(struct flb_processor_plugin));\n")
+ set(C_CODE "${C_CODE} mk_list_add(&processor->_head, &config->processor_plugins);\n\n")
+
+ set(FLB_PROCESSOR_PLUGINS_ADD "${FLB_PROCESSOR_PLUGINS_ADD}${C_CODE}")
+ if (p_path)
+ add_subdirectory(${p_path} ${p_path})
+ else()
+ add_subdirectory(${p_name})
+ endif()
+ set(flb_plugins "${flb_plugins}flb-plugin-${p_name};")
+ endif()
+endmacro()
+
+# REGISTER_FILTER_PLUGIN
+macro(REGISTER_FILTER_PLUGIN name)
+ string(FIND ${name} "=" pos)
+ if(pos GREATER -1)
+ string(REPLACE "=" ";" list ${name})
+ list(GET list 0 p_name)
+ list(GET list 1 p_path)
+ message(STATUS "EXTERNAL FILTER PLUGIN name='${p_name}' path='${p_path}'")
+ else()
+ set(p_name ${name})
+ endif()
+
+ string(TOUPPER ${p_name} NAME)
+ if(FLB_${NAME} OR p_path)
+ set(FLB_FILTER_PLUGINS_DECL "${FLB_FILTER_PLUGINS_DECL}extern struct flb_filter_plugin ${p_name}_plugin;\n")
+
+ # C code
+ set(C_CODE " filter = flb_malloc(sizeof(struct flb_filter_plugin));\n")
+ set(C_CODE "${C_CODE} if (!filter) {\n")
+ set(C_CODE "${C_CODE} flb_errno();\n")
+ set(C_CODE "${C_CODE} return -1;\n")
+ set(C_CODE "${C_CODE} }\n")
+ set(C_CODE "${C_CODE} memcpy(filter, &${p_name}_plugin, sizeof(struct flb_filter_plugin));\n")
+ set(C_CODE "${C_CODE} mk_list_add(&filter->_head, &config->filter_plugins);\n\n")
+
+ set(FLB_FILTER_PLUGINS_ADD "${FLB_FILTER_PLUGINS_ADD}${C_CODE}")
+ if (p_path)
+ add_subdirectory(${p_path} ${p_path})
+ else()
+ add_subdirectory(${p_name})
+ endif()
+ set(flb_plugins "${flb_plugins}flb-plugin-${p_name};")
+ endif()
+endmacro()
+
+# FLB_PLUGIN: used by plugins to perform registration and linking
+macro(FLB_PLUGIN name src deps)
+ add_library(flb-plugin-${name} STATIC ${src})
+ add_sanitizers(flb-plugin-${name})
+ target_link_libraries(flb-plugin-${name} fluent-bit-static msgpack-c-static ${deps})
+endmacro()
+
+
+# ======================
+# Plugins Registration
+# ======================
+
+# Custom Plugins
+REGISTER_CUSTOM_PLUGIN("custom_calyptia")
+
+# These plugins works only on Linux
+if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
+ REGISTER_IN_PLUGIN("in_cpu")
+ REGISTER_IN_PLUGIN("in_mem")
+ REGISTER_IN_PLUGIN("in_thermal")
+ REGISTER_IN_PLUGIN("in_kmsg")
+ REGISTER_IN_PLUGIN("in_proc")
+ REGISTER_IN_PLUGIN("in_disk")
+ REGISTER_IN_PLUGIN("in_systemd")
+ REGISTER_IN_PLUGIN("in_netif")
+ REGISTER_IN_PLUGIN("in_docker")
+ REGISTER_IN_PLUGIN("in_docker_events")
+ REGISTER_IN_PLUGIN("in_node_exporter_metrics")
+ REGISTER_IN_PLUGIN("in_podman_metrics")
+endif()
+
+REGISTER_IN_PLUGIN("in_kubernetes_events")
+REGISTER_IN_PLUGIN("in_kafka")
+REGISTER_IN_PLUGIN("in_fluentbit_metrics")
+REGISTER_IN_PLUGIN("in_prometheus_scrape")
+REGISTER_IN_PLUGIN("in_emitter")
+REGISTER_IN_PLUGIN("in_tail")
+REGISTER_IN_PLUGIN("in_dummy")
+REGISTER_IN_PLUGIN("in_head")
+REGISTER_IN_PLUGIN("in_health")
+REGISTER_IN_PLUGIN("in_http")
+REGISTER_IN_PLUGIN("in_collectd")
+REGISTER_IN_PLUGIN("in_statsd")
+REGISTER_IN_PLUGIN("in_opentelemetry")
+REGISTER_IN_PLUGIN("in_elasticsearch")
+REGISTER_IN_PLUGIN("in_calyptia_fleet")
+REGISTER_IN_PLUGIN("in_splunk")
+
+# Test the event loop messaging when used in threaded mode
+REGISTER_IN_PLUGIN("in_event_test")
+
+# Send different event types: logs, metrics and traces
+REGISTER_IN_PLUGIN("in_event_type")
+
+
+if (FLB_IN_STORAGE_BACKLOG)
+ REGISTER_IN_PLUGIN("in_storage_backlog")
+endif()
+
+REGISTER_IN_PLUGIN("in_nginx_exporter_metrics")
+
+if (FLB_STREAM_PROCESSOR)
+ REGISTER_IN_PLUGIN("in_stream_processor")
+endif()
+
+if (FLB_SYSTEM_WINDOWS)
+ REGISTER_IN_PLUGIN("in_winlog")
+ REGISTER_IN_PLUGIN("in_winstat")
+ REGISTER_IN_PLUGIN("in_winevtlog")
+ REGISTER_IN_PLUGIN("in_windows_exporter_metrics")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W2")
+else()
+ REGISTER_IN_PLUGIN("in_serial")
+endif()
+
+if(FLB_REGEX)
+ REGISTER_IN_PLUGIN("in_stdin")
+endif()
+
+if(FLB_PARSER)
+ REGISTER_IN_PLUGIN("in_syslog")
+ REGISTER_IN_PLUGIN("in_exec")
+endif()
+
+REGISTER_IN_PLUGIN("in_udp")
+
+if(FLB_WASM)
+ REGISTER_IN_PLUGIN("in_exec_wasi")
+endif()
+
+REGISTER_IN_PLUGIN("in_tcp")
+REGISTER_IN_PLUGIN("in_unix_socket")
+REGISTER_IN_PLUGIN("in_mqtt")
+REGISTER_IN_PLUGIN("in_lib")
+REGISTER_IN_PLUGIN("in_forward")
+REGISTER_IN_PLUGIN("in_random")
+
+# PROCESSORS
+# ==========
+REGISTER_PROCESSOR_PLUGIN("processor_labels")
+REGISTER_PROCESSOR_PLUGIN("processor_attributes")
+
+# OUTPUTS
+# =======
+REGISTER_OUT_PLUGIN("out_azure")
+REGISTER_OUT_PLUGIN("out_azure_blob")
+REGISTER_OUT_PLUGIN("out_azure_logs_ingestion")
+REGISTER_OUT_PLUGIN("out_azure_kusto")
+REGISTER_OUT_PLUGIN("out_bigquery")
+REGISTER_OUT_PLUGIN("out_calyptia")
+REGISTER_OUT_PLUGIN("out_counter")
+REGISTER_OUT_PLUGIN("out_datadog")
+REGISTER_OUT_PLUGIN("out_es")
+REGISTER_OUT_PLUGIN("out_exit")
+REGISTER_OUT_PLUGIN("out_file")
+REGISTER_OUT_PLUGIN("out_forward")
+REGISTER_OUT_PLUGIN("out_http")
+REGISTER_OUT_PLUGIN("out_influxdb")
+REGISTER_OUT_PLUGIN("out_logdna")
+REGISTER_OUT_PLUGIN("out_loki")
+REGISTER_OUT_PLUGIN("out_kafka")
+REGISTER_OUT_PLUGIN("out_kafka_rest")
+REGISTER_OUT_PLUGIN("out_nats")
+REGISTER_OUT_PLUGIN("out_nrlogs")
+REGISTER_OUT_PLUGIN("out_null")
+REGISTER_OUT_PLUGIN("out_opensearch")
+REGISTER_OUT_PLUGIN("out_oracle_log_analytics")
+
+if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows")
+ REGISTER_OUT_PLUGIN("out_plot")
+endif()
+
+REGISTER_OUT_PLUGIN("out_pgsql")
+REGISTER_OUT_PLUGIN("out_retry")
+REGISTER_OUT_PLUGIN("out_skywalking")
+REGISTER_OUT_PLUGIN("out_slack")
+REGISTER_OUT_PLUGIN("out_splunk")
+REGISTER_OUT_PLUGIN("out_stackdriver")
+REGISTER_OUT_PLUGIN("out_stdout")
+REGISTER_OUT_PLUGIN("out_syslog")
+REGISTER_OUT_PLUGIN("out_tcp")
+REGISTER_OUT_PLUGIN("out_udp")
+REGISTER_OUT_PLUGIN("out_td")
+REGISTER_OUT_PLUGIN("out_lib")
+REGISTER_OUT_PLUGIN("out_flowcounter")
+REGISTER_OUT_PLUGIN("out_gelf")
+REGISTER_OUT_PLUGIN("out_websocket")
+REGISTER_OUT_PLUGIN("out_cloudwatch_logs")
+REGISTER_OUT_PLUGIN("out_kinesis_firehose")
+REGISTER_OUT_PLUGIN("out_kinesis_streams")
+REGISTER_OUT_PLUGIN("out_opentelemetry")
+REGISTER_OUT_PLUGIN("out_prometheus_exporter")
+REGISTER_OUT_PLUGIN("out_prometheus_remote_write")
+REGISTER_OUT_PLUGIN("out_s3")
+REGISTER_OUT_PLUGIN("out_vivo_exporter")
+REGISTER_OUT_PLUGIN("out_chronicle")
+
+# FILTERS
+# =======
+REGISTER_FILTER_PLUGIN("filter_alter_size")
+REGISTER_FILTER_PLUGIN("filter_aws")
+REGISTER_FILTER_PLUGIN("filter_checklist")
+REGISTER_FILTER_PLUGIN("filter_ecs")
+REGISTER_FILTER_PLUGIN("filter_record_modifier")
+REGISTER_FILTER_PLUGIN("filter_throttle")
+REGISTER_FILTER_PLUGIN("filter_throttle_size")
+REGISTER_FILTER_PLUGIN("filter_tensorflow")
+REGISTER_FILTER_PLUGIN("filter_type_converter")
+
+if(FLB_REGEX)
+ REGISTER_FILTER_PLUGIN("filter_kubernetes")
+ REGISTER_FILTER_PLUGIN("filter_modify")
+ REGISTER_FILTER_PLUGIN("filter_multiline")
+ REGISTER_FILTER_PLUGIN("filter_nest")
+ REGISTER_FILTER_PLUGIN("filter_parser")
+endif()
+
+if(FLB_RECORD_ACCESSOR)
+ REGISTER_FILTER_PLUGIN("filter_expect")
+ REGISTER_FILTER_PLUGIN("filter_grep")
+ REGISTER_FILTER_PLUGIN("filter_rewrite_tag")
+endif()
+
+if(FLB_METRICS)
+ REGISTER_FILTER_PLUGIN("filter_log_to_metrics")
+endif()
+
+if(FLB_LUAJIT)
+ REGISTER_FILTER_PLUGIN("filter_lua")
+endif()
+
+REGISTER_FILTER_PLUGIN("filter_stdout")
+
+REGISTER_FILTER_PLUGIN("filter_geoip2")
+
+REGISTER_FILTER_PLUGIN("filter_nightfall")
+if (FLB_WASM)
+ REGISTER_FILTER_PLUGIN("filter_wasm")
+endif ()
+
+# Register external input and output plugins
+if(EXT_IN_PLUGINS)
+ string(REPLACE "," ";" plugins ${EXT_IN_PLUGINS})
+ foreach(entry ${plugins})
+ REGISTER_IN_PLUGIN(${entry})
+ endforeach()
+endif()
+
+if(EXT_OUT_PLUGINS)
+ string(REPLACE "," ";" plugins ${EXT_OUT_PLUGINS})
+ foreach(entry ${plugins})
+ REGISTER_OUT_PLUGIN(${entry})
+ endforeach()
+endif()
+
+if(EXT_PROCESSOR_PLUGINS)
+ string(REPLACE "," ";" plugins ${EXT_PROCESSOR_PLUGINS})
+ foreach(entry ${plugins})
+ REGISTER_PROCESSOR_PLUGIN(${entry})
+ endforeach()
+endif()
+
+if(EXT_FILTER_PLUGINS)
+ string(REPLACE "," ";" plugins ${EXT_FILTER_PLUGINS})
+ foreach(entry ${plugins})
+ REGISTER_FILTER_PLUGIN(${entry})
+ endforeach()
+endif()
+
+# Generate the header from the template
+configure_file(
+ "${PROJECT_SOURCE_DIR}/include/fluent-bit/flb_plugins.h.in"
+ "${PROJECT_SOURCE_DIR}/include/fluent-bit/flb_plugins.h"
+ )
+
+set(FLB_PLUGINS "${flb_plugins}" PARENT_SCOPE)