getredash/redash · error · Exception
InfluxDB is not healthy. Check logs for more information.
Error message
InfluxDB is not healthy. Check logs for more information.
What it means
test_connection for InfluxDB v2 creates a client and calls client.health(); when the health check's status is 'fail' it logs the health message and raises this exception directing you to the logs. The real reason (auth failure, wrong URL/port, bad token) appears only in the logged health message.
Source
Thrown at redash/query_runner/influx_db_v2.py:138
def test_connection(self) -> None:
"""
Tests the healthiness of the influxdb instance. If it is not healthy,
it logs an error message and raises an exception with an appropriate
message.
:raises Exception: If the remote influxdb instance is not healthy.
"""
try:
influx_kwargs = self._get_influx_kwargs()
with InfluxDBClient(
url=self.configuration["url"],
token=self.configuration["token"],
org=self.configuration["org"],
**influx_kwargs,
) as client:
healthy = client.health()
if healthy.status == "fail":
logger.error("Connection test failed, due to: " f"{healthy.message!r}.")
raise Exception("InfluxDB is not healthy. Check logs for more " "information.")
except Exception:
raise
finally:
self._cleanup_cert_files(influx_kwargs)
def _get_type(self, type_: str) -> str:
"""
Determines the internal type of a passed data type which the database
uses.
:param type_: The type from the database to map to internal datatype.
:return: The name of the internal datatype.
"""
return TYPES_MAP.get(type_, "string")
def _get_data_from_tables(self, tables: Any) -> Dict:
"""
Determines the data of the given tables in an appropriate schema for
redash ui to render it. It retrieves all available columns and recordsView on GitHub (pinned to ca79fe988d)
Solutions
- Check the Redash worker logs for the 'Connection test failed, due to:' line — it contains the actual health message
- Verify url (e.g. http://host:8086), token, and org against influx CLI: influx ping / influx health
- If server uses self-signed TLS, enable the data source's SSL/certificate option or provide the CA cert
- For InfluxDB 1.x use the InfluxDB (v1) query runner instead of influx_db_v2
Example fix
// before url = "http://influx.example.com:8088" // after url = "http://influx.example.com:8086"
Defensive patterns
Strategy: try-catch
Validate before calling
import requests
def influx_health_ok(url) -> bool:
try:
r = requests.get(f"{url}/health", timeout=5)
return r.ok and r.json().get("status") in ("pass", "ok")
except Exception:
return False Try / catch
try:
runner.test_connection()
except Exception as e:
if "InfluxDB is not healthy" in str(e):
read_worker_log_health_message() # contains the real reason Prevention
- Confirm url/token/org with `influx health` from the Redash host
- Use the v2 runner only for InfluxDB 2.x / 1.8+ compat API
- Configure TLS/cert options for self-signed environments
When it happens
Trigger: Testing the data source when the InfluxDB v2 URL, port, token, or org is wrong, the bucket/server is unreachable, or the health endpoint returns fail (e.g. InfluxDB 1.x without v2 compat at that URL).
Common situations: Using an InfluxDB 1.8 URL with the v2 runner, expired/invalid API token, TLS mismatch (self-signed cert without enabling the cert option), wrong port (8086 vs 8088).
Related errors
- Connection refused
- Username and Password required
- Azure AD Client ID, Client Secret, and Tenant ID are require
- Failed to execute query. Return Code: {0} Reason: {1}
- Failed getting schema.
AI-assisted analysis of getredash/redash@ca79fe988d (2026-08-28).
Data as JSON: /api/errors/6a09442a116db520.
Report an issue: GitHub.