Agente de Banco de Dados Colete métricas de banco de dados sem alterar código. Suporta PostgreSQL, MySQL, MongoDB, Redis, Cassandra, Elasticsearch, ClickHouse, CockroachDB e SQLite.
O Obtrace Database Agent é um binário standalone que conecta nos seus bancos de dados, coleta métricas nativas de performance e envia como telemetria OTLP para o endpoint de ingestão do Obtrace. Sem alteração de código, sem sidecars injetados na aplicação -- basta apontar o agent pros seus bancos e ele cuida do resto.
docker run -d \
--name obtrace-db-agent \
-e OBTRACE_INGEST_URL=https://ingest.obtrace.ai \
-e OBTRACE_API_KEY=sua-api-key \
-e DB_CONNECTIONS='[{"type":"postgres","dsn":"postgres://user:pass@host:5432/mydb","name":"primary"}]' \
ghcr.io/obtrace/db-agent:latest
go install github.com/obtrace/db-agent@latest
git clone https://github.com/obtrace/db-agent.git
cd db-agent
go build -o db-agent .
Defina estas variáveis de ambiente:
Variável Obrigatória Descrição Padrão OBTRACE_API_KEYSim API key do projeto -- DB_CONNECTIONSSim JSON array de conexões de banco -- OBTRACE_INGEST_URLNão URL do endpoint de ingestão http://localhost:8080OBTRACE_APP_IDNão Identificador da aplicação db-agentOBTRACE_ENVNão Nome do ambiente prodOBTRACE_TENANT_IDNão Identificador do tenant -- OBTRACE_PROJECT_IDNão Identificador do projeto -- COLLECT_INTERVAL_MSNão Intervalo de coleta (ms) 15000
Banco Valor do tipo Formato da DSN Fonte de métricas PostgreSQL postgrespostgres://user:pass@host:5432/dbpg_stat_database, pg_stat_activity MySQL mysqluser:pass@tcp(host:3306)/dbSHOW GLOBAL STATUS MongoDB mongodbmongodb://user:pass@host:27017/adminserverStatus Redis redisredis://:pass@host:6379/0INFO, SLOWLOG Cassandra cassandrahttp://host:8778/jolokiaJolokia JMX / Prometheus Elasticsearch elasticsearchhttp://host:9200_cluster/health, _nodes/stats ClickHouse clickhousehttp://user:pass@host:8123system.metrics, system.events CockroachDB cockroachdbhttp://host:8080_status/vars SQLite sqlite/path/to/db.sqlitePRAGMA queries
Monitore um PostgreSQL e um Redis:
version : "3.8"
services :
postgres :
image : postgres:16
environment :
POSTGRES_PASSWORD : secret
ports :
- "5432:5432"
redis :
image : redis:7
ports :
- "6379:6379"
obtrace-db-agent :
image : ghcr.io/obtrace/db-agent:latest
depends_on :
- postgres
- redis
environment :
OBTRACE_INGEST_URL : https://ingest.obtrace.ai
OBTRACE_API_KEY : ${OBTRACE_API_KEY}
OBTRACE_ENV : staging
DB_CONNECTIONS : >-
[
{"type": "postgres", "dsn": "postgres://postgres:secret@postgres:5432/postgres?sslmode=disable", "name": "primary"},
{"type": "redis", "dsn": "redis://redis:6379/0", "name": "cache"}
]
export OBTRACE_API_KEY = obt_live_abc123
docker compose up -d
Métrica Descrição db.postgres.connections.activeConexões backend ativas db.postgres.connections.idleConexões idle db.postgres.connections.waitingConexões aguardando locks db.postgres.cache_hit_ratioTaxa de hit do buffer cache (0-1) db.postgres.deadlocksTotal de deadlocks detectados db.postgres.database_size_bytesTamanho total do banco db.postgres.longest_query_secondsDuração da query mais longa em execução db.postgres.table.dead_tuplesDead tuples por tabela (top 10) db.postgres.query.avg_time_msTempo médio de query (pg_stat_statements)
Métrica Descrição db.mysql.connections.currentThreads conectadas db.mysql.connections.runningThreads executando db.mysql.queries.totalTotal de queries db.mysql.queries.slowQueries lentas db.mysql.innodb.buffer_pool_hit_ratioTaxa de hit do buffer pool InnoDB db.mysql.innodb.row_lock_waitsEventos de espera por row lock
Métrica Descrição db.mongodb.connections.currentConexões atuais db.mongodb.opcounters.queryOperações de query db.mongodb.memory.resident_mbMemória residente db.mongodb.replication.lag_secondsLag de replicação
Métrica Descrição db.redis.connections.connectedClientes conectados db.redis.memory.used_bytesUso de memória db.redis.keyspace.hit_ratioTaxa de hit do keyspace db.redis.commands.per_secondOperações por segundo db.redis.evictionsKeys removidas por eviction
Métrica Descrição db.cassandra.read_latency_msLatência de leitura do cliente db.cassandra.write_latency_msLatência de escrita do cliente db.cassandra.compactions_pendingCompactações pendentes db.cassandra.connections.activeConexões ativas
Métrica Descrição db.elasticsearch.cluster.statusSaúde do cluster (0=green, 1=yellow, 2=red) db.elasticsearch.cluster.shards.unassignedShards não atribuídos db.elasticsearch.jvm.heap_used_bytesUso de heap JVM db.elasticsearch.indices.search_latency_msLatência média de busca
Métrica Descrição db.clickhouse.queries.activeQueries em execução db.clickhouse.queries.failedQueries com falha db.clickhouse.memory.tracked_bytesMemória rastreada db.clickhouse.parts.activeData parts ativas
Métrica Descrição db.cockroachdb.sql.query_countTotal de queries SQL db.cockroachdb.sql.latency_p99Latência SQL (p99) db.cockroachdb.ranges.unavailableRanges indisponíveis db.cockroachdb.liveness.live_nodesNodes ativos
Métrica Descrição db.sqlite.database_size_bytesTamanho do arquivo do banco db.sqlite.page_sizeTamanho da página db.sqlite.cache_size_pagesTamanho do cache
Use credenciais read-only para todos os bancos monitorados.
Configure o intervalo de coleta entre 15-60 segundos para workloads de produção.
Defina limites de recursos do container -- 64MB de memória é suficiente para a maioria dos setups.
O agent limita a 2 conexões por banco para minimizar overhead.
Armazene API keys em secret managers, nunca em arquivos de config em texto plano.
401 do ingest : Verifique se OBTRACE_API_KEY corresponde ao seu projeto.
Sem métricas : Confira formato da DSN, acesso de rede e permissões do usuário do banco.
Memória alta : Reduza a quantidade de DB_CONNECTIONS ou aumente COLLECT_INTERVAL_MS.
Collector pulado : Verifique os logs do agent para o erro específico (DSN inválida, falha de auth, rede).
pg_stat_statements ausente : Instale a extensão com CREATE EXTENSION pg_stat_statements.
Métricas de banco aparecem no dashboard do Obtrace dentro de um intervalo de coleta
Sem erros 401/403 nos logs do agent
Memória do agent fica abaixo de 64MB
Credenciais read-only usadas para todos os bancos
Veja também: Métricas Semânticas