{"id":21894133,"url":"https://github.com/hackgt/metrics","last_synced_at":"2026-04-13T01:14:15.041Z","repository":{"id":79765857,"uuid":"81107659","full_name":"HackGT/metrics","owner":"HackGT","description":null,"archived":false,"fork":false,"pushed_at":"2021-08-26T02:45:04.000Z","size":15,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-02-03T04:29:17.072Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","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/HackGT.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}},"created_at":"2017-02-06T16:33:33.000Z","updated_at":"2021-08-26T02:45:07.000Z","dependencies_parsed_at":"2023-06-02T08:30:25.507Z","dependency_job_id":null,"html_url":"https://github.com/HackGT/metrics","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fmetrics","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fmetrics/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fmetrics/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HackGT%2Fmetrics/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HackGT","download_url":"https://codeload.github.com/HackGT/metrics/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244902928,"owners_count":20529115,"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":"2024-11-28T13:19:07.276Z","updated_at":"2026-04-13T01:14:14.984Z","avatar_url":"https://github.com/HackGT.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HackGT Metrics\n## Introduction\nHackGT Metrics is a system build on top of [Kubernetes](kubernetes.io), [Fluentd](fluentd.org) and [InfluxDB](www.influxdata.com) to provide a real time overview of our apps with minimal modification to application code. Simply log the event you want to record to STDOUT and HackGT Metrics handles the heavy lifting of ingesting, storing and making queryable the data you log.\n\n## Architecture\nDocker containers that are orchestrated by Kubernetes write logs to `/var/lib/docker/containers/` on the host machine. Fluentd is configured in a DaemonSet, meaning one instance of Fluentd is created per node in the Kubernetes cluster. \n\nEach instance of Fluentd performs the following steps:\n\n1. Collect logs from the instance's host node\n2. Parse each log line into JSON\n3. Check if the log messag complies with the HackGT Metrics requirements\n4. If a valid log line is found, push it into InfluxDB\n\n### Files\n`fluentd-image/` contains the files needed to build the Fluentd Docker image.\n\n`kubernetes/` contains Kubernetes configuration files for Fluentd.\n\n## Usage\nUsing HackGT Metrics is easy! Simply log a single-line JSON formatted message that conforms to the following schema:\n```js\n{\n    hackgtmetricsversion: 1,\n    serviceName: string\n    values: object\n    tags: object\n}\n```\n\n### Service Name\nserviceName should specify service and event type, for example `registration-hackgt4-submitapp`.\n\n### Values and Tags\nValues and tags can contain arbitrary key/value pairs. These are directly translated into [InfluxDB measurement equivalents](https://docs.influxdata.com/influxdb/v1.3/concepts/key_concepts/). The serviceName becomes the name of the measurement that data is inserted into.\n\n## Querying and Visualization\nData can be queried as needed from InfluxDB. Currently, HackGT uses [Grafana](https://grafana.com/) to visualize event data stored using this system.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackgt%2Fmetrics","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhackgt%2Fmetrics","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhackgt%2Fmetrics/lists"}