Reference
Frequently asked questions
Quick answers to the questions people ask most about Elevarq Signals — data privacy, what it collects, supported versions, licensing, and how it stays read-only.
Does Elevarq Signals send my data anywhere?
No. All data stays on your machine. Elevarq Signals makes no outbound connections except to your PostgreSQL databases. There is no telemetry, analytics, or phone-home functionality.
Does Elevarq Signals use AI?
No. Elevarq Signals is a data collector. It does not contain any AI, machine learning, or language model functionality. It runs SQL queries and stores the results.
Does Elevarq Signals require internet access?
Only to reach your PostgreSQL targets. If your databases are on the same network, Elevarq Signals works fully offline. It does not download updates, sync to a cloud, or contact external services.
What data does Elevarq Signals collect?
Statistics from PostgreSQL's built-in views: pg_stat_activity, pg_stat_database, pg_stat_user_tables, pg_settings, pg_stat_statements (if available), and wraparound-detection queries. All queries are read-only and visible in the source code.
Can I review the SQL queries it runs?
Yes. Every query is defined in the collector's query catalog and is statically linted at startup to ensure it contains only SELECT statements with no DDL, DML, or dangerous functions.
How does Elevarq Signals relate to Elevarq Analyzer?
Elevarq Signals is the open-source data collector. Elevarq Analyzer is a separate, commercial product that can ingest Elevarq Signals snapshots for automated analysis and reporting. Elevarq Signals is fully functional on its own — you do not need Elevarq Analyzer to use it.
Can I use Elevarq Signals without buying anything?
Yes. Elevarq Signals is free and open source under the BSD-3-Clause license. There are no paid tiers, usage limits, or feature gates.
Can Elevarq Signals modify my database?
No. Connections enforce read-only mode at three independent layers, and the SQL linter aborts the process at startup if any query contains write operations.
What PostgreSQL versions are supported?
PostgreSQL 14 and later (actively supported versions). Some collectors require specific extensions (e.g. pg_stat_statements), which are detected automatically and skipped if unavailable.
How do I integrate Elevarq Signals with my existing monitoring?
Elevarq Signals exports snapshots as ZIP archives with a documented JSON format (signals-snapshot.v1). You can feed these into any downstream tool, script, or pipeline. The format is stable and versioned. To watch the collector's own operational health, scrape its Prometheus metrics — see monitoring Signals.
What happens if I connect with a superuser role?
Elevarq Signals will refuse to collect. It validates the connected role's attributes before each collection cycle and blocks collection if the role has superuser, replication, or bypass-RLS privileges. Create a dedicated monitoring role with pg_monitor instead — see installing Signals. An explicit override (SIGNALS_ALLOW_UNSAFE_ROLE=true) exists for lab/dev use but is a hard configuration error in env: prod.
Does pg_stat_statements work across PostgreSQL versions?
Yes. The pg_stat_statements collector uses dynamic column capture (a wildcard projection over the view) so it adapts to whatever columns the installed extension version exposes. This avoids failures caused by columns renamed or added between PostgreSQL releases (e.g. blk_read_time was renamed to shared_blk_read_time in PostgreSQL 17). If the extension is not installed, the collector is silently skipped.
Does the pg_stat_statements collector return Signals' own queries?
No. The collector self-filters so that your workload analysis is not polluted by Signals' own probe queries:
- Every PostgreSQL connection opened by Signals sets
application_name = signalsin its startup parameters. - The
pg_stat_statements_v1SQL excludes rows attributable to any session whoseapplication_nameissignals, matched on(userid, dbid). - The same SQL scopes rows to the connected database (
pg_database.datname = current_database()), so cross-database statistics from other databases on the same cluster are not collected.
If you operate another application that also sets its application_name to signals, its rows are suppressed too. Pick a distinct name for non-Signals tooling.