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';
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;
\c gomastodonstats
CREATE TABLE IF NOT EXISTS statsdb (
id INT NOT NULL,
id SERIAL,
service 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,
PRIMARY KEY (id)
);
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
// UserCount metric name
METRICNAME_USERCOUNT = "userCount"
// Pixelfed
PIXELFED_DB_SCHEMA string
PIXELFED_USER_QUERY = "SELECT count(*) FROM users WHERE status IS NULL;"
PIXELFED_IDENTIFIER = "pixelfed"
// Matrix
MATRIX_DB_SCHEMA string
MATRIX_USER_QUERY = "SELECT count(*) FROM users WHERE deactivated = 0;"
MATRIX_IDENTIFIDER = "matrix"
// Mastodon
MASTODON_DB_SCHEMA string
MASTODON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False;"
MASTODON_IDENTIFIER = "mastodon"
// Mobilizon
MOBILIZON_DB_SCHEMA string
MOBILIZON_USER_QUERY = "SELECT count(*) FROM users WHERE disabled = False;"
MOBILIZON_IDENTIFIER = "mobilizon"
// Peertube
PEERTUBE_DB_SCHEMA string
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
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 {
log.Println(err)
} else {
pfMetric := metric{
Service: "pixelfed",
MetricName: "userCount",
MetricValue: pfUsers,
m := metric{
Service: PIXELFED_IDENTIFIER,
MetricName: METRICNAME_USERCOUNT,
MetricValue: userCount,
}
log.Printf("%s user count: %d", PIXELFED_IDENTIFIER, userCount)
metrics = append(metrics, m)
}
log.Printf("Pixelfed user count: %d", pfUsers)
metrics = append(metrics, pfMetric)
}
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