{"id":37119812,"url":"https://github.com/davidsbond/kollect","last_synced_at":"2026-01-14T13:58:26.914Z","repository":{"id":37098581,"uuid":"430443766","full_name":"davidsbond/kollect","owner":"davidsbond","description":"Monitor your Kubernetes clusters via your favourite event bus","archived":true,"fork":false,"pushed_at":"2022-08-19T08:36:21.000Z","size":22245,"stargazers_count":8,"open_issues_count":6,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-19T23:15:26.802Z","etag":null,"topics":["aws-sns","aws-sqs","events","kafka","kubernetes","nats","pubsub","rabbitmq"],"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/davidsbond.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-21T18:10:23.000Z","updated_at":"2023-11-28T02:13:48.000Z","dependencies_parsed_at":"2022-06-24T12:24:36.987Z","dependency_job_id":null,"html_url":"https://github.com/davidsbond/kollect","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/davidsbond/kollect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fkollect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fkollect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fkollect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fkollect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davidsbond","download_url":"https://codeload.github.com/davidsbond/kollect/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davidsbond%2Fkollect/sbom","scorecard":{"id":327602,"data":{"date":"2025-08-11","repo":{"name":"github.com/davidsbond/kollect","commit":"08d6d6fe3e2af60abba474854721429ffea40f91"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":2.7,"checks":[{"name":"Code-Review","score":-1,"reason":"Found no human activity in the last 30 changesets","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":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/go.yml:1","Warn: no topLevel permission defined: .github/workflows/proto.yml:1","Warn: no topLevel permission defined: .github/workflows/release.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":"CII-Best-Practices","score":2,"reason":"badge detected: InProgress","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":"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":"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":"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":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.0.0 not signed: https://api.github.com/repos/davidsbond/kollect/releases/54262593","Warn: release artifact v1.0.0 does not have provenance: https://api.github.com/repos/davidsbond/kollect/releases/54262593"],"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":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"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":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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":"Pinned-Dependencies","score":2,"reason":"dependency not pinned by hash detected -- score normalized to 2","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:40: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:80: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:82: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/proto.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/proto.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/proto.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/proto.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/proto.yml:35: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/proto.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/proto.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/proto.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/proto.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/proto.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/proto.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/proto.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:11: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/davidsbond/kollect/release.yml/master?enable=pin","Warn: goCommand not pinned by hash: vendor/github.com/json-iterator/go/build.sh:10","Warn: goCommand not pinned by hash: vendor/github.com/pelletier/go-toml/benchmark.sh:10","Warn: goCommand not pinned by hash: vendor/google.golang.org/grpc/regenerate.sh:35","Warn: goCommand not pinned by hash: vendor/google.golang.org/grpc/vet.sh:37","Info:   0 out of  16 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   3 out of   7 goCommand 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":"Vulnerabilities","score":0,"reason":"23 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0635","Warn: Project is vulnerable to: GO-2022-0646","Warn: Project is vulnerable to: GO-2022-0619 / GHSA-r48q-9g5r-8q2h","Warn: Project is vulnerable to: GO-2024-3250 / GHSA-29wx-vh33-7x7r","Warn: Project is vulnerable to: GO-2025-3553 / GHSA-mh63-6h87-95cp","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GO-2023-2153 / GHSA-m425-mq94-257g / GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2025-3488 / GHSA-6v2p-p543-phr9","Warn: Project is vulnerable to: GO-2022-1059 / GHSA-69ch-w2m2-3vjp","Warn: Project is vulnerable to: GO-2024-2611 / GHSA-8r3f-844c-mc37","Warn: Project is vulnerable to: GO-2022-0603 / GHSA-hp87-p4gw-j4gq"],"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-18T02:50:48.080Z","repository_id":37098581,"created_at":"2025-08-18T02:50:48.080Z","updated_at":"2025-08-18T02:50:48.080Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28422388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T13:30:50.153Z","status":"ssl_error","status_checked_at":"2026-01-14T13:29:08.907Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["aws-sns","aws-sqs","events","kafka","kubernetes","nats","pubsub","rabbitmq"],"created_at":"2026-01-14T13:58:24.081Z","updated_at":"2026-01-14T13:58:26.895Z","avatar_url":"https://github.com/davidsbond.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# kollect\n\nKollect is a Kubernetes informer that monitors changes to all resources within your cluster and publishes those\nchanges as messages on your event bus of choice. Kollect aims to support as many event buses as possible. \n\nThe following event buses are currently supported:\n\n* [AWS SNS/SQS](https://aws.amazon.com/sns/)\n* [GCP Pub/Sub](https://cloud.google.com/pubsub/docs/)\n* [Azure Service Bus](https://azure.microsoft.com/en-us/services/service-bus/)\n* [Apache Kafka](https://kafka.apache.org/)\n* [NATS](https://nats.io/)\n* [RabbitMQ](https://www.rabbitmq.com/)\n\nMessages are encoded using [Protocol Buffers](https://developers.google.com/protocol-buffers), this is to make development \nof client implementations language-agnostic as well as minimising message size over the wire. You can view their definitions \nwithin the [proto](proto) directory.\n\n## Getting started\n\nKollect can run both in and out-of cluster and requires a small number of command-line flags to operate. You can download\na binary from the [releases](https://github.com/davidsbond/kollect/releases) page, or pull the docker image for a release.\n\n* `--cluster-id` (string): A unique identifier for the cluster that kollect is running in. This will allow clients to distinguish\nbetween clusters when handling events.\n* `--event-writer-url` (string): A URL that determines the event bus to use. Continue reading below for specifics on constructing\nURLs for different event buses.\n* `--kube-config` (string): The path to a kubeconfig file to use when running kollect outside a Kubernetes cluster. If you\nintend to run kollect within a cluster, you can ignore this flag.\n* `--namespace` (string): Configures kollect to only publish messages for resource changes within a particular namespace. Using \nthis will mean that any cluster-scoped resources will not have updated published for them.\n* `--wait-for-sync` (boolean): Configures kollect to wait for all informer caches to be synchronised before publishing any\nmessages. When unset, messages will be published as kollect builds the entire state of the cluster/namespace on startup.\n\n## Event Bus URLs\n\nKollect configures its event writer via a URL whose scheme indicates the event bus to use. The underlying implementation\nuses [gocloud.dev](https://gocloud.dev), their documentation should be used as a source of truth. Below are examples of\nevent bus URLs for each supported provider, and any additional environment variables required:\n\n* AWS SNS/SQS\n\n```\nawssns:///arn:aws:sns:us-east-2:123456789012:mytopic?region=us-east-2\n```\n\n* GCP Pub/Sub\n\n```\ngcppubsub://projects/myproject/topics/mytopic\n```\n\n* Azure Service Bus\n\n```\nazuresb://mytopic\n```\n\nThis event bus requires setting the `SERVICEBUS_CONNECTION_STRING` environment variable. This can be obtained from the \n[Azure portal](https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dotnet-how-to-use-topics-subscriptions#get-the-connection-string).\n\n* Apache Kafka\n\n```\nkafka://my-topic\n```\n\nThis event bus requires setting the `KAFKA_BROKERS` environment variable (which is a comma-delimited list of hosts, \nsomething like `1.2.3.4:9092,5.6.7.8:9092`).\n\n* NATS\n\n```\nnats://example.mysubject\n```\n\nThis event bus requires setting the `NATS_SERVER_URL` environment variable (which is something like `nats://nats.example.com`).\n\n* RabbitMQ\n\n```\nrabbit://myexchange\n```\n\nThis event bus requires setting the `RABBIT_SERVER_URL` environment variable (which is something like `amqp://guest:guest@localhost:5672/`).\n\n## Monitoring\n\nKollect exposes a variety of endpoints on port `8081` to use for monitoring the application:\n\n* `/__/metrics`: Serves [Prometheus](https://prometheus.io/) metrics.\n* `/__/pprof`: Serves [pprof](https://github.com/google/pprof) endpoints for profiling.\n* `/__/ready`: Serves an `HTTP OK` response when the application is considered ready.\n* `/__/health`: Serves an `HTTP OK` response while the application is considered healthy.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidsbond%2Fkollect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavidsbond%2Fkollect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavidsbond%2Fkollect/lists"}