Added stats_pgsql_users table

v2.x_pg_PrepStmtBase_240714
Rahim Kanji 2 years ago
parent b4e1e1eea7
commit 0b8df6df00

@ -292,7 +292,7 @@
/*
#define STATS_SQLITE_TABLE_MYSQL_QUERY_RULES "CREATE TABLE stats_pgsql_query_rules (rule_id INTEGER PRIMARY KEY , hits INT NOT NULL)"
#define STATS_SQLITE_TABLE_MYSQL_USERS "CREATE TABLE stats_pgsql_users (username VARCHAR PRIMARY KEY , frontend_connections INT NOT NULL , frontend_max_connections INT NOT NULL)"
#define STATS_SQLITE_TABLE_MYSQL_COMMANDS_COUNTERS "CREATE TABLE stats_pgsql_commands_counters (Command VARCHAR NOT NULL PRIMARY KEY , Total_Time_us INT NOT NULL , Total_cnt INT NOT NULL , cnt_100us INT NOT NULL , cnt_500us INT NOT NULL , cnt_1ms INT NOT NULL , cnt_5ms INT NOT NULL , cnt_10ms INT NOT NULL , cnt_50ms INT NOT NULL , cnt_100ms INT NOT NULL , cnt_500ms INT NOT NULL , cnt_1s INT NOT NULL , cnt_5s INT NOT NULL , cnt_10s INT NOT NULL , cnt_INFs)"
#define STATS_SQLITE_TABLE_MYSQL_PROCESSLIST "CREATE TABLE stats_pgsql_processlist (ThreadID INT NOT NULL , SessionID INTEGER PRIMARY KEY , user VARCHAR , db VARCHAR , cli_host VARCHAR , cli_port INT , hostgroup INT , l_srv_host VARCHAR , l_srv_port INT , srv_host VARCHAR , srv_port INT , command VARCHAR , time_ms INT NOT NULL , info VARCHAR , status_flags INT , extended_info VARCHAR)"
@ -305,7 +305,7 @@
#define STATS_SQLITE_TABLE_PGSQL_CONNECTION_POOL "CREATE TABLE stats_pgsql_connection_pool (hostgroup INT , srv_host VARCHAR , srv_port INT , status VARCHAR , ConnUsed INT , ConnFree INT , ConnOK INT , ConnERR INT , MaxConnUsed INT , Queries INT , Bytes_data_sent INT , Bytes_data_recv INT , Latency_us INT)"
#define STATS_SQLITE_TABLE_PGSQL_CONNECTION_POOL_RESET "CREATE TABLE stats_pgsql_connection_pool_reset (hostgroup INT , srv_host VARCHAR , srv_port INT , status VARCHAR , ConnUsed INT , ConnFree INT , ConnOK INT , ConnERR INT , MaxConnUsed INT , Queries INT , Bytes_data_sent INT , Bytes_data_recv INT , Latency_us INT)"
#define STATS_SQLITE_TABLE_PGSQL_FREE_CONNECTIONS "CREATE TABLE stats_pgsql_free_connections (fd INT NOT NULL , hostgroup INT NOT NULL , srv_host VARCHAR NOT NULL , srv_port INT NOT NULL , user VARCHAR NOT NULL , database VARCHAR , init_connect VARCHAR , time_zone VARCHAR , sql_mode VARCHAR , idle_ms INT , statistics VARCHAR , pgsql_info VARCHAR)"
#define STATS_SQLITE_TABLE_PGSQL_USERS "CREATE TABLE stats_pgsql_users (username VARCHAR PRIMARY KEY , frontend_connections INT NOT NULL , frontend_max_connections INT NOT NULL)"
//#define STATS_SQLITE_TABLE_MEMORY_METRICS "CREATE TABLE stats_memory_metrics (Variable_Name VARCHAR NOT NULL PRIMARY KEY , Variable_Value VARCHAR NOT NULL)"
/*
#define STATS_SQLITE_TABLE_MYSQL_ERRORS "CREATE TABLE stats_pgsql_errors (hostgroup INT NOT NULL , hostname VARCHAR NOT NULL , port INT NOT NULL , username VARCHAR NOT NULL , client_address VARCHAR NOT NULL , schemaname VARCHAR NOT NULL , errno INT NOT NULL , count_star INTEGER NOT NULL , first_seen INTEGER NOT NULL , last_seen INTEGER NOT NULL , last_error VARCHAR NOT NULL DEFAULT '' , PRIMARY KEY (hostgroup, hostname, port, username, schemaname, errno) )"

@ -644,7 +644,6 @@ class ProxySQL_Admin {
void stats___mysql_commands_counters();
void stats___mysql_processlist();
void stats___mysql_free_connections();
void stats___pgsql_free_connections();
void stats___mysql_connection_pool(bool _reset);
void stats___mysql_errors(bool reset);
void stats___memory_metrics();
@ -652,6 +651,8 @@ class ProxySQL_Admin {
void stats___mysql_users();
void stats___pgsql_global();
void stats___pgsql_users();
void stats___pgsql_free_connections();
void stats___pgsql_connection_pool(bool _reset);
void stats___proxysql_servers_checksums();

@ -677,6 +677,7 @@ bool ProxySQL_Admin::init(const bootstrap_info_t& bootstrap_info) {
insert_into_tables_defs(tables_defs_stats,"stats_pgsql_connection_pool", STATS_SQLITE_TABLE_PGSQL_CONNECTION_POOL);
insert_into_tables_defs(tables_defs_stats,"stats_pgsql_connection_pool_reset", STATS_SQLITE_TABLE_PGSQL_CONNECTION_POOL_RESET);
insert_into_tables_defs(tables_defs_stats,"stats_pgsql_free_connections", STATS_SQLITE_TABLE_PGSQL_FREE_CONNECTIONS);
insert_into_tables_defs(tables_defs_stats,"stats_pgsql_users", STATS_SQLITE_TABLE_PGSQL_USERS);
// ProxySQL Cluster
insert_into_tables_defs(tables_defs_admin,"proxysql_servers", ADMIN_SQLITE_TABLE_PROXYSQL_SERVERS);

@ -1148,6 +1148,7 @@ bool ProxySQL_Admin::GenericRefreshStatistics(const char *query_no_space, unsign
bool stats_mysql_commands_counters=false;
bool stats_mysql_query_rules=false;
bool stats_mysql_users=false;
bool stats_pgsql_users = false;
bool stats_mysql_gtid_executed=false;
bool stats_mysql_client_host_cache=false;
bool stats_mysql_client_host_cache_reset=false;
@ -1262,6 +1263,8 @@ bool ProxySQL_Admin::GenericRefreshStatistics(const char *query_no_space, unsign
{ stats_mysql_query_rules=true; refresh=true; }
if (strstr(query_no_space,"stats_mysql_users"))
{ stats_mysql_users=true; refresh=true; }
if (strstr(query_no_space,"stats_pgsql_users"))
{ stats_pgsql_users = true; refresh = true; }
if (strstr(query_no_space,"stats_mysql_gtid_executed"))
{ stats_mysql_gtid_executed=true; refresh=true; }
if (strstr(query_no_space,"stats_mysql_client_host_cache"))
@ -1442,6 +1445,8 @@ bool ProxySQL_Admin::GenericRefreshStatistics(const char *query_no_space, unsign
stats___mysql_commands_counters();
if (stats_mysql_users)
stats___mysql_users();
if (stats_pgsql_users)
stats___pgsql_users();
if (stats_mysql_gtid_executed)
stats___mysql_gtid_executed();
@ -1594,7 +1599,7 @@ bool ProxySQL_Admin::GenericRefreshStatistics(const char *query_no_space, unsign
stats_mysql_commands_counters || stats_mysql_query_rules || stats_mysql_users ||
stats_mysql_gtid_executed || stats_mysql_free_connections ||
stats_pgsql_global || stats_pgsql_connection_pool || stats_pgsql_connection_pool_reset ||
stats_pgsql_free_connections
stats_pgsql_free_connections || stats_pgsql_users
) {
ret = true;
}
@ -1800,6 +1805,7 @@ void ProxySQL_Admin::vacuum_stats(bool is_admin) {
"stats_mysql_query_digest_reset",
"stats_mysql_query_rules",
"stats_mysql_users",
"stats_pgsql_users",
"stats_proxysql_servers_checksums",
"stats_proxysql_servers_metrics",
"stats_proxysql_servers_status",

@ -28,6 +28,7 @@
extern bool admin_proxysql_mysql_paused;
extern bool admin_proxysql_pgsql_paused;
extern MySQL_Authentication *GloMyAuth;
extern PgSQL_Authentication* GloPgAuth;
extern MySQL_LDAP_Authentication *GloMyLdapAuth;
extern Query_Cache *GloQC;
extern ProxySQL_Admin *GloAdmin;
@ -1933,6 +1934,55 @@ void ProxySQL_Admin::stats___mysql_users() {
free(ads);
}
void ProxySQL_Admin::stats___pgsql_users() {
pgsql_account_details_t** ads = NULL;
statsdb->execute("DELETE FROM stats_pgsql_users");
int num_users = GloPgAuth->dump_all_users(&ads, false);
if (num_users == 0) return;
const char q[] = "INSERT INTO stats_pgsql_users(username,frontend_connections,frontend_max_connections) VALUES ('%s',%d,%d)";
char buf[256] = { 0 };
for (int i = 0; i < num_users; i++) {
pgsql_account_details_t* ad = ads[i];
if (ad->default_hostgroup >= 0) { // only not admin/stats
cfmt_t q_fmt = cstr_format(buf, q, ad->username, ad->num_connections_used, ad->max_connections);
if (q_fmt.str.size()) {
statsdb->execute(q_fmt.str.c_str());
}
else {
statsdb->execute(buf);
}
}
free(ad->username);
free(ad);
}
/*if (GloMyLdapAuth) {
std::unique_ptr<SQLite3_result> ldap_users{ GloMyLdapAuth->dump_all_users() };
for (const SQLite3_row* row : ldap_users->rows) {
const char* username = row->fields[LDAP_USER_FIELD_IDX::USERNAME];
int f_conns = atoi(row->fields[LDAP_USER_FIELD_IDX::FRONTEND_CONNECTIONS]);
int f_max_conns = atoi(row->fields[LDAP_USER_FIELD_IDX::FRONTED_MAX_CONNECTIONS]);
cfmt_t q_fmt = cstr_format(buf, q, username, f_conns, f_max_conns);
if (q_fmt.str.size()) {
statsdb->execute(q_fmt.str.c_str());
}
else {
statsdb->execute(buf);
}
}
}*/
free(ads);
}
void ProxySQL_Admin::stats___mysql_gtid_executed() {
statsdb->execute("DELETE FROM stats_mysql_gtid_executed");
SQLite3_result *resultset=NULL;

Loading…
Cancel
Save