Coroot is a monitoring and troubleshooting tool for microservice architectures.
Features
eBPF-based service mapping
Thanks to eBPF, Coroot shows you a comprehensive map of your services without any code changes.
Log analysis without storage costs
Node-agent turns terabytes of logs into just a few dozen metrics by extracting repeated patterns right on the node. Using these metrics allows you to quickly and cost-effectively find the errors relevant to a particular outage.
Cloud topology awareness
Coroot uses cloud metadata to show which regions and availability zones each application runs in. This is very important to known, because:
- Network latency between availability zones within the same region can be higher than within one particular zone.
- Data transfer between availability zones in the same region is paid, while data transfer within a zone is free.
Advanced Postgres observability
Coroot makes troubleshooting Postgres-related issues easier not only for experienced DBAs but also for engineers not specialized in databases.
Integration into your existing monitoring stack
Coroot uses Prometheus as a Time-Series Database (TSDB):
- The agents are Prometheus-compatible exporters
- Coroot itself is a Prometheus client (like Grafana)
Built-in Prometheus cache
The built-in Prometheus cache allows Coroot to provide you with a blazing fast UI without overloading your Prometheus.
Installation
You can run Coroot as a Docker container or deploy it into any Kubernetes cluster. Check out the Installation guide.
Documentation
The Coroot documentation is available at coroot.com/docs/coroot-community-edition.
License
Coroot is licensed under the Apache License, Version 2.0.
Coroot UI doesn't see pg-agent metrics
Hello, Thank you for this wonderful and convinient instrument! Unfotunately, I met some troubles with pg-agent.
After installation I've seen the relevant metrics in Prometheus, but my Coroot UI doesn't see them (though it registered the instance of pg-agent)
I started pg-agent with
docker run -d --name coroot-pg-agent -p <port>:80 --env DSN="postgresql://<user>:<password>@<ip>:5432/postgres?connect_timeout=1&statement_timeout=30000" ghcr.io/coroot/coroot-pg-agent
But got in logs of Coroot UI container:
couldn't find actual instance for "postgres", initial instance is "[email protected]" (map[])
(yes, I have the role of postgres_exporter in PostgreSQL, but use another role for Coroot pg-agent). What have I done wrong?Also, I've got none of those metrics: pg_lock_awaiting_queries, pg_wal_receiver_status, pg_wal_replay_paused, pg_wal_receive_lsn, pg_wal_reply_lsn. May be, it was happened because of using PostgreSQL 11 version?
Not getting service maps
Coroot 0.2.2 Coroot-node-agent 1.0.19 k3s v1.24.4+k3s1
Status reports everything is ok:
As an example, i took loki in distributed setup.
In app search, i can see them:
But if i open app details, i can't see inter-communication between components:
Wondering if i'm missing something? Maybe specific labels?
Node Agent is configured but the coroot is not identifying
I have a problem, even configuring node-agent the coroot is not working and collecting node metrics. Below is the YAML files. Basically I implemented it in the default, I'm also using kube-prometheus-stack but I don't use the podSelector configuration
As pictured above, the configuration with promtheus is OK.
The agent node daemon sets are apparently healthy too but looking into coroot web UI always show
coroot-node-agent : no agent installed
I've followed the document below to install node-agent
https://coroot.com/docs/metric-exporters/node-agent/overview
microk8s failed to inspect container
I'm having trouble getting service maps working. I installed coroot into a single node microk8s cluster, all applications show external endpoints, and no CPU/Memory data is picked up.
I used
helm
which installed the following coroot versions:node agent logs are showing "failed to inspect container" errors
cpu throttling calculation
Hi guys!
I see in your documentation you counting throttling.
I see coroot just has metric container_resources_cpu_throttled_seconds_total. Without period
Coroot uses the [container_resources_cpu_throttled_seconds_total](https://coroot.com/docs/metric-exporters/node-agent/metrics#container_resources_cpu_throttled_seconds_total) metric to find out how long each container has been throttled for. If this metric of related containers is correlating with the application SLIs (Service Level Indicators), that means the lack of CPU time is caused by throttling.
i search in your open code but did't find what kind of formula are you use for calculation percent of throttling in container?
[feature request] allow customization of monitoring-related namespaces
Hello, it seems that namespaces related to monitoring are hardcoded: https://github.com/coroot/coroot/blob/5e461f4dafe3935e9d610825282f1bed227c55f5/model/application.go#L119 It will be nice if they can be customized, for example i have parca in ns parca which is also related to monitoring, and i bet other people have different software in different namespaces too.
[feature request] allow blacklisting of certain services
Hello! I'm not sure if this should be part of node-agent or UI, so putting it here.
I want to be able to blacklist certain services from UI. As an example, i have iscsid running on host nodes for longhorn (also used by openebs jiva, maybe something else too). It creates useless links on map (will be running on every node, connected to all instance managers with local replica, so there will be tons of them). Hardcoding them all to coroot code seems pointless, so maybe just add setting to hide those nodes from UI?
On the other side, blacklisting them in agent (maybe with argument, like "--ignore-services=iscsid,haproxy"?) might reduce cardinality in prometheus, assuming those services will be dropped at probe time.
Support for ARM64 architectures
Hello there,
I am trying coroot for an in-house kubernetes clusters deployed on Raspberry Pi 4 machines. I followed the installation guide but I am getting
exec /opt/coroot/coroot: exec format error
. This tells me that the arm64 arch is not supported. Considering all cloud providers like AWS, GCP, Oracle and now Azure have arm64 support, it would be great if we can get arm64 bit support.Random crashes
Hello! Got this error, appears randomly. Does not crash pod with coroot, but stops responding in UI
Another one:
Bump vuetify from 2.6.9 to 2.6.10 in /front
Bumps vuetify from 2.6.9 to 2.6.10.
Release notes
Sourced from vuetify's releases.
Commits
fdfb6fc
chore(release): publish v2.6.10cd193e4
fix(VSelectList): correct mask class89e3850
fix(VDialog): don't try to focus tabindex="-1" or hidden inputs4468e3c
refactor(VSelect): render highlight with vnodes instead of innerHTMLade1434
fix(VCalendar): prevent XSS from eventName function464529a
fix(VMenu): disabled activatorFixed when attach is enabled (#15709)7a51ad0
fix(VTextField): only show clear icon on hover or when focusedf8ee680
fix(VTextField): prevent tabbing to clear buttonDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)@dependabot use these labels
will set the current labels as the default for future PRs for this repo and language@dependabot use these reviewers
will set the current reviewers as the default for future PRs for this repo and language@dependabot use these assignees
will set the current assignees as the default for future PRs for this repo and language@dependabot use this milestone
will set the current milestone as the default for future PRs for this repo and languageYou can disable automated security fix PRs for this repo from the Security Alerts page.
Node agent is crashing with `netlink receive: no such file or directory`
I was trying out coroot on local minikube setup and I see that node agent is going into
crashloopbackoff
with this errorminikube version:
kubectl version
kube-state-metrics not showing in project configuration
I've configured coroot in a kubernetes cluster, but kube-state-metrics even if deployed is not showing in project configuration page
prometheus: ok coroot-node-agent: 5 nodes found
I just followed this installation instructions: https://coroot.com/docs/metric-exporters/kube-state-metrics/installation Am I missing something?