{"id":25738740,"url":"https://github.com/rhobs/configuration","last_synced_at":"2025-02-26T07:33:47.559Z","repository":{"id":37448224,"uuid":"361697984","full_name":"rhobs/configuration","owner":"rhobs","description":"Red Hat Observability Service","archived":false,"fork":false,"pushed_at":"2025-02-19T10:10:59.000Z","size":5205,"stargazers_count":26,"open_issues_count":11,"forks_count":70,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-02-19T11:21:34.370Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jsonnet","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/rhobs.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-04-26T09:49:10.000Z","updated_at":"2025-02-19T10:11:04.000Z","dependencies_parsed_at":"2023-09-22T22:04:27.703Z","dependency_job_id":"5ad0b8cc-2c63-4a3d-baaa-4457cf1e01d7","html_url":"https://github.com/rhobs/configuration","commit_stats":{"total_commits":1005,"total_committers":94,"mean_commits":"10.691489361702128","dds":0.891542288557214,"last_synced_commit":"babde065f0b84833de40bd4cc108abec704e68d3"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhobs%2Fconfiguration","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhobs%2Fconfiguration/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhobs%2Fconfiguration/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rhobs%2Fconfiguration/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rhobs","download_url":"https://codeload.github.com/rhobs/configuration/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240813122,"owners_count":19861768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-02-26T07:33:12.976Z","updated_at":"2025-02-26T07:33:47.411Z","avatar_url":"https://github.com/rhobs.png","language":"Jsonnet","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Red Hat Observability Service\n\nThis project holds the configuration files for our internal Red Hat Observability Service based on [Observatorium](https://github.com/observatorium/observatorium).\n\nSee our [website](https://rhobs-handbook.netlify.app/) for more information about RHOBS.\n\n## Requirements\n\n* Go 1.17+\n\n### macOS\n\n* findutils (for GNU xargs)\n* gnu-sed\n\nBoth can be installed using Homebrew: `brew install gnu-sed findutils`. Afterwards, update the `SED` and `XARGS` variables in the Makefile to use `gsed` and `gxargs` or replace them in your environment.\n\n## Usage\n\nThis repository contains [Jsonnet](https://jsonnet.org/) configuration that allows generating Kubernetes objects that compose RHOBS service and its observability.\n\n### RHOBS service\n\nThe jsonnet files for RHOBS service can be found in [services](./services) directory. In order to compose *RHOBS Service* we import many Jsonnet libraries from different open source repositories including [kube-thanos](https://github.com/thanos-io/kube-thanos) for Thanos components, [Observatorium](https://github.com/observatorium/observatorium) for Observatorium, Minio, Memcached, Gubernator, Dex components, [thanos-receive-controller](https://github.com/observatorium/thanos-receive-controller) for Thanos receive controller component, [parca](https://github.com/parca-dev/parca) for Parca component, [observatorium api](https://github.com/observatorium/api) for API component, [observatorium up](https://github.com/observatorium/up) for up component,  [rules-objstore](https://github.com/observatorium/rules-objstore) for rules-objstore component.\n\nCurrently, RHOBS components are rendered as [OpenShift Templates](https://docs.openshift.com/container-platform/latest/openshift_images/using-templates.html) that allows parameters. This is how we deploy to multiple clusters, sharing the same configuration core, but having different details like resources or names.\n\n\u003e This is why there might be a gap between vanilla [Observatorium](https://github.com/observatorium/observatorium) and RHOBS. We have plans to resolve this gap in the future.\n\nRunning `make manifests` generates all required files into [resources/services](./resources/services) directory.\n\n### Observability\n\nSimilarly, in order to have observability (alerts, recording rules, dashboards) for our service we import mixins from various projects and compose all together in [observability](./observability) directory.\n\nRunning `make prometheusrules grafana` generates all required files into [resources/observability](./resources/observability) directory.\n\n### Updating Dependencies\n\nUp-to-date list of jsonnet dependencies can be found in [jsonnetfile.json](./jsonnetfile.json). Fetching all deps is done through `make vendor_jsonnet` utility.\n\nTo update a dependency, normally the process would be:\n\n```console\nmake vendor_jsonnet # This installs dependencies like `jb` thanks to Bingo project.\nJB=`ls $(go env GOPATH)/bin/jb-* -t | head -1`\n\n# Updates `kube-thanos` to master and sets the new hash in `jsonnetfile.lock.json`.\n$JB update https://github.com/thanos-io/kube-thanos/jsonnet/kube-thanos@main\n\n# Update all dependancies to master and sets the new hashes in `jsonnetfile.lock.json`.\n$JB update\n```\n\n## Testing cluster\n\nThe purpose of [RHOBS testing cluster](https://console-openshift-console.apps.rhobs-testing.qqzf.p1.openshiftapps.com/dashboards) is to\nexperiment before changes are rolled out to staging and production environments. The objects in the cluster are managed by app-interface, however the testing cluster uses a different set of namespaces - `observatorium{-logs,-metrics,-traces}-testing`.\n\nChanges can be applied to the cluster manually, however they will be overridden by app-interface during the next deployment cycle.\n\n### Refresh token\n\nThe refresh token can be obtained via [token-refresher](https://github.com/observatorium/token-refresher).\n\n```bash\n./token-refresher --url=https://observatorium.apps.rhobs-testing.qqzf.p1.openshiftapps.com  --oidc.client-id=observatorium-rhobs-testing  --oidc.client-secret=\u003ctoken\u003e --log.level=debug --oidc.issuer-url=https://sso.redhat.com/auth/realms/redhat-external --oidc.audience=observatorium-telemeter-testing --file /tmp/token\ncat /tmp/token\n```\n\n## App Interface\n\nOur deployments our managed by our Red Hat AppSRE team.\n\n### Updating Dashboards\n\n**Staging**: Once the PR containing the dashboard changes is merged to `main` it goes directly to stage environment - because the `telemeter-dashboards` resourceTemplate refers the `main` branch [here](https://gitlab.cee.redhat.com/service/app-interface/-/blob/master/data/services/rhobs/telemeter/cicd/saas.yaml).\n\n**Production**: Update the commit hash ref in [the saas file](https://gitlab.cee.redhat.com/service/app-interface/-/blob/master/data/services/rhobs/telemeter/cicd/saas.yaml) in the `telemeterDashboards` resourceTemplate, for production environment.\n\n### Prometheus Rules and Alerts\n\nUse `synchronize.sh` to create a MR against `app-interface` to update dashboards.\n\n### Components - Deployments, ServiceMonitors, ConfigMaps etc...\n\n**Staging**: update the commit hash ref in [`https://gitlab.cee.redhat.com/service/app-interface/blob/master/data/services/telemeter/cicd/saas.yaml`](https://gitlab.cee.redhat.com/service/app-interface/blob/master/data/services/telemeter/cicd/saas.yaml)\n\n**Production**: update the commit hash ref in [`https://gitlab.cee.redhat.com/service/app-interface/blob/master/data/services/telemeter/cicd/saas.yaml`](https://gitlab.cee.redhat.com/service/app-interface/blob/master/data/services/telemeter/cicd/saas.yaml)\n\n## CI Jobs\n\nJobs runs are posted in:\n\n`#sd-app-sre-info` for grafana dashboards\n\nand\n\n`#team-monitoring-info` for everything else.\n\n## Troubleshooting\n\n1. Enable port forwarding for a user - [example](https://gitlab.cee.redhat.com/service/app-interface/-/blob/ee91aac666ee39a273332c59ad4bdf7e0f50eeba/data/teams/telemeter/users/fbranczy.yml#L14)\n2. Add a pod name to the allowed list for port forwarding - [example](https://gitlab.cee.redhat.com/service/app-interface/-/blob/ee91aac666ee39a273332c59ad4bdf7e0f50eeba/resources/app-sre/telemeter-production/observatorium-allow-port-forward.role.yaml#L10)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhobs%2Fconfiguration","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhobs%2Fconfiguration","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhobs%2Fconfiguration/lists"}