{"id":21919813,"url":"https://github.com/kernelci/kcidb-grafana","last_synced_at":"2025-07-22T10:07:24.226Z","repository":{"id":46073038,"uuid":"246559788","full_name":"kernelci/kcidb-grafana","owner":"kernelci","description":"KCIDB Grafana docs and files","archived":false,"fork":false,"pushed_at":"2024-05-02T09:41:45.000Z","size":571,"stargazers_count":2,"open_issues_count":12,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-06-20T01:09:30.336Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kernelci.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}},"created_at":"2020-03-11T12:03:34.000Z","updated_at":"2024-05-02T09:41:48.000Z","dependencies_parsed_at":"2024-02-15T17:55:45.127Z","dependency_job_id":"fff56957-b3c8-4ffd-8641-c8e689b5468b","html_url":"https://github.com/kernelci/kcidb-grafana","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kernelci/kcidb-grafana","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkcidb-grafana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkcidb-grafana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkcidb-grafana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkcidb-grafana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kernelci","download_url":"https://codeload.github.com/kernelci/kcidb-grafana/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelci%2Fkcidb-grafana/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266473072,"owners_count":23934477,"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","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"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":"2024-11-28T20:11:09.229Z","updated_at":"2025-07-22T10:07:24.179Z","avatar_url":"https://github.com/kernelci.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"KCIDB-Grafana\n=============\nKCIDB-Grafana is a collection of documentation/scripts/data files needed to\nsetup and maintain an instance of [Grafana](https://grafana.com/) displaying\n[Linux Kernel CI reports](https://staging.kernelci.org:3000/) stored in a\n[KCIDB](https://github.com/kernelci/kcidb/) database.\n\nWrite to [kernelci@lists.linux.dev](mailto:kernelci@lists.linux.dev) if you want to start\nsubmitting results from your CI system, or if you want to receive automatic\nnotifications of arriving results.\n\nArchitecture\n------------\n\nThe current setup on [staging.kernelci.org](https://staging.kernelci.org:3000)\nis implemented with a tweaked, but stock Grafana container, exposing port 3000\non localhost, and a Nginx configuration forwarding HTTPS connections on\noutside port 3000 to it.\n\nGrafana is configured with the following.\n\n* BigQuery data source using a Google JWT file for authenticating to the KCIDB\n  dataset with US as the processing location.\n* A number of dashboards displaying various objects in the database, with one\n  of them (\"Home\") set as the home dashboard.\n* Anonymous access enabled.\n\nSetup\n-----\nTo create and start a Grafana container run:\n\n    docker-compose up -d\n\nFor development setup, remember to adjust or drop the GF_SERVER_DOMAIN\nand GF_SERVER_HTTP_PORT environment variables in `docker-compose.yml`.\n\nLogin as an administrator (default credentials are `admin`/`admin`).\n\n### Data Source\n\nAdd BigQuery datasource, following the steps below.\n\n1. Click \"⚙️\"-\u003e\"Data Sources\".\n\n   ![](add_data_source_start.png)\n\n2. Click the \"Add data source\" button.\n\n   ![](add_data_source_click_button.png)\n\n3. Search for and select the \"BigQuery\" data source type.\n\n   ![](add_data_source_select_bigquery.png)\n\n4. Set the name of the data source to \"Google BigQuery\" (the default), and\n   optionally make it the default datasource.\n\n   ![](add_data_source_set_name_and_make_default.png)\n\n5. Upload Google Cloud Service Account key file. Grafana account will need\n   \"BigQuery Data Viewer\" and \"BigQuery Job User\" roles only.\n\n   ![](add_data_source_upload_key_file.png)\n\n6. Select processing location appropriate for your dataset (US for Kernel CI\n   data currently).\n\n   ![](add_data_source_set_processing_location.png)\n\n7. Click the \"Save \u0026 Test\" button.\n\n   ![](add_data_source_save_and_test.png)\n\n8. Verify the test was a success.\n\n   ![](add_data_source_check_success.png)\n\n### Dashboards\n\nImport each of the dashboards from this repository, following the steps below.\n\n1. Click \"+\"-\u003e\"Import\".\n\n   ![](import_dashboard_start.png)\n\n2. Click \"Upload .json file\", select dashboard file.\n\n   ![](import_dashboard_upload_json.png)\n\n3. Do not change properties, unless you know what you're doing.\n\n   ![](import_dashboard_set_properties.png)\n\nDevelopment\n-----------\nTo update dashboard files in this repository, export and overwrite each of\nthem, following the steps below.\n\n1. Click \"Share dashboard\".\n\n   ![](export_dashboard_start.png)\n\n2. Click \"Export\", and then \"Save to file\".\n\n   ![](export_dashboard_save_to_file.png)\n\n### Guidelines\n\nEach dashboard allows filtering the displayed data by time. However, only\ntop-level displayed objects should be filtered by that time.\n\nE.g. if a dashboard has a list of builds then only builds started at the\nspecified time should appear there. However, the builds should have **all**\ntests considered for the test result summary, regardless of when they started.\n\nYet, if the same dashboard has a panel with a list of tests across all the\nbuilds displayed on the adjacent panel, they **should** be filtered by time,\nsince in that panel they would be top-level objects.\n\nObjects without timestamp information, such as tests or builds without\n`start_time`, should be displayed regardless of the selected time range, but\nshould be sorted after the objects with time specified, and thus more likely to\nbe discarded by the query's `LIMIT`.\n\nStill, objects without timestamps should be omitted when time is a dimension\nin a table or a graph.\n\nMost dashboards allow filtering data by the origin. Again, only the\ndashboard's top-level displayed objects should be filtered by origin. I.e. for\npanel with a list of builds, builds should be filtered, but the tests used to\nsummarize test status for each of them should not, and so on, similar to time\nfiltering.\n\nWhen a panel is implemented both on a parent object's dashboard and on a child\nobject's dashboard, the parent's version is considered authoritative, and\nwhenever both need to be updated, the parent's panel is updated, then copied\nto the child, and then modified to the child's requirements (e.g. additional\nfilters are added, unnecessary fields are removed). This way it is easier to\nkeep them synced in the absence of panel/query reuse.\n\nThe dashboard filter variables (e.g. `origin`, `build_architecture`, and so\non) should be kept and passed via links between dashboards, so the user\nfiltering setup is preserved. Filter variables which don't make sence to some\ndashboards (such as `build_architecture` for test dashboard) should be added\nhidden and preserved in back links.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelci%2Fkcidb-grafana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkernelci%2Fkcidb-grafana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelci%2Fkcidb-grafana/lists"}