Add remaining metrics

This commit is contained in:
idanoo 2023-01-30 11:11:25 +13:00
parent 4e9199bf3e
commit adb0caf7b2
Signed by: idanoo
GPG key ID: 387387CDBC02F132
3 changed files with 82 additions and 16 deletions

View file

@ -2,22 +2,36 @@ Create readonly account with access to stats DB
``` ```
CREATE ROLE readonly;
GRANT USAGE ON SCHEMA public TO readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
CREATE USER gomastodonstats WITH PASSWORD 'superrandompassword'; CREATE USER gomastodonstats WITH PASSWORD 'superrandompassword';
GRANT readonly TO gomastodonstats;
\c pixelfed
GRANT SELECT ON ALL TABLES IN SCHEMA public TO gomastodonstats;
\c mtrx
GRANT SELECT ON ALL TABLES IN SCHEMA public TO gomastodonstats;
\c mastodon_production
GRANT SELECT ON ALL TABLES IN SCHEMA public TO gomastodonstats;
\c peertube_prod
GRANT SELECT ON ALL TABLES IN SCHEMA public TO gomastodonstats;
\c mobilizon_prod
GRANT SELECT ON ALL TABLES IN SCHEMA public TO gomastodonstats;
CREATE DATABASE gomastodonstats WITH OWNER gomastodonstats; CREATE DATABASE gomastodonstats WITH OWNER gomastodonstats;
\c gomastodonstats \c gomastodonstats
CREATE TABLE IF NOT EXISTS statsdb ( CREATE TABLE IF NOT EXISTS statsdb (
id INT NOT NULL, id SERIAL,
service VARCHAR(50) NOT NULL, service VARCHAR(50) NOT NULL,
metric_name VARCHAR(50) NOT NULL, metric_name VARCHAR(50) NOT NULL,
metric_time INT NOT NULL, metric_time TIMESTAMP NOT NULL,
metric_value INT NOT NULL, metric_value INT NOT NULL,
PRIMARY KEY (id) PRIMARY KEY (id)
); );
CREATE INDEX service_lookup ON statsdb USING btree (service,metric_name, metric_time); CREATE INDEX service_lookup ON statsdb USING btree (service,metric_name, metric_time);
GRANT ALL ON ALL TABLES IN SCHEMA public TO gomastodonstats;
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO gomastodonstats;
``` ```

View file

@ -10,23 +10,31 @@ var (
TIMEZONE string TIMEZONE string
// UserCount metric name
METRICNAME_USERCOUNT = "userCount"
// Pixelfed // Pixelfed
PIXELFED_DB_SCHEMA string PIXELFED_DB_SCHEMA string
PIXELFED_USER_QUERY = "SELECT count(*) FROM users WHERE status IS NULL;" PIXELFED_USER_QUERY = "SELECT count(*) FROM users WHERE status IS NULL;"
PIXELFED_IDENTIFIER = "pixelfed"
// Matrix // Matrix
MATRIX_DB_SCHEMA string MATRIX_DB_SCHEMA string
MATRIX_USER_QUERY = "SELECT count(*) FROM users WHERE deactivated = 0;" MATRIX_USER_QUERY = "SELECT count(*) FROM users WHERE deactivated = 0;"
MATRIX_IDENTIFIDER = "matrix"
// Mastodon // Mastodon
MASTODON_DB_SCHEMA string MASTODON_DB_SCHEMA string
MASTODON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False;" MASTODON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False;"
MASTODON_IDENTIFIER = "mastodon"
// Mobilizon // Mobilizon
MOBILIZON_DB_SCHEMA string MOBILIZON_DB_SCHEMA string
MOBILIZON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False;" MOBILIZON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False;"
MOBILIZON_IDENTIFIER = "mobilizon"
// Peertube // Peertube
PEERTUBE_DB_SCHEMA string PEERTUBE_DB_SCHEMA string
PEERTUBE_USER_QUERY = "SELECT count(*) FROM \"user\" WHERE blocked = False;" PEERTUBE_USER_QUERY = "SELECT count(*) FROM \"user\" WHERE blocked = False;"
PEERTUBE_IDENTIFIER = "peertube"
) )

View file

@ -28,19 +28,63 @@ func getUserCounts() ([]metric, error) {
var metrics []metric var metrics []metric
if PIXELFED_DB_SCHEMA != "" { if PIXELFED_DB_SCHEMA != "" {
pfUsers, err := runIntQuery(PIXELFED_DB_SCHEMA, PIXELFED_USER_QUERY) userCount, err := runIntQuery(PIXELFED_DB_SCHEMA, PIXELFED_USER_QUERY)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} else { } else {
pfMetric := metric{ m := metric{
Service: "pixelfed", Service: PIXELFED_IDENTIFIER,
MetricName: "userCount", MetricName: METRICNAME_USERCOUNT,
MetricValue: pfUsers, MetricValue: userCount,
} }
log.Printf("Pixelfed user count: %d", pfUsers) log.Printf("%s user count: %d", PIXELFED_IDENTIFIER, userCount)
metrics = append(metrics, pfMetric) metrics = append(metrics, m)
} }
}
if MASTODON_DB_SCHEMA != "" {
userCount, err := runIntQuery(MASTODON_DB_SCHEMA, MASTODON_USER_QUERY)
if err != nil {
log.Println(err)
} else {
m := metric{
Service: MASTODON_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", MASTODON_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
}
if MOBILIZON_DB_SCHEMA != "" {
userCount, err := runIntQuery(MOBILIZON_DB_SCHEMA, MOBILIZON_USER_QUERY)
if err != nil {
log.Println(err)
} else {
m := metric{
Service: MOBILIZON_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", MOBILIZON_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
}
if MOBILIZON_DB_SCHEMA != "" {
userCount, err := runIntQuery(PEERTUBE_DB_SCHEMA, PEERTUBE_USER_QUERY)
if err != nil {
log.Println(err)
} else {
m := metric{
Service: PEERTUBE_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", PEERTUBE_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
} }
return metrics, nil return metrics, nil