{"id":31658429,"url":"https://github.com/couchbase/couchbase-fluent-bit","last_synced_at":"2026-05-01T03:00:56.125Z","repository":{"id":39000650,"uuid":"351404241","full_name":"couchbase/couchbase-fluent-bit","owner":"couchbase","description":"Fast and Lightweight Log processor and forwarder. Based on upstream Fluent Bit, this includes some additional Couchbase specific configuration and support - https://github.com/fluent/fluent-bit","archived":false,"fork":false,"pushed_at":"2026-04-09T15:18:16.000Z","size":16150,"stargazers_count":13,"open_issues_count":6,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-09T17:16:07.879Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/couchbase.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-03-25T11:02:11.000Z","updated_at":"2026-04-09T15:21:59.000Z","dependencies_parsed_at":"2023-02-16T16:32:21.395Z","dependency_job_id":"c334e59b-ca8d-41fc-b949-f70ae0918a7d","html_url":"https://github.com/couchbase/couchbase-fluent-bit","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/couchbase/couchbase-fluent-bit","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-fluent-bit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-fluent-bit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-fluent-bit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-fluent-bit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/couchbase","download_url":"https://codeload.github.com/couchbase/couchbase-fluent-bit/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/couchbase%2Fcouchbase-fluent-bit/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32483406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-10-07T15:22:25.316Z","updated_at":"2026-05-01T03:00:56.114Z","avatar_url":"https://github.com/couchbase.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# couchbase-fluent-bit\n\n## Summary\n\nThe Couchbase Fluent Bit image is an image based on the official [Fluent Bit](https://fluentbit.io/) [image](https://hub.docker.com/r/fluent/fluent-bit/) with some additional support for the following:\n1. Dynamic configuration reload - changes to the configuration are watched for and when detected trigger a restart of Fluent Bit to pick up the new configuration.\n2. Rebalace report pre-processing - the rebalance reports produced by Couchbase need some additional pre-processing before they can be parsed by Fluent Bit.\n3. SHA1 LUA hashing implementation and redaction support included (but not enabled by default).\n\nThis image is intended to be used as a sidecar with a Couchbase Autonomous Operator deployment to automatically stream various couchbase logs.\nThe log streaming can be dynmically configured per namespace/Couchbase cluster via a standard Kubernetes secret which is mounted then as the configuration directory.\n\nAt this time, the image is only officially tested on Kubernetes in conjunction with the Couchbase Autonomous Operator.\nHowever, nothing has been added to the image that explicitly prevents it from being run in non-Kubernetes environments.\nFluent Bit itself supports various deployment options so refer to its documentation for details.\n\nTo help provide the capability in this image we make use of other OSS:\n* https://github.com/kubesphere/fluent-bit\n* https://github.com/mpeterv/sha1\n* https://github.com/fluent/fluent-bit\n\n![Overview of logging sidecar](docs/overview-of-sidecar-logging.png \"Overview of sidecar logging\")\n\n### Logs supported\n\nRefer to the [official documentation](https://docs.couchbase.com/server/current/manage/manage-logging/manage-logging.html#log-file-listing) for all possible logs output by Couchbase Server.\n\nThis image is used to parse and send the following logs to standard output by default:\n* analytics_debug.log\n* audit.log\n* babysitter.log\n* couchdb.log\n* debug.log\n* eventing.log\n* fts.log\n* goxdcr.log\n* http_access.log\n* http_access_internal.log\n* indexer.log\n* json_rpc.log\n* mapreduce_errors.log\n* memcached.log\n* metakv.log\n* ns_couchdb.log\n* projector.log\n* prometheus.log\n* Rebalance reports\n* reports.log\n\nIt will also handle the logs like `info.log`, `error.log` that are a subset of the full `debug.log` - there is no point parsing all these logs as it will duplicate the information.\n\nThe definition of \"parse\" here means to turn the unstructured, possibly multi-line log output into structured data we can filter, mutate \u0026 forward to any supported Fluent Bit endpoint.\nFor the purposes of this image, we essentially chunk up the log lines into timestamp, level and message - message can be over multiple lines.\nAs an example (taken from `tests/logs/memcached.log.000000.txt`):\n`2021-03-09T17:32:01.859344+00:00 INFO Couchbase version 6.6.0-7909 starting.`\nWill become (taken from `tests/logs/memcached.log.000000.txt.expected`):\n`[1615311121.859344000, {\"filename\":\"/fluent-bit/test/logs/memcached.log.000000.txt\",\"timestamp\":\"2021-03-09T17:32:01.859344+00:00\",\"level\":\"INFO\",\"message\":\"Couchbase version 6.6.0-7909 starting.\"}]`\nThis is a structured stream made up of various fields which can be sent to any supported output (multiple potentially and/or different to other logs):\n* `\"timestamp\":\"2021-03-09T17:32:01.859344+00:00\"`\n* `\"level\":\"INFO\"`\n* `\"message\":\"Couchbase version 6.6.0-7909 starting.\"`\n\nEvery log is tagged individually to form its own stream within the log shipper.\nThe tag format is `couchbase.log.\u003cname\u003e`.\nEach stream can be managed independently so refer to the official Fluent Bit documentation for full details on the extensive capability and configuration available.\n\nOther logs than the list above may be supported by the provided parsers as well.\n\n## Technical Overview\n\nThis image is essentially the official Fluent Bit image with an entrypoint watcher process that handles both restarting Fluent Bit on config change and pre-processing the rebalance reports.\n\n![Overview of image](docs/image-overview.png \"Overview of image\")\n\n### Parsing\nFor the purposes of this implementation, parsing is very simple as we’re not trying to extract any more information than the simple timestamp, log level and log message.\nA few of the logs (http and JSON format ones - audit \u0026 rebalance reports) can have some extra fields extracted as it is straightforward but any significant processing is left for the consumer to manage.\n\nThe intention is to keep it as simple as possible and produce a structured log stream that can be filtered or consumed with further processing downstream as required.\n\nFor those logs with multiline output, the parser should capture everything up to the next log statement. In some cases this includes large content (e.g. Java thread dumps) but this is all treated as part of the log message for the consumer to work with.\n\nThe parsers are provided in `conf/parsers-couchbase.conf` along with default configuration for each log file in `conf/couchbase/in-*.conf`.\nWe use a separate config file per input type/parser configuration (log file type) to make is simpler to reuse for a custom configuration either in testing or by end users.\n\n### Rebalance reports and dynamic configuration\nThe official version of Fluent Bit does not support dynamic changes to its configuration: if you change the log shipping configuration then you have to restart it.\nWe cannot restart the pods without triggering rebalance.\n\nThe rebalance reports have a bit of an issue with the default tail plugin: they are a file with no new lines.\nThe full JSON dump of the report is all over a single line which can be quite large (not for a log file but for a single line in a log file).\nThe tail plugin works on a per-line basis so cannot handle the reports as they currently are.\nAdditionally there is the question of which timestamp to use as the “log” timestamp - a rebalance report can have multiple ones using common tags.\n\nWe have solved both these problems by forking the Kubesphere solution (a fork from the official image) to resolve the dynamic configuration issue.\nThis watches for config file changes and then restarts Fluent Bit to pick up the new configuration but all within the container.\nWe can extend this to handle the rebalance reports: we watch for them, when we see one we copy it to a temporary location with any pre-processing we want done and then Fluent Bit reads the copy.\nWe copy it for these reasons rather than updating in place:\n1. No change to the original log or anything reliant on it (e.g. rotation).\n2. The logging sidecar deliberately has no write access to the log volume so it cannot modify any logs.\n3. The log timestamp can be collected from the rebalance report name which includes the time it was created.\n\nWhilst Fluent Bit is restarting, no logs will be shipped out of the container.\nWe could re-parse logs but this would then lead to duplicate entries from previously parsed logs.\nThe intention is that reconfiguration is an asynchronous un-common operation so the temporary potential loss of logs is acceptable.\n\nInterestingly as part of this work, we discovered that the `exec` plugin is not usable in a container without `/bin/sh`, i.e. all the official ones including the debug variant with busybox.\nThe original intention was to use this to process the log file but that was impossible: even with a compiled binary it still must be invoked via `/bin/sh`.\n\n### Redaction\nLog redaction in flight has been demonstrated and is tested but will not be provided by default.\n\nA tutorial is provided on how to configure this if required so refer to the Couchbase Autonomous Operator documentation for that.\nThere may be a performance impact to redaction in flight and it will also complicate debugging of problems if the logs are auto-redacted within the cluster.\n\nTo simplify usage we build everything required into the container image: this is a minimal image so has no support for hashing out of the box.\nwe therefore include the LUA implementation from: https://github.com/mpeterv/sha1 .\nLua provides the best approach to dealing with redaction anyway so attaching a Lua hashing library made the most sense.\n\nSimilarly any other log mutation could be done that is supported by Fluent Bit.\nUsing a LUA script provides a lot of flexibility but there are plenty of other simpler plugins to modify the content or destination of a log.\nThe recommendation when using LUA parsing is to dedicate a worker thread to it.\n\n### Specific parser information\n\nEach of these sections references the specific parser set up in conf/parsers-couchbase.conf.\n\n#### couchbase_json_log_nanoseconds and couchbase_rebalance_report\nThese are both JSON parsers so support a full JSON extraction/forwarding.\nThere is no need to match lines in a legacy way with a regex.\n\n#### couchbase_http\nThe HTTP parsers reuse the default Fluent Bit Apache2 regex with some minor changes.\nThis means they do not provide a simple triplet of timestamp, level, message but instead include various fields from the message instead.\n\n#### couchbase_simple_log_mixed\nSome of the logs (FTS and eventing in the default configuration) provide a mixed timestamp output which is difficult to parse in one go.\n```\n2021/03/09 17:32:15 cbauth: ...\n2021-03-09T17:32:15.303+00:00 [INFO] ...\n```\nInstead the timestamps are extracted via a generic parser and then could be run through an additional stage to parse it in the appropriate format.\nThis may not be required if it is acceptable as per the default configuration to use local time, i.e. the time at which Fluent Bit tails that line in the log.\n\n#### couchbase_erlang_multiline\nThe multi-line erlang parser originally parsed everything after the square bracket as the message.\nUnfortunately the regex parser does not seem to like a new line immediately after the bracket - with some text first then a new line it works fine.\nTherefore the message includes everything after the timestamp, this guarantees we get all multiline output and also anything else after timestamp.\n\n## Usage\n\nThe official Couchbase Autonomous Operator documentation provides full details on using this with Kubernetes including additional tutorials on consuming logs with Loki or sending to Azure, S3, etc.\n\nThe image is basically identical to the official Fluent Bit image and can be used in the same fashion.\nIf the capabilities listed above are not required then the official Fluent Bit image can be used as well.\n\nThis image is only intended to be used with Kubernetes although it may be usable as a standalone Docker image either for a containerised or on-premise deployment but this is not an officially supported configuration.\n\nAn example local configuration running three Couchbase nodes using docker-compose:\n```\nversion: \"3.9\"\nservices:\n    couchbase-server1:\n        container_name: db1\n        image: couchbase:7.0.1\n        ports:\n          - \"8091-8096:8091-8096\"\n          - \"11210-11211:11210-11211\"\n        volumes:\n          - log-volume:/opt/couchbase/var/lib/couchbase/logs/:rw\n    couchbase-server2:\n        container_name: db2\n        image: couchbase:7.0.1\n        expose:\n            - \"8091-8096\"\n            - \"11210-11211\"\n    couchbase-server3:\n        container_name: db3\n        image: couchbase:7.0.1\n        expose:\n            - \"8091-8096\"\n            - \"11210-11211\"\n    log-streamer:\n        container_name: logging\n        image: couchbase/fluent-bit:1.1.0\n        depends_on:\n            - couchbase-server1\n        environment:\n            - COUCHBASE_LOGS=/opt/couchbase/var/lib/couchbase/logs\n        volumes:\n          - log-volume:/opt/couchbase/var/lib/couchbase/logs/:ro\nvolumes:\n    log-volume:\n```\nThe volume could be replaced with a bind mount for an on-premise Couchbase Server deployment - and the container could be run directly with a container runtime rather than docker-compose (as per Testing example below.) Couchbase Server will need configuration when it starts up above - it currently does not support a declarative model to auto-provision the containers on startup.\n\nNote that this image copes with multi-line input logs but the default output to standard output will still be over multiple lines for these same messages.\nThis means if you are collecting this information with a Daemonset (e.g. another Fluent Bit or PromTail) reading the container logs (from standard output) then you will need to capture multi-line output.\nIt will all be inside a standard [`msgpack`](https://msgpack.org/) Fluent Bit record format though so can be parsed that way.\n\nA full example local [Loki](https://grafana.com/docs/loki/latest/overview/) stack deployment (Loki+Grafana - configured) is also provided in the [tools/loki-stack](tools/loki-stack/) directory, this can be run via a simple `docker compose up` command.\nThe Grafana instance will then be exposed via `localhost:3000`.\nThis also supports a blog post showing how to do this in detail: https://blog.couchbase.com/using-fluent-bit-for-log-forwarding-processing-with-couchbase-server/\n\n### Configuration\n\n| Environment variable | Description | Default |\n| --- | --- | --- |\n| COUCHBASE_FLUENT_BIT_CONFIG | The directory containing the Couchbase (or other) configuration files, primarily used for dynamic output configuration. | /fluent-bit/etc/couchbase |\n| COUCHBASE_LOGS | The directory in which to find the various Couchbase logs we are interested in. | /opt/couchbase/var/couchbase/logs |\n| COUCHBASE_AUDIT_LOGS | The directory in which to find the Couchbase audit log file. | /opt/couchbase/var/couchbase/logs |\n| COUCHBASE_LOGS_BINARY | The Fluent Bit binary to launch. | /fluent-bit/bin/fluent-bit |\n| COUCHBASE_LOGS_CONFIG_FILE | The config file to use when starting Fluent Bit. | /fluent-bit/config/fluent-bit.conf |\n| COUCHBASE_LOGS_DYNAMIC_CONFIG | The directory to watch for config changes and restart Fluent Bit. | /fluent-bit/config |\n| COUCHBASE_LOGS_REBALANCE_TMP_DIR | The temporary directory for out pre-processed rebalance reports. | /tmp/rebalance-logs |\n| COUCHBASE_K8S_CONFIG_DIR | The location where [DownwardAPI](https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/) pushes pod meta-data to load as environment variables. | /etc/podinfo |\n| MEM_BUF_LIMITS_ENABLED | Whether memory buffer limits should be enabled on the input plugins | false |\n| LOKI_HOST | The hostname used by the Loki output plugin (if enabled). | loki |\n| LOKI_MATCH | The set of matching streams to send to Loki. | no-match (prevents any) |\n| LOKI_PORT | The port used by the Loki output plugin (if enabled). | 3100 |\n| ES_HOST | The hostname used by the Elasticsearch output plugin (if enabled). | elasticsearch |\n| ES_MATCH| The set of matching streams to send to Elasticsearch. | no-match (prevents any) |\n| ES_PORT | The port used by the Elasticsearch output plugin (if enabled). | 9200 |\n| ES_INDEX | The index used by the Elasticsearch output plugin (if enabled). | \"couchbase\"\n| ES_HTTP_USER | The username for API access used by the Elasticsearch output plugin (if enabled). |\n| ES_HTTP_PASSWD | The password for the user defined by `ES_HTTP_USER` for the Elasticsearch output plugin (if enabled). |\n| SPLUNK_HOST | The hostname used by the Splunk output plugin (if enabled). | splunk |\n| SPLUNK_MATCH | The set of matching streams to send to Splunk http event collector. | no-match (prevents any) |\n| SPLUNK_PORT | The port used by the Splunk output plugin (if enabled). | 8088 |\n| SPLUNK_TOKEN | The token used by the Splunk output plugin (if enabled). | abcd1234 |\n| HTTP_PORT | The port used for the HTTP server run by Fluent Bit (enabled by default). | 2020 |\n| STD_MATCH | The set of matching streams to send to standard output. | couchbase.log.* |\n\nBe careful to make sure you have enough file descriptors configured to use this functionality, particularly for local development with something like Kubernetes-In-Docker(KIND).\n\n### CAO and K8S labels\n\nThe Couchbase Autonomous Operator (CAO) automatically pushes all pod labels \u0026 annotations into the container via the [DownwardAPI](https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/).\nThese are then loaded as environment variables by the Couchbase watcher process so this can be a very useful way to pass configuration into a container.\n\nIn addition, any variables that start with the `fluentbit.couchbase.com/` have some additional processing applied: the prefix is removed and everything left is upper-cased plus special characters replaced with underscores.\n\n`fluentbit.couchbase.com/loki_host: loki.monitoring` will therefore provide `LOKI_HOST=loki.monitoring`.\n\nUser-defined labels and annotations can be specified with CAO via the pod template.\n\n### Memory buffer limits\n\nBy default, memory buffer limits are disabled. However, it is possible to enable them by setting `MEM_BUF_LIMITS_ENABLED` to true. \nWhen enabled the watcher will estimate the memory limits by using the total number of input and output plugins and using the \n[estimating guide](https://docs.fluentbit.io/manual/administration/memory-management#estimating) from Fluent Bit.\nThis can be useful in situtation where memory is restricted — for instances preventing the container from being OOMKilled in Kubernetes.\n\n### Output plugin dynamic enabling\n\nBy default we only output to standard output but other output plugins are included they just do not match any existing streams.\nIt is possible to enable matching of streams to output plugins via the `\u003cPLUGIN\u003e_MATCH` environment variable.\nFor example to enable sending all logs to Loki, set `LOKI_MATCH=\"*\"`.\nRefer to the [default configuration](./conf/fluent-bit.conf) to see which output plugins are enabled.\n\nThe major benefit of this for CAO deployments is we only need to have user-defined labels like so to set up Loki usage:\n```\n      pod:\n        metadata:\n          annotations:\n            fluentbit.couchbase.com/loki.match: \"*\"\n            fluentbit.couchbase.com/loki.host: loki.monitoring\n```\n\n## Building\n\nThis repository consumes [fluent-bit configuration](https://github.com/couchbaselabs/couchbase-fluent-bit-config).\nTo get started for building, \n1. `repo init -u https://github.com/couchbase/manifest -m couchbase-fluent-bit/main.xml`\n2. `repo sync`\n3. `cd fluent-bit-sidecar`\n\nThis repository can then be built by the internal Couchbase process with a `Makefile`.\n\nThis can be easily reused though to build locally either by installing the relevant tools or using a Golang container to build the source.\n\n## Testing\n\nA set of automated tests are provided to verify changes against for sanity checks and some regression testing too of known input and expected output.\nNew sets of input data can be used as well by running the container with the logs (input) and expected output using a volume mount:\n```\ndocker run --rm -it --mount type=bind,source=\u003cdirectory\u003e,target=/fluent-bit/tests/logs \u003ctest container name\u003e\n```\nThe directory should be made up of matching pairs of logs and expected output in the following format: `\u003cname\u003e.log` --\u003e `\u003cname\u003e.log.expected`.\nThe container will run the Couchbase Fluent Bit image against each log file in turn with some basic sanity checks and produce an output file named `\u003cname\u003e.log.actual`.\nThe `tests/run-tests.sh` script will then iterate over all expected output to compare it against actual output.\n\nTo help with verifying new output, a simple NodeJS tool is provided in `tools/log-verifier`.\nThis can be run locally or as an image against the files to check, when run as an image the file will need mounting into the container and passing as an argument.\n\nFor the Red Hat variant we make best effort to verify Fluent Bit however the only supported usage is of the `tail` input plugin to `stdout` output plugin pipeline used in the default configuration for the Couchbase Autonomous Operator. The Red Hat test container includes the unit tests which can be run manually as required to verify changes.\n\n## Feedback\nPlease use our official [JIRA board](https://issues.couchbase.com/projects/K8S/issues/?filter=allopenissues) to report any bugs and issues with the `logging` component.\nWe also encourage you to use the [Couchbase Forums](https://forums.couchbase.com/c/couchbase-server/Kubernetes) for posting any questions or feedback that you might have.\n\n## Support\nAs indicated above, Couchbase only supports the use of this image when used with the Couchbase Autonomous Operator.\nSpecificially, the default configuration provided by the operator and the ability to provide a custom configuration is supported.\nBest efforts are made to confirm that custom configurations will work with various plugins but any issues with the custom configuration, plugins or other components are outside of the supported scope.\n\n### Compatibility matrix for CAO\n\n[Compatibility Matrix](https://docs.couchbase.com/operator/current/prerequisite-and-setup.html)\n\n## Release tagging and branching\nEvery release to DockerHub will include a matching identical Git tag here, i.e. the tags on https://hub.docker.com/r/couchbase/fluent-bit/tags will have a matching tag in this repository that built them.\nUpdates will be pushed to the `main` branch often and then tagged once released as a new image version.\nTags will not be moved after release, even just for a documentation update - this should trigger a new release or just be available as the latest version on `main`.\n\nThe branching strategy is to minimise any branches other than `main` following the standard [GitHub flow model](https://guides.github.com/introduction/flow/).\n\n## Releases\n\nA quick summary of each release is given below to help understand the changes.\nFor full details have a look at the diff of the tags and associated commits for each: https://github.com/couchbase/couchbase-fluent-bit/releases/tag/\n* main\n  * TBD\n* 1.2.3\n  * Fixed amd64 binaries in arm64 containers\n* 1.2.2\n  * Moved Couchbase Fluent Bit to [Fluent Bit Config](https://github.com/couchbaselabs/couchbase-fluent-bit-config)\n  * Updated Fluent Bit to [1.9.8](https://fluentbit.io/announcements/v1.9.8/).\n  * Updated Couchbase config to be compatible with new Fluent Bit version.\n  * Updated Go version to 1.19.4\n* 1.2.1\n  * Updated Dockerfile to fix broken builds.\n* 1.2.0\n  * Updated Fluent Bit to [1.8.14](https://fluentbit.io/announcements/v1.8.14/).\n  * Resolved issue where [Loki labels were being set incorrectly](https://issues.couchbase.com/browse/K8S-2530).\n  * Updated compatibility matrix.\n  * Added in Elasticsearch and Splunk output plugins.\n  * Changed output Record `couchbase.server` to `couchbase.server.server` to support Elasticsearch outputs.\n  * Added memory buffer limits.\n* 1.1.2\n  * Updated to Go 1.17.1 - this relates to the internal Watcher code layered on top of Fluent Bit.\n  * Additional configuration variables now available for [Loki output and the HTTP server](https://issues.couchbase.com/browse/K8S-2354).\n  * New support for enabling output plugins via environment variables fed in from [Kubernetes labels or annotations](./tools/loki-k8s-stack/values.yaml).\n  * Updated to Fluent Bit [1.8.8](https://www.fluentbit.io/announcements/v1.8.8/).\n* 1.1.1\n  * Updated to Fluent Bit [1.8.7](https://www.fluentbit.io/announcements/v1.8.7/).\n  * Updates to [support on-premise usage with rotated memcached logs](https://issues.couchbase.com/browse/K8S-2343).\n  * Resolve issue with [missing version information in the output](https://issues.couchbase.com/browse/K8S-2355).\n  * Updated [loki stack example](tools/loki-stack/) to handle changes to user security preventing log file reading.\n  * Added support for [mapreduce_errors.log](https://issues.couchbase.com/browse/K8S-2426) parsing.\n  * Added [test for rebalance output](https://issues.couchbase.com/browse/K8S-2394) being present.\n  * Added `level_numeric` field for a [numeric value for the log level](https://issues.couchbase.com/browse/K8S-2402) to simplify querying downstream.\n* 1.1.0\n  * Updated to Fluent Bit [1.8.2](https://www.fluentbit.io/announcements/v1.8.2/).\n    * Matching change in versions here, 1.0.4 --\u003e 1.1.0.\n  * Added [version information into records](conf/couchbase/filter-add-common-info.conf).\n  * Ensures log `level` is always one of `DEBUG, INFO, WARN, ERROR, UNKNOWN` and maintains the original value if not one of these as `original_level`, e.g. `\"original_level\":\"audit\",\"level\":\"UNKNOWN\"`.\n  * Splits `Path_Key` (`filename`) into `path` \u0026 `file` keys to make it easier to filter on downstream, e.g. `\"file_path\":\"/fluent-bit/test/logs\",\"file\":\"eventing.log\",\"filename\":\"/fluent-bit/test/logs/eventing.log\"`.\n  * Tested against Couchbase Server 7.0.0, added parsing for new `prometheus.log`.\n* 1.0.4\n  * Switch to using `record_modifier` for [common info](conf/couchbase/filter-add-common-info.conf) so missing variables do not trigger an exit, just an error.\n  * Removed Fluent Bit tests from running on every RHEL build: [issue](https://github.com/fluent/fluent-bit/issues/3520) with reliability so only run manually now on version change.\n  * Git version information now included in log output.\n  * Log entire environment at launch.\n  * Supports redaction of the `log` key as well now for un-parsed logfiles.\n  * Simple example showing how to implement a file-transfer service with the `forward` plugin.\n  * Updated to Fluent Bit [1.7.8](https://www.fluentbit.io/announcements/v1.7.8/).\n* 1.0.3\n  * Disables auto-run of Fluent Bit unit tests during RHEL builds due to timing issue making them unreliable: https://github.com/fluent/fluent-bit/issues/3520\n  * Added run-as numeric USER to support security improvements.\n  * Copyright headers added to all source files along with CI checks to confirm it on every build.\n  * Resolved race condition in unit tests for restarting.\n* 1.0.2\n  * Major refactor to move from single `main.go` file to Go module across packages with unit tests as well for each sub-component.\n  * Update to Fluent Bit [1.7.4](https://www.fluentbit.io/announcements/v1.7.4/).\n  * Linting and other CI improvements.\n  * [Addition of extra common information](https://github.com/couchbase/couchbase-fluent-bit/blob/d474c83616f7444e3c627cb63d4fe021969073e6/conf/couchbase/filter-add-common-info.conf) as extra keys when run with the operator (pod and couchbase cluster information).\n  * [Additional filters](https://github.com/couchbase/couchbase-fluent-bit/blob/d474c83616f7444e3c627cb63d4fe021969073e6/conf/couchbase/filter-handle-levels.conf) from observability work to standardise log levels for easy use with Grafana, along with [example output configuration](https://github.com/couchbase/couchbase-fluent-bit/blob/d474c83616f7444e3c627cb63d4fe021969073e6/conf/couchbase/out-loki.conf) and supporting documentation.\n  * [Optional filter](https://github.com/couchbase/couchbase-fluent-bit/blob/d474c83616f7444e3c627cb63d4fe021969073e6/conf/couchbase/filter-common-problems.conf) to pick up examples of common problems, purely an initial example so not used by default.\n  * Reduced refresh interval to pick up new log files to 10 seconds - previously was 60 seconds.\n  * Enabled HTTP server by default to support metrics and healthchecks if required - on port 2020.\n  * Explicit non-root USER support.\n* 1.0.1\n  * Minor licensing updates to pass Red Hat certification checks.\n* 1.0.0\n  * Initial release containing the various watchers and parsers.\n  * Based on Fluent Bit [1.7.3](https://www.fluentbit.io/announcements/v1.7.3/).\n\n## License\n\nCopyright 2021 Couchbase Inc.\n\nLicensed under the Apache License, Version 2.0\n\nSee [LICENSE](https://github.com/couchbase/couchbase-operator-logging/blob/master/LICENSE) for further details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcouchbase%2Fcouchbase-fluent-bit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcouchbase%2Fcouchbase-fluent-bit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcouchbase%2Fcouchbase-fluent-bit/lists"}