{"id":13581738,"url":"https://github.com/coroot/coroot-node-agent","last_synced_at":"2026-05-27T23:02:00.904Z","repository":{"id":43223793,"uuid":"406740721","full_name":"coroot/coroot-node-agent","owner":"coroot","description":"A Prometheus exporter based on eBPF that gathers comprehensive container metrics","archived":false,"fork":false,"pushed_at":"2026-01-19T20:26:35.000Z","size":39094,"stargazers_count":397,"open_issues_count":29,"forks_count":85,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-01-20T01:33:12.229Z","etag":null,"topics":["ebpf","logs","monitoring","network-metrics","node-metrics","observability","prometheus","prometheus-exporter","prometheus-metrics"],"latest_commit_sha":null,"homepage":"https://docs.coroot.com/metrics/node-agent","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/coroot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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":"2021-09-15T11:46:46.000Z","updated_at":"2026-01-19T20:26:40.000Z","dependencies_parsed_at":"2023-02-12T01:25:15.251Z","dependency_job_id":"2abb6645-64b2-419c-a047-1f1926f286a6","html_url":"https://github.com/coroot/coroot-node-agent","commit_stats":{"total_commits":226,"total_committers":10,"mean_commits":22.6,"dds":"0.34513274336283184","last_synced_commit":"42a8e5c172f363edd285fe3eda218d606d94bd94"},"previous_names":[],"tags_count":180,"template":false,"template_full_name":null,"purl":"pkg:github/coroot/coroot-node-agent","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coroot%2Fcoroot-node-agent","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coroot%2Fcoroot-node-agent/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coroot%2Fcoroot-node-agent/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coroot%2Fcoroot-node-agent/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coroot","download_url":"https://codeload.github.com/coroot/coroot-node-agent/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coroot%2Fcoroot-node-agent/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28891319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-29T21:06:44.224Z","status":"ssl_error","status_checked_at":"2026-01-29T21:06:42.160Z","response_time":59,"last_error":"SSL_read: 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":["ebpf","logs","monitoring","network-metrics","node-metrics","observability","prometheus","prometheus-exporter","prometheus-metrics"],"created_at":"2024-08-01T15:02:12.952Z","updated_at":"2026-01-30T00:08:24.321Z","avatar_url":"https://github.com/coroot.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Coroot-node-agent\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/coroot/coroot-node-agent)](https://goreportcard.com/report/github.com/coroot/coroot-node-agent)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\nThe agent gathers metrics related to a node and the containers running on it, and it exposes them in the Prometheus format.\n\nIt uses eBPF to track container related events such as TCP connects, so the minimum supported Linux kernel version is 5.1.\n\n\u003cimg src=\"https://coroot.com/static/img/blog/ebpf.svg\" width=\"800\" /\u003e\n\n## Features\n\n### TCP connection tracing\n\nTo provide visibility into the relationships between services, the agent traces containers TCP events, such as *connect()* and *listen()*.\n\nExported metrics are useful for:\n* Obtaining an actual map of inter-service communications. It doesn't require integration of distributed tracing frameworks into your code.\n* Detecting connections errors from one service to another.\n* Measuring network latency between containers, nodes and availability zones.\n\nRelated blog posts:\n * [Building a service map using eBPF](https://coroot.com/blog/building-a-service-map-using-ebpf)\n * [How ping measures network round-trip time accurately using SO_TIMESTAMPING](https://coroot.com/blog/how-to-ping)\n * [The current state of eBPF portability](https://coroot.com/blog/ebpf-portability)\n### Log patterns extraction\n\nLog management is usually quite expensive. In most cases, you do not need to analyze each event individually.\nIt is enough to extract recurring patterns and the number of the related events.\n\nThis approach drastically reduces the amount of data required for express log analysis.\n\nThe agent discovers container logs and parses them right on the node.\n\nAt the moment the following sources are supported:\n* Direct logging to files in */var/log/*\n* Journald\n* Dockerd (JSON file driver)\n* Containerd (CRI logs)\n\nTo learn more about automated log clustering, check out the blog post \"[Mining metrics from unstructured logs](https://coroot.com/blog/mining-logs-from-unstructured-logs)\".\n\n### Delay accounting\n\n[Delay accounting](https://www.kernel.org/doc/html/latest/accounting/delay-accounting.html) allows engineers to accurately\nidentify situations where a container is experiencing a lack of CPU time or waiting for I/O.\n\nThe agent gathers per-process counters through [Netlink](https://man7.org/linux/man-pages/man7/netlink.7.html) and aggregates them into per-container metrics:\n* [container_resources_cpu_delay_seconds_total](https://docs.coroot.com/metrics/node-agent#container_resources_cpu_delay_seconds_total)\n* [container_resources_disk_delay_seconds_total](https://docs.coroot.com/metrics/node-agent#container_resources_disk_delay_seconds_total)\n\n\n\u003cimg src=\"https://coroot.com/static/img/blog/delay_accounting_aggregation.svg\" width=\"800\" /\u003e\n\nRelated blog posts:\n* [Delay accounting: an underrated feature of the Linux kernel](https://coroot.com/blog/linux-delay-accounting)\n\n\n### Out-of-memory events tracing\n\nThe [container_oom_kills_total](https://docs.coroot.com/metrics/node-agent#container_oom_kills_total) metric shows that a container has been terminated by the OOM killer.\n\n### Instance meta information\n\nIf a node is a cloud instance, the agent identifies a cloud provider and collects additional information using the related metadata services.\n\nSupported cloud providers: [AWS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html), [GCP](https://cloud.google.com/compute/docs/metadata/overview), [Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/linux/instance-metadata-service?tabs=linux), [Hetzner](https://docs.hetzner.cloud/#server-metadata)\n\nCollected info:\n* AccountID\n* InstanceID\n* Instance/machine type\n* Region\n* AvailabilityZone\n* AvailabilityZoneId (AWS only)\n* LifeCycle: on-demand/spot (AWS and GCP only)\n* Private \u0026 Public IP addresses\n\nRelated blog posts:\n* [Gathering cloud instance metadata in AWS, GCP and Azure](https://coroot.com/blog/cloud-metadata)\n\n## Installation\n\nFollow the Coroot [documentation](https://docs.coroot.com/)\n\n## Metrics\n\nThe collected metrics are described [here](https://docs.coroot.com/metrics/node-agent).\n\n## Coroot\n\nThe best way to turn metrics to answers about app issues is to use [Coroot](https://github.com/coroot/coroot) - a zero-instrumentation observability tool for microservice architectures. \n\nA live demo of Coroot is available at [demo.coroot.com](https://demo.coroot.com)\n\n## Contributing\nTo start contributing, check out our [Contributing Guide](https://github.com/coroot/coroot-node-agent/blob/main/CONTRIBUTING.md).\n\n## License\n\nCoroot-node-agent is licensed under the [Apache License, Version 2.0](https://github.com/coroot/coroot-node-agent/blob/main/LICENSE).\n\nThe BPF code is licensed under the General Public License, Version 2.0.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoroot%2Fcoroot-node-agent","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoroot%2Fcoroot-node-agent","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoroot%2Fcoroot-node-agent/lists"}