{"id":44646832,"url":"https://github.com/observatorium/api","last_synced_at":"2026-02-14T20:09:07.127Z","repository":{"id":36968539,"uuid":"215251986","full_name":"observatorium/api","owner":"observatorium","description":"The Observatorium API","archived":false,"fork":false,"pushed_at":"2026-01-30T16:10:38.000Z","size":13996,"stargazers_count":58,"open_issues_count":40,"forks_count":74,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-31T09:37:14.341Z","etag":null,"topics":["jaeger","loki","monitoring","observability","prometheus","thanos","tracing"],"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/observatorium.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,"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":"2019-10-15T08:52:52.000Z","updated_at":"2026-01-30T16:10:43.000Z","dependencies_parsed_at":"2023-02-19T09:15:49.706Z","dependency_job_id":"9c665bdc-e90f-42ae-bae1-de96f60c5240","html_url":"https://github.com/observatorium/api","commit_stats":{"total_commits":618,"total_committers":47,"mean_commits":"13.148936170212766","dds":0.7038834951456311,"last_synced_commit":"80f3fb2a8623ef8d3d95926c5cdd2b3cfb6d49e4"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/observatorium/api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/observatorium%2Fapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/observatorium%2Fapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/observatorium%2Fapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/observatorium%2Fapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/observatorium","download_url":"https://codeload.github.com/observatorium/api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/observatorium%2Fapi/sbom","scorecard":{"id":701161,"data":{"date":"2025-08-11","repo":{"name":"github.com/observatorium/api","commit":"8d34ac96126d489a393d7d7bad0c7db08df327ff"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":5.4,"checks":[{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/publish.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":"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":"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":"Maintained","score":8,"reason":"10 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":9,"reason":"Found 10/11 approved changesets -- score normalized to 9","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":"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":"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":"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/publish.yml:13: update your workflow using https://app.stepsecurity.io/secureworkflow/observatorium/api/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/observatorium/api/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/observatorium/api/publish.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/publish.yml:27: update your workflow using https://app.stepsecurity.io/secureworkflow/observatorium/api/publish.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/publish.yml:30: update your workflow using https://app.stepsecurity.io/secureworkflow/observatorium/api/publish.yml/main?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:1","Warn: containerImage not pinned by hash: Dockerfile:13","Warn: containerImage not pinned by hash: Dockerfile.e2e-test:1","Warn: containerImage not pinned by hash: Dockerfile.e2e-test:10","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   3 third-party GitHubAction dependencies pinned","Info:   0 out of   4 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":"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":"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":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"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":"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":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2025-3770"],"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-22T05:14:40.673Z","repository_id":36968539,"created_at":"2025-08-22T05:14:40.674Z","updated_at":"2025-08-22T05:14:40.674Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29454906,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["jaeger","loki","monitoring","observability","prometheus","thanos","tracing"],"created_at":"2026-02-14T20:09:06.514Z","updated_at":"2026-02-14T20:09:07.120Z","avatar_url":"https://github.com/observatorium.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Observatorium\n\n[![CircleCI](https://circleci.com/gh/observatorium/api.svg?style=svg)](https://circleci.com/gh/observatorium/api) [![Go Doc](https://godoc.org/github.com/observatorium/api?status.svg)](http://godoc.org/github.com/observatorium/api) [![Go Report Card](https://goreportcard.com/badge/github.com/observatorium/api)](https://goreportcard.com/report/github.com/observatorium/api)\n\nThis project is an API server for Observatorium. The API provides an authenticated and authorized, multi-tenant interface for writing and reading observability signals, i.e. metrics and logs.\n\n## Getting started\n\nFor a quick start, run:\n\n```bash\nmake test-interactive\n```\n\nThis command spins up a full setup for Observatorium API with all dependent services. It is intended for short-lived manual testing on your local environment.\n\nIt is also possible to run the [test](test/e2e/interactive_test.go) with flags '-v' (to see the output) and '-test.timeout=9999m' to ensure the test is not terminated.\n\nSince this starts all necessary services in a Docker environment, make sure you have [Docker](https://docs.docker.com/get-docker/) installed.\n\n## Backends\n\nThe Observatorium API server fulfills requests by proxying reads and writes to a backend for each type of observability signal.\n\n### Metrics\n\nThe Observatorium API server can serve read and write requests for Prometheus metrics. In order to handle requests for metrics, a compatible backend must be configured.\n\n#### --metrics.read.endpoint\n\nThe backend from which to read metrics can be specified with the `--metrics.read.endpoint` flag. Compatible backends must implement the Prometheus HTTP API, e.g. Prometheus, Thanos querier, Cortex, etc.\n\n#### --metrics.write.endpoint\n\nThe backend to which to write metrics can be specified with the `--metrics.write.endpoint` flag. Compatible backends must implement the Prometheus remote-write API, e.g. Thanos receiver, Cortex, etc.\n\n#### --metrics.rules.endpoint\n\nThe rules backend to where rules can be stored can be specified with the `--metrics.rules.endpoint` flag.\n\n### Logs\n\nThe Observatorium API server can serve read and write requests for logs. In order to handle requests for logs, a compatible backend must be configured.\n\n#### --logs.read.endpoint\n\nThe backend from which to read logs can be specified with the `--logs.read.endpoint` flag. Compatible backends must implement the Loki read API, e.g. Loki.\n\n#### --logs.tail.endpoint\n\nThe backend from which to tail logs can be specified with the `--logs.tail.endpoint` flag. Compatible backends must implement the Loki tail API, e.g. Loki.\n\n#### --logs.write.endpoint\n\nThe backend to which to write logs can be specified with the `--logs.write.endpoint` flag. Compatible backends must implement the Loki write API, e.g. Loki.\n\n## Usage\n\n```txt mdox-exec=\"./observatorium-api -h\"\nUsage of ./observatorium-api:\n  -debug.block-profile-rate int\n    \tThe percentage of goroutine blocking events that are reported in the blocking profile. (default 10)\n  -debug.mutex-profile-fraction int\n    \tThe percentage of mutex contention events that are reported in the mutex profile. (default 10)\n  -debug.name string\n    \tA name to add as a prefix to log lines. (default \"observatorium\")\n  -experimental.traces.read.endpoint-template string\n    \tA template replacing --read.traces.endpoint, such as http://jaeger-{tenant}-query:16686\n  -grpc.listen string\n    \tThe address on which the public gRPC server listens.\n  -internal.tracing.otlp-http-endpoint string\n    \tThe full URL of OTLP/http endpoint e.g. http://otel-collector:4318. The https:// scheme enables TLS. The certificates and other exporter options can be configured via standard OTEL env variables. If it's not set, tracing will be disabled.\n  -internal.tracing.sampling-fraction float\n    \tThe fraction of traces to sample. Thus, if you set this to .5, half of traces will be sampled. (default 0.1)\n  -internal.tracing.service-name string\n    \tThe service name to report to the tracing backend. (default \"observatorium_api\")\n  -log.format string\n    \tThe log format to use. Options: 'logfmt', 'json'. (default \"logfmt\")\n  -log.level string\n    \tThe log filtering level. Options: 'error', 'warn', 'info', 'debug'. (default \"info\")\n  -logs.auth.extract-selectors string\n    \tComma-separated list of stream selectors that should be extracted from queries and sent to OPA during authorization.\n  -logs.read.endpoint string\n    \tThe endpoint against which to make read requests for logs.\n  -logs.rules.endpoint string\n    \tThe endpoint against which to make rules requests for logs.\n  -logs.rules.label-filters string\n    \tAllow the following filters to be applied to user rules queries per tenant (e.g. tenantA:namespace,severity;tenantB:severity).\n  -logs.rules.read-only\n    \tAllow only read-only rule requests for logs.\n  -logs.rules.tenant-label string\n    \tThe name of the rules label that should hold the tenant ID in logs upstreams. (default \"tenant_id\")\n  -logs.tail.endpoint string\n    \tThe endpoint against which to make tail read requests for logs.\n  -logs.tenant-header string\n    \tThe name of the HTTP header containing the tenant ID to forward to the logs upstream. (default \"X-Scope-OrgID\")\n  -logs.tls.ca-file string\n    \tFile containing the TLS CA against which to upstream logs servers. Leave blank to disable TLS.\n  -logs.tls.cert-file string\n    \tFile containing the TLS client certificates to authenticate against upstream logs servers. Leave blank to disable mTLS.\n  -logs.tls.key-file string\n    \tFile containing the TLS client key to authenticate against upstream logs servers. Leave blank to disable mTLS.\n  -logs.tls.watch-certs\n    \tWatch for certificate changes and reload\n  -logs.write-timeout duration\n    \tThe HTTP write timeout for proxied requests to the logs endpoint. (default 10m0s)\n  -logs.write.endpoint string\n    \tThe endpoint against which to make write requests for logs.\n  -metrics.alertmanager.endpoint string\n    \tThe endpoint against which to make requests for alerts and silences\n  -metrics.read.endpoint string\n    \tThe endpoint against which to send read requests for metrics.\n  -metrics.rules.endpoint string\n    \tThe endpoint against which to make get requests for listing recording/alerting rules and put requests for creating/updating recording/alerting rules.\n  -metrics.tenant-header string\n    \tThe name of the HTTP header containing the tenant ID to forward to the metrics upstreams. (default \"THANOS-TENANT\")\n  -metrics.tenant-label string\n    \tThe name of the PromQL label that should hold the tenant ID in metrics upstreams. (default \"tenant_id\")\n  -metrics.tls.ca-file string\n    \tFile containing the TLS CA against which to upstream metrics servers. Leave blank to disable TLS.\n  -metrics.tls.cert-file string\n    \tFile containing the TLS client certificates to authenticate against upstream logs servers. Leave blank to disable mTLS.\n  -metrics.tls.key-file string\n    \tFile containing the TLS client key to authenticate against upstream metrics servers. Leave blank to disable mTLS.\n  -metrics.tls.watch-certs\n    \tWatch for certificate changes and reload\n  -metrics.write-timeout duration\n    \tThe HTTP write timeout for proxied requests to the metrics endpoint. (default 2m0s)\n  -metrics.write.endpoint string\n    \tThe endpoint against which to make write requests for metrics.\n  -middleware.backlog-duration-concurrent-requests duration\n    \tThe time duration to buffer up concurrent requests. (default 1ms)\n  -middleware.backlog-limit-concurrent-requests int\n    \tThe number of concurrent requests that can buffered.\n  -middleware.concurrent-request-limit int\n    \tThe limit that controls the number of concurrently processed requests across all tenants. (default 10000)\n  -middleware.rate-limiter.address value\n    \tThe address of the rate limiter. Only used when not using the gRPC nor \"local\" rate limiters. Can be repeated to specify multiple addresses (i.e. Redis Cluster).\n  -middleware.rate-limiter.grpc-address string\n    \tThe gRPC Server Address against which to run rate limit checks when the rate limits are specified for a given tenant. If not specified, local, non-shared rate limiting will be used. Has precedence over other rate limiter options.\n  -middleware.rate-limiter.type string\n    \tThe type of rate limiter to use when not using a gRPC rate limiter. Options: 'local' (default), 'redis' (leaky bucket algorithm). (default \"local\")\n  -probes.dial-timeout duration\n    \tThe timeout for establishing connections to the probes upstream. (default 30s)\n  -probes.endpoint string\n    \tThe endpoint against which to make HTTP requests for probes.\n  -probes.keep-alive-timeout duration\n    \tThe keep-alive timeout for connections to the probes upstream. (default 30s)\n  -probes.tenant-header string\n    \tThe name of the HTTP header containing the tenant ID to forward to the probes upstream. (default \"X-Tenant\")\n  -probes.tls-handshake-timeout duration\n    \tThe TLS handshake timeout for connections to the probes upstream. (default 10s)\n  -probes.tls.ca-file string\n    \tFile containing the TLS CA against which to upstream probes servers. Leave blank to disable TLS.\n  -probes.tls.cert-file string\n    \tFile containing the TLS client certificates to authenticate against upstream probes servers. Leave blank to disable mTLS.\n  -probes.tls.key-file string\n    \tFile containing the TLS client key to authenticate against upstream probes servers. Leave blank to disable mTLS.\n  -probes.tls.watch-certs\n    \tWatch for certificate changes and reload\n  -probes.write-timeout duration\n    \tThe HTTP write timeout for proxied requests to the probes endpoint. Defaults to the server's write timeout. (default 12m0s)\n  -rbac.config string\n    \tPath to the RBAC configuration file. (default \"rbac.yaml\")\n  -server.read-header-timeout duration\n    \tGlobal server read header timeout. (default 1s)\n  -server.read-timeout duration\n    \tGlobal server read timeout. (default 5s)\n  -server.write-timeout duration\n    \tGlobal server read timeout. (default 12m0s)\n  -tenants.config string\n    \tPath to the tenants file. (default \"tenants.yaml\")\n  -tls.cipher-suites string\n    \tComma-separated list of cipher suites for the server. Values are from tls package constants (https://golang.org/pkg/crypto/tls/#pkg-constants). If omitted, the default Go cipher suites will be used. Note that TLS 1.3 ciphersuites are not configurable.\n  -tls.client-auth-type string\n    \tPolicy for TLS client-side authentication. Values are from ClientAuthType constants in https://pkg.go.dev/crypto/tls#ClientAuthType (default \"RequestClientCert\")\n  -tls.healthchecks.server-ca-file string\n    \tFile containing the TLS CA against which to verify servers. If no server CA is specified, the client will use the system certificates.\n  -tls.healthchecks.server-name string\n    \tServer name is used to verify the hostname of the certificates returned by the server. If no server name is specified, the server name will be inferred from the healthcheck URL.\n  -tls.internal.server.cert-file string\n    \tFile containing the default x509 Certificate for internal HTTPS. Leave blank to disable TLS.\n  -tls.internal.server.key-file string\n    \tFile containing the default x509 private key matching --tls.internal.server.cert-file. Leave blank to disable TLS.\n  -tls.max-version string\n    \tMaximum TLS version supported. Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants. (default \"VersionTLS13\")\n  -tls.min-version string\n    \tMinimum TLS version supported. Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants. (default \"VersionTLS13\")\n  -tls.reload-interval duration\n    \tThe interval at which to watch for TLS certificate changes. (default 1m0s)\n  -tls.server.cert-file string\n    \tFile containing the default x509 Certificate for HTTPS. Leave blank to disable TLS.\n  -tls.server.key-file string\n    \tFile containing the default x509 private key matching --tls.server.cert-file. Leave blank to disable TLS.\n  -traces.query-rbac\n    \tEnables query RBAC. A user will be able to see attributes only from namespaces it has access to. Only the spans with allowed k8s.namespace.name attribute are fully visible.\n  -traces.read.endpoint string\n    \tThe endpoint against which to make HTTP read requests for traces.\n  -traces.tempo.endpoint string\n    \tThe endpoint against which to make HTTP read requests for traces using traceQL (tempo API).\n  -traces.tenant-header string\n    \tThe name of the HTTP header containing the tenant ID to forward to upstream OpenTelemetry collector. (default \"X-Tenant\")\n  -traces.tls.ca-file string\n    \tFile containing the TLS CA against which to upstream traces servers. Leave blank to disable TLS.\n  -traces.tls.cert-file string\n    \tFile containing the TLS client certificates to authenticate against upstream logs servers. Leave blank to disable mTLS.\n  -traces.tls.key-file string\n    \tFile containing the TLS client key to authenticate against upstream traces servers. Leave blank to disable mTLS.\n  -traces.tls.watch-certs\n    \tWatch for certificate changes and reload\n  -traces.write-timeout duration\n    \tThe HTTP write timeout for proxied requests to the traces endpoint. (default 2m0s)\n  -traces.write.otlpgrpc.endpoint string\n    \tThe endpoint against which to make OTLP gRPC write requests for traces.\n  -traces.write.otlphttp.endpoint string\n    \tThe endpoint against which to make OTLP HTTP write requests for traces.\n  -web.healthchecks.url string\n    \tThe URL against which to run healthchecks. (default \"http://localhost:8080\")\n  -web.internal.listen string\n    \tThe address on which the internal server listens. (default \":8081\")\n  -web.listen string\n    \tThe address on which the public server listens. (default \":8080\")\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobservatorium%2Fapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobservatorium%2Fapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobservatorium%2Fapi/lists"}