forked from envoyproxy/envoy
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
access_loggers: add Fluentd access logger extension (envoyproxy#32320)
* initial fluentd access logger implementation Signed-off-by: ohadvano <[email protected]> * fix Signed-off-by: ohadvano <[email protected]> * fixes Signed-off-by: ohadvano <[email protected]> * fix Signed-off-by: ohadvano <[email protected]> * fix format Signed-off-by: ohadvano <[email protected]> * fix format Signed-off-by: ohadvano <[email protected]> * test Signed-off-by: ohadvano <[email protected]> * format Signed-off-by: ohadvano <[email protected]> * format and test fix Signed-off-by: ohadvano <[email protected]> * revert Signed-off-by: ohadvano <[email protected]> * fix compile_time_options Signed-off-by: ohadvano <[email protected]> * add docs reference Signed-off-by: ohadvano <[email protected]> * use exception safe and add tests Signed-off-by: ohadvano <[email protected]> * fix format Signed-off-by: ohadvano <[email protected]> * const and extension status Signed-off-by: ohadvano <[email protected]> * comment and remove redundant build tags Signed-off-by: ohadvano <[email protected]> * fix format Signed-off-by: ohadvano <[email protected]> * use weak_ptr and pin Signed-off-by: ohadvano <[email protected]> * fix format Signed-off-by: ohadvano <[email protected]> * recrate if expired Signed-off-by: ohadvano <[email protected]> --------- Signed-off-by: ohadvano <[email protected]> Signed-off-by: ohadvano <[email protected]>
- Loading branch information
Showing
31 changed files
with
1,411 additions
and
0 deletions.
There are no files selected for viewing
Validating CODEOWNERS rules …
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# DO NOT EDIT. This file is generated by tools/proto_format/proto_sync.py. | ||
|
||
load("@envoy_api//bazel:api_build_system.bzl", "api_proto_package") | ||
|
||
licenses(["notice"]) # Apache 2 | ||
|
||
api_proto_package( | ||
deps = ["@com_github_cncf_xds//udpa/annotations:pkg"], | ||
) |
70 changes: 70 additions & 0 deletions
70
api/envoy/extensions/access_loggers/fluentd/v3/fluentd.proto
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
syntax = "proto3"; | ||
|
||
package envoy.extensions.access_loggers.fluentd.v3; | ||
|
||
import "google/protobuf/duration.proto"; | ||
import "google/protobuf/struct.proto"; | ||
import "google/protobuf/wrappers.proto"; | ||
|
||
import "udpa/annotations/status.proto"; | ||
import "validate/validate.proto"; | ||
|
||
option java_package = "io.envoyproxy.envoy.extensions.access_loggers.fluentd.v3"; | ||
option java_outer_classname = "FluentdProto"; | ||
option java_multiple_files = true; | ||
option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/access_loggers/fluentd/v3;fluentdv3"; | ||
option (udpa.annotations.file_status).package_version_status = ACTIVE; | ||
|
||
// [#protodoc-title: Fluentd access log] | ||
|
||
// Configuration for the *envoy.access_loggers.fluentd* :ref:`AccessLog <envoy_v3_api_msg_config.accesslog.v3.AccessLog>`. | ||
// This access log extension will send the emitted access logs over a TCP connection to an upstream that is accepting | ||
// the Fluentd Forward Protocol as described in: `Fluentd Forward Protocol Specification | ||
// <https://github.com/fluent/fluentd/wiki/Forward-Protocol-Specification-v1>`_. | ||
// [#extension: envoy.access_loggers.fluentd] | ||
// [#next-free-field: 7] | ||
message FluentdAccessLogConfig { | ||
// The upstream cluster to connect to for streaming the Fluentd messages. | ||
string cluster = 1 [(validate.rules).string = {min_len: 1}]; | ||
|
||
// A tag is a string separated with '.' (e.g. log.type) to categorize events. | ||
// See: https://github.com/fluent/fluentd/wiki/Forward-Protocol-Specification-v1#message-modes | ||
string tag = 2 [(validate.rules).string = {min_len: 1}]; | ||
|
||
// The prefix to use when emitting :ref:`statistics <config_access_log_stats>`. | ||
string stat_prefix = 3 [(validate.rules).string = {min_len: 1}]; | ||
|
||
// Interval for flushing access logs to the TCP stream. Logger will flush requests every time | ||
// this interval is elapsed, or when batch size limit is hit, whichever comes first. Defaults to | ||
// 1 second. | ||
google.protobuf.Duration buffer_flush_interval = 4 [(validate.rules).duration = {gt {}}]; | ||
|
||
// Soft size limit in bytes for access log entries buffer. The logger will buffer requests until | ||
// this limit it hit, or every time flush interval is elapsed, whichever comes first. When the buffer | ||
// limit is hit, the logger will immediately flush the buffer contents. Setting it to zero effectively | ||
// disables the batching. Defaults to 16384. | ||
google.protobuf.UInt32Value buffer_size_bytes = 5; | ||
|
||
// A struct that represents the record that is sent for each log entry. | ||
// https://github.com/fluent/fluentd/wiki/Forward-Protocol-Specification-v1#entry | ||
// Values are rendered as strings, numbers, or boolean values as appropriate. | ||
// Nested JSON objects may be produced by some command operators (e.g. FILTER_STATE or DYNAMIC_METADATA). | ||
// See :ref:`format string<config_access_log_format_strings>` documentation for a specific command operator details. | ||
// | ||
// .. validated-code-block:: yaml | ||
// :type-name: envoy.extensions.access_loggers.fluentd.v3.FluentdAccessLogConfig | ||
// | ||
// record: | ||
// status: "%RESPONSE_CODE%" | ||
// message: "%LOCAL_REPLY_BODY%" | ||
// | ||
// The following msgpack record would be created: | ||
// | ||
// .. code-block:: json | ||
// | ||
// { | ||
// "status": 500, | ||
// "message": "My error message" | ||
// } | ||
google.protobuf.Struct record = 6 [(validate.rules).message = {required: true}]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
licenses(["notice"]) # Apache 2 | ||
|
||
cc_library( | ||
name = "msgpack", | ||
srcs = glob([ | ||
"src/*.c", | ||
"include/**/*.h", | ||
"include/**/*.hpp", | ||
]), | ||
defines = ["MSGPACK_NO_BOOST"], | ||
includes = [ | ||
"include", | ||
], | ||
strip_include_prefix = "include", | ||
visibility = ["//visibility:public"], | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
load( | ||
"//bazel:envoy_build_system.bzl", | ||
"envoy_cc_extension", | ||
"envoy_cc_library", | ||
"envoy_extension_package", | ||
) | ||
|
||
licenses(["notice"]) # Apache 2 | ||
|
||
envoy_extension_package() | ||
|
||
envoy_cc_library( | ||
name = "substitution_formatter_lib", | ||
srcs = ["substitution_formatter.cc"], | ||
hdrs = ["substitution_formatter.h"], | ||
deps = [ | ||
"//envoy/formatter:substitution_formatter_interface", | ||
"//source/common/json:json_loader_lib", | ||
], | ||
) | ||
|
||
envoy_cc_library( | ||
name = "fluentd_access_log_lib", | ||
srcs = ["fluentd_access_log_impl.cc"], | ||
hdrs = ["fluentd_access_log_impl.h"], | ||
external_deps = [ | ||
"msgpack", | ||
], | ||
deps = [ | ||
":substitution_formatter_lib", | ||
"//envoy/access_log:access_log_interface", | ||
"//source/common/access_log:access_log_lib", | ||
"//source/extensions/access_loggers/common:access_log_base", | ||
"@envoy_api//envoy/extensions/access_loggers/fluentd/v3:pkg_cc_proto", | ||
], | ||
) | ||
|
||
envoy_cc_extension( | ||
name = "config", | ||
srcs = ["config.cc"], | ||
hdrs = ["config.h"], | ||
deps = [ | ||
":fluentd_access_log_lib", | ||
":substitution_formatter_lib", | ||
"//envoy/access_log:access_log_config_interface", | ||
"//envoy/registry", | ||
"//source/common/config:config_provider_lib", | ||
"//source/common/formatter:substitution_format_string_lib", | ||
"//source/common/protobuf", | ||
], | ||
) |
Oops, something went wrong.