mirror of
https://github.com/idanoo/go-mastodon-stats
synced 2025-07-01 22:02:20 +00:00
Add remaining metrics
This commit is contained in:
parent
4e9199bf3e
commit
adb0caf7b2
3 changed files with 82 additions and 16 deletions
28
README.md
28
README.md
|
@ -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;
|
||||||
```
|
```
|
|
@ -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"
|
||||||
)
|
)
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue