Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion proxysql/datadog_checks/proxysql/queries.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,23 @@

STATS_MYSQL_BACKENDS = {
'name': 'stats_mysql_backends',
'query': 'SELECT hostgroup, status, COUNT(*) FROM stats_mysql_connection_pool GROUP BY hostgroup, status',
# Note: this query seems a bit complex, but it's basically:
# SELECT hostgroup, status, COUNT(*) FROM stats_mysql_connection_pool GROUP BY hostgroup, status
# The complexity (JOIN, subquery) is only here to always generate a metric (at 0) for all combinations of
# status&hostgroup, even when no server exists at the moment in that status & hostgroup.
'query': """
SELECT refpairs.hostgroup, refpairs.status, count(stats.srv_host) as count
FROM (
SELECT DISTINCT(hostgroup), refstatuses.status
FROM stats_mysql_connection_pool
JOIN (
select 'ONLINE' as status union all select 'SHUNNED' as status union all
select 'OFFLINE_SOFT' as status union all select 'OFFLINE_HARD' as status
) refstatuses
) refpairs
LEFT JOIN stats_mysql_connection_pool stats ON stats.hostgroup=refpairs.hostgroup and stats.status=refpairs.status
GROUP BY refpairs.hostgroup, refpairs.status;
""",
'columns': [
{'name': 'hostgroup', 'type': 'tag'},
{'name': 'status', 'type': 'tag'},
Expand Down
Loading