From 5da14042f70711ea5cf66e034699730335462f66 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 5 May 2024 14:08:03 +0200 Subject: Merging upstream version 1.45.3+dfsg. Signed-off-by: Daniel Baumann --- src/fluent-bit/plugins/CMakeLists.txt | 416 ++++++++++++++++++++++++++++++++++ 1 file changed, 416 insertions(+) create mode 100644 src/fluent-bit/plugins/CMakeLists.txt (limited to 'src/fluent-bit/plugins/CMakeLists.txt') 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) -- cgit v1.2.3