{"id":38805241,"url":"https://github.com/etf1/kafka-mongo-watcher","last_synced_at":"2026-04-27T09:03:31.849Z","repository":{"id":43659941,"uuid":"245149113","full_name":"etf1/kafka-mongo-watcher","owner":"etf1","description":"A MongoDB collection watcher that pushes oplog events into Kafka","archived":false,"fork":false,"pushed_at":"2026-04-22T11:08:01.000Z","size":99676,"stargazers_count":16,"open_issues_count":6,"forks_count":5,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-04-22T11:12:29.835Z","etag":null,"topics":["database","event-driven","go","golang","kafka","mongodb"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/etf1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-03-05T11:48:00.000Z","updated_at":"2025-10-06T09:06:18.000Z","dependencies_parsed_at":"2024-06-19T02:58:09.145Z","dependency_job_id":"cdc27ee4-2a3a-4bd2-a203-83bd4ff6ad1e","html_url":"https://github.com/etf1/kafka-mongo-watcher","commit_stats":null,"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/etf1/kafka-mongo-watcher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-mongo-watcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-mongo-watcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-mongo-watcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-mongo-watcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/etf1","download_url":"https://codeload.github.com/etf1/kafka-mongo-watcher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/etf1%2Fkafka-mongo-watcher/sbom","scorecard":{"id":383740,"data":{"date":"2025-08-11","repo":{"name":"github.com/etf1/kafka-mongo-watcher","commit":"24d439b3ed36c727c3860200c70326b32524bff2"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.6,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":4,"reason":"Found 13/28 approved changesets -- score normalized to 4","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/master.yml:1","Warn: no topLevel permission defined: .github/workflows/tag.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Binary-Artifacts","score":3,"reason":"binaries present in source code","details":["Warn: binary detected: vendor/github.com/confluentinc/confluent-kafka-go/v2/kafka/librdkafka_vendor/librdkafka_darwin_amd64.a:1","Warn: binary detected: vendor/github.com/confluentinc/confluent-kafka-go/v2/kafka/librdkafka_vendor/librdkafka_darwin_arm64.a:1","Warn: binary detected: vendor/github.com/confluentinc/confluent-kafka-go/v2/kafka/librdkafka_vendor/librdkafka_glibc_linux_amd64.a:1","Warn: binary detected: vendor/github.com/confluentinc/confluent-kafka-go/v2/kafka/librdkafka_vendor/librdkafka_glibc_linux_arm64.a:1","Warn: binary detected: vendor/github.com/confluentinc/confluent-kafka-go/v2/kafka/librdkafka_vendor/librdkafka_musl_linux_amd64.a:1","Warn: binary detected: vendor/github.com/confluentinc/confluent-kafka-go/v2/kafka/librdkafka_vendor/librdkafka_musl_linux_arm64.a:1","Warn: binary detected: vendor/github.com/confluentinc/confluent-kafka-go/v2/kafka/librdkafka_vendor/librdkafka_windows.a:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.4.4 not signed: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/209011640","Warn: release artifact v0.4.4-alpha not signed: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/209007390","Warn: release artifact v0.4.3 not signed: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/209000756","Warn: release artifact v0.4.3-alpha not signed: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/208973557","Warn: release artifact v0.4.2 not signed: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/172321219","Warn: release artifact v0.4.4 does not have provenance: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/209011640","Warn: release artifact v0.4.4-alpha does not have provenance: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/209007390","Warn: release artifact v0.4.3 does not have provenance: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/209000756","Warn: release artifact v0.4.3-alpha does not have provenance: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/208973557","Warn: release artifact v0.4.2 does not have provenance: https://api.github.com/repos/etf1/kafka-mongo-watcher/releases/172321219"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/master.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/master.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/master.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/master.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag.yml:63: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag.yml:84: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag.yml:85: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag.yml:98: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/tag.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tag.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/tag.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/etf1/kafka-mongo-watcher/tag.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:12: pin your Docker image by updating alpine:3.21 to alpine:3.21@sha256:b6a6be0ff92ab6db8acd94f5d1b7a6c2f0f5d10ce3c24af348d333ac6da80685","Info:   0 out of   9 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   0 out of   2 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 19 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":7,"reason":"3 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-18T16:06:09.176Z","repository_id":43659941,"created_at":"2025-08-18T16:06:09.177Z","updated_at":"2025-08-18T16:06:09.177Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32329467,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"online","status_checked_at":"2026-04-27T02:00:06.769Z","response_time":128,"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":["database","event-driven","go","golang","kafka","mongodb"],"created_at":"2026-01-17T12:50:01.398Z","updated_at":"2026-04-27T09:03:31.826Z","avatar_url":"https://github.com/etf1.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kafka MongoDB Watcher\n\n![Test (master)](https://github.com/etf1/kafka-mongo-watcher/workflows/Test%20(master)/badge.svg)\n[![GoDoc](https://godoc.org/github.com/etf1/kafka-mongo-watcher?status.png)](https://godoc.org/github.com/etf1/kafka-mongo-watcher)\n\nThis project listens for a MongoDB collection events (insert, update, delete, ...) also called \"oplogs\" for operation logs and distribute them into a Kafka topic of your choice.\nThere is also a replay mode that allows you to initialize all items of a collection into a Kafka topic for the first time.\n\n## Prerequisites\n\nIn addition of the binary, you will also need the following the Kafka library:\n\n* [librdkafka](https://github.com/edenhill/librdkafka) (report to the Installation part)\n\n## Installation\n\n### Download binary\n\nYou can download the latest version of the binary built for your architecture here:\n\n* Architecture **i386** [\n    [Darwin](https://github.com/etf1/kafka-mongo-watcher/releases/latest/download/kafka-mongo-watcher-darwin-386) /\n    [Linux](https://github.com/etf1/kafka-mongo-watcher/releases/latest/download/kafka-mongo-watcher-linux-386) /\n    [Windows](https://github.com/etf1/kafka-mongo-watcher/releases/latest/download/kafka-mongo-watcher-windows-386.exe)\n]\n* Architecture **amd64** [\n    [Darwin](https://github.com/etf1/kafka-mongo-watcher/releases/latest/download/kafka-mongo-watcher-darwin-amd64) /\n    [Linux](https://github.com/etf1/kafka-mongo-watcher/releases/latest/download/kafka-mongo-watcher-linux-amd64) /\n    [Windows](https://github.com/etf1/kafka-mongo-watcher/releases/latest/download/kafka-mongo-watcher-windows-amd64.exe)\n]\n\n### Using Docker\n\nThe watcher is also available as a [Docker image](https://hub.docker.com/r/etf1/kafka-mongo-watcher).\nYou can run it using the following example and pass configuration environment variables:\n\n```bash\n$ docker run \\\n  -e 'REPLAY=true' \\\n  etf1/kafka-mongo-watcher:latest\n```\n\n### From sources\n\nOptionally, you can also download and build it from the sources. You have to retrieve the project sources by using one of the following way:\n\n```bash\n$ go get -u github.com/etf1/kafka-mongo-watcher\n# or\n$ git clone https://github.com/etf1/kafka-mongo-watcher.git\n```\n\nThen, build the binary:\n```bash\n$ GOOS=linux GOARCH=amd64 go build -ldflags '-s -w' -o kafka-mongo-watcher ./cmd/watcher/\n```\n\n## Usage\n\nIn order to run the watcher, type the following command with the desired arguments.\n\nYou can use flags (as in this example) or environment variables:\n\n```bash\n$ ./kafka-mongo-watcher -REPLAY=true\n...\n\u003cinfo\u003e HTTP server started {\"facility\":\"kafka-mongo-watcher\",\"version\":\"wip\",\"addr\":\":8001\",\"file\":\"/usr/local/Cellar/go/1.14/libexec/src/runtime/asm_amd64.s\",\"line\":1373}\n\u003cinfo\u003e Connected to mongodb database {\"facility\":\"kafka-mongo-watcher\",\"version\":\"wip\",\"uri\":\"mongodb://root:toor@127.0.0.1:27011,127.0.0.1:27012,127.0.0.1:27013/watcher?replicaSet=replicaset\\u0026authSource=admin\"}\n\u003cinfo\u003e Connected to kafka producer {\"facility\":\"kafka-mongo-watcher\",\"version\":\"wip\",\"bootstrap-servers\":\"127.0.0.1:9092\"}\n...\n```\n\n## Available configuration variables\n\nIn dev environment you can copy `.env.dist` in `.env` and edit his content in order to customize easily the env variables.\n\nYou can set/override configuration variables from `.env` file and from `variables environment` and or from cli arguments \n(If a variables was configured in multiple sources the last will override the previous one) \n\nConfiguration variables with prefix are first loaded and then without prefix. For example if you define `KAFKA_MONGO_WATCHER_MONGODB_URI=xxxx` it will used for the mongo uri, even if `MONGODB_URI=yyyy` is set. This allows some overriding case, sometimes useful inside kubernetes cluster.\n\n#### KAFKA_MONGO_WATCHER_PREFIX\n*Type*: string\n\n*Description*: In case you want to specify a different prefix (not `KAFKA_MONGO_WATCHER`) for all configuration environment variables.\n\n*Example value*: `KAFKA_MONGO_WATCHER_PREFIX=CUSTOM` in this case \n\n#### CUSTOM_PIPELINE\n*Type*: string\n\n*Description*: In case you want to specify a filtering pipeline, you can specify it here. It works both wil replay and watch mode.\n\n*Example value*: `[ { \"$match\": { \"fullDocument.is_active\": true } }, { $addFields: { \"custom-field\": \"custom-value\" } } ]`\n\n#### REPLAY\n*Type*: bool\n\n*Description*: In case you want to send all collection's documents once (default: false)\n\n**Hint**: You can also use some built-in variables such as `%currentTimestamp%` that will put the current timestamp value right in the aggregation pipeline.\n\n*Example value with variables*: `[ { \"$match\": { \"date\": { \"$gt\": { \"$date\": { \"$numberLong\": \"%currentTimestamp%\" } } } } } ]`\n\n#### MONGODB_URI\n*Type*: string\n\n*Description*: The MongoDB connection string URI (default: mongodb://root:toor@127.0.0.1:27011,...)\n\n#### MONGODB_COLLECTION_NAME\n*Type*: string\n\n*Description*: The MongoDB collection you want to watch (default: \"items\")\n\n#### MONGODB_DATABASE_NAME\n*Type*: string\n\n*Description*: The MongoDB database name you want to connect to (default: \"watcher\") \n\n#### MONGODB_SERVER_SELECTION_TIMEOUT\n*Type*: duration\n\n*Description*: The MongoDB server selection timeout duration (default: 2s)\n\n#### MONGODB_OPTION_BATCH_SIZE\n*Type*: integer\n\n*Description*: In case you want to enable watch batch size on MongoDB watch (default: 0 / no batch)\n\n#### MONGODB_OPTION_FULL_DOCUMENT\n*Type*: boolean\n\n*Description*: In case you want to retrieve the full document when watching for oplogs (default: true)\n\n#### MONGODB_OPTION_MAX_AWAIT_TIME\n*Type*: duration\n\n*Description*: In case you want to set a maximum value awaiting for new oplogs (default: 0 / don't stop)\n\n#### MONGODB_OPTION_RESUME_AFTER\n*Type*: string\n\n*Description*: In case you want to set a logical starting point for the change stream (example : `{\"_data\": \u003chex string\u003e}`)\n\n#### MONGODB_OPTION_START_AT_DELAY\n*Type*: duration\n\n*Description*: In case you want to set a starting point in the past (now - delay) for the change stream\n\n#### MONGODB_OPTION_START_AT_OPERATION_TIME_I\n*Type*: uint32 *(increment value)*\n\n#### MONGODB_OPTION_START_AT_OPERATION_TIME_T\n*Type*: uint32 *(timestamp)*\n\n*Description*: In case you want to set a timestamp for the change stream to only return changes that occurred at or after the given timestamp (default: nil)\n\n#### MONGODB_OPTION_WATCH_MAX_RETRIES\n*Type*: integer\n\n*Description*: The max number of retries when trying to watch a collection (default: 3, set to 0 to disable retry)\n\n#### MONGODB_OPTION_WATCH_RETRY_DELAY\n*Type*: duration\n\n*Description*: Sleeping delay between two watch attempts (default: 500ms)\n\n#### KAFKA_BOOTSTRAP_SERVERS\n*Type*: string\n\n*Description*: Kafka bootstrap servers list (default: \"127.0.0.1:9092\")\n\n#### KAFKA_TOPIC\n*Type*: string\n\n*Description*: Kafka topic to write into (default: \"kafka-mongo-watcher\")\n\n#### KAFKA_PRODUCE_CHANNEL_SIZE\n*Type*: integer\n\n*Description*: The maximum size of the internal channel producer size (default: 10000)\n\nA big value here can increase the heap memory of the application as all the payload that have to be sent to Kafka will be maintained in channel.\n\n#### KAFKA_MESSAGE_MAX_BYTES\n*Type*: integer\n\n*Description*: The maximum message size in bytes at the producer level (default: 1024*1024)\n\n#### LOG_CLI_VERBOSE\n*Type*: boolean\n\n*Description*: Used to enable/disable log verbosity (default: true)\n\n#### LOG_LEVEL\n*Type*: string\n\n*Description*: Used to define first level you want to start display logs (default: \"info\")\n\n#### GRAYLOG_ENDPOINT\n*Type*: string\n\n*Description*: In case you want to push logs into a Graylog server, just fill this entry with the endpoint\n\n#### HTTP_IDLE_TIMEOUT\n*Type*: duration\n\n*Description*: A idle timeout for HTTP technical server (default: 90s)\n\n#### HTTP_READ_HEADER_TIMEOUT\n*Type*: duration\n\n*Description*: A read timeout for HTTP technical server (default: 1s) \n\n#### HTTP_WRITE_TIMEOUT\n*Type*: duration\n\n*Description*: A write timeout for HTTP technical server (default: 10s)\n\n#### HTTP_TECH_ADDR\n*Type*: string\n\n*Description*: A specified address for HTTP technical server to listen (default: \":8001\")\n\n#### PRINT_CONFIG\n*Type*: boolean\n\n*Description*: Used to enable/disable the configuration print at startup (default: true)\n\n#### PPROF_ENABLED\n*Type*: boolean\n\n*Description*: In case you want to enable Go pprof debugging (default: true). No impact when not used\n\n#### OPEN_TELEMETRY_COLLECTOR_ENDPOINT\n*Type*: string\n\n*Description*: In case you want to enable OpenTelemetry tracing, fill this with the \u003chost\u003e:\u003cport\u003e of your collector endpoint\n\n#### OPEN_TELEMETRY_SAMPLE_RATIO\n*Type*: float64\n\n*Description*: A fraction between 0 and 1 to enable sampling OpenTelemetry traces\n\n## Enable the debug UI\n\n[\u003cimg src=\"https://github.com/etf1/kafka-mongo-watcher/blob/master/misc/debug-ui.png?raw=true\" /\u003e](https://youtu.be/6hyCkqHYFQ8)\n\nYou can enable this debug UI that will be available at [http://127.0.0.1:8001/](http://127.0.0.1:8001/).\n\nYou just have to set `HTTP_DEBUG_ENABLED=true`.\n\nIt will allows you to track real time activity on documents watched by your collection.\n\n## Prometheus metrics\n\nThe watcher also exposes metrics about Go process and Watcher application.\n\nThese metrics can be scraped by Prometheus by browsing the following technical HTTP server endpoint: http://127.0.0.1:8001/metrics\n\n## Run tests\n\nUnit tests can be run with the following command:\n\n```bash\n$ go test -v -mod vendor ./...\n```\n\nAnd integration tests can be run with:\n\n```bash\n$ make test-integration\n```\n\nThis will load needed mongodb and kafka containers and run the tests suite\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetf1%2Fkafka-mongo-watcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fetf1%2Fkafka-mongo-watcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fetf1%2Fkafka-mongo-watcher/lists"}