115 lines
4.6 KiB
Go
115 lines
4.6 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"github.com/sirupsen/logrus"
|
||
|
"github.com/yitsushi/go-misskey/services/notes/timeline"
|
||
|
"net/http"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func collectJobqueue() {
|
||
|
for {
|
||
|
time.Sleep(1 * time.Second)
|
||
|
stats, err := client.Admin().Queue().Stats()
|
||
|
if err != nil {
|
||
|
logrus.Warning(err)
|
||
|
continue
|
||
|
}
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("deliver", "waiting").Set(float64(stats.Deliver.Waiting))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("deliver", "active").Set(float64(stats.Deliver.Active))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("deliver", "completed").Set(float64(stats.Deliver.Completed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("deliver", "failed").Set(float64(stats.Deliver.Failed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("deliver", "delayed").Set(float64(stats.Deliver.Delayed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("deliver", "paused").Set(float64(stats.Deliver.Paused))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("inbox", "waiting").Set(float64(stats.Inbox.Waiting))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("inbox", "active").Set(float64(stats.Inbox.Active))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("inbox", "completed").Set(float64(stats.Inbox.Completed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("inbox", "failed").Set(float64(stats.Inbox.Failed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("inbox", "delayed").Set(float64(stats.Inbox.Delayed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("inbox", "paused").Set(float64(stats.Inbox.Paused))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("db", "waiting").Set(float64(stats.DB.Waiting))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("db", "active").Set(float64(stats.DB.Active))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("db", "completed").Set(float64(stats.DB.Completed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("db", "failed").Set(float64(stats.DB.Failed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("db", "delayed").Set(float64(stats.DB.Delayed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("db", "paused").Set(float64(stats.DB.Paused))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("objectstorage", "waiting").Set(float64(stats.ObjectStorage.Waiting))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("objectstorage", "active").Set(float64(stats.ObjectStorage.Active))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("objectstorage", "completed").Set(float64(stats.ObjectStorage.Completed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("objectstorage", "failed").Set(float64(stats.ObjectStorage.Failed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("objectstorage", "delayed").Set(float64(stats.ObjectStorage.Delayed))
|
||
|
misskeyJobQueueJobsCount.WithLabelValues("objectstorage", "paused").Set(float64(stats.ObjectStorage.Paused))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func collectPing() {
|
||
|
for {
|
||
|
time.Sleep(5 * time.Second)
|
||
|
var buf = bytes.NewBuffer([]byte(`{}`))
|
||
|
start := time.Now()
|
||
|
resp, err := http.Post("https://"+endpoint+"/api/ping", "application/json", buf)
|
||
|
if err != nil {
|
||
|
logrus.Warning(err)
|
||
|
continue
|
||
|
}
|
||
|
err = resp.Body.Close()
|
||
|
if err != nil {
|
||
|
logrus.Warning(err)
|
||
|
continue
|
||
|
}
|
||
|
misskeyPingResponseCode.Set(float64(resp.StatusCode))
|
||
|
misskeyPingResponseTime.Observe(float64(time.Since(start).Milliseconds()) / 1000)
|
||
|
misskeyPingResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func collectStats() {
|
||
|
for {
|
||
|
time.Sleep(30 * time.Second)
|
||
|
stats, err := client.Meta().Stats()
|
||
|
if err != nil {
|
||
|
continue
|
||
|
}
|
||
|
misskeyNotesCount.Set(float64(stats.NotesCount))
|
||
|
misskeyUsersCount.Set(float64(stats.UsersCount))
|
||
|
misskeyOriginalNotesCount.Set(float64(stats.OriginalNotesCount))
|
||
|
misskeyOriginalUsersCount.Set(float64(stats.OriginalUsersCount))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func collectTimeline() {
|
||
|
for {
|
||
|
time.Sleep(30 * time.Second)
|
||
|
go func() {
|
||
|
start := time.Now()
|
||
|
global, err := client.Notes().Timeline().Global(timeline.GlobalRequest{Limit: 10})
|
||
|
if err != nil {
|
||
|
logrus.Warning(err)
|
||
|
return
|
||
|
}
|
||
|
misskeyGlobalTimelineResponseTime.Observe(float64(time.Since(start).Milliseconds()) / 1000)
|
||
|
misskeyGlobalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000)
|
||
|
if len(global) != 0 {
|
||
|
misskeyGlobalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli()))
|
||
|
|
||
|
}
|
||
|
}()
|
||
|
go func() {
|
||
|
start := time.Now()
|
||
|
global, err := client.Notes().Timeline().Local(timeline.LocalRequest{Limit: 10})
|
||
|
if err != nil {
|
||
|
logrus.Warning(err)
|
||
|
return
|
||
|
}
|
||
|
misskeyLocalTimelineResponseTime.Observe(float64(time.Since(start).Milliseconds()) / 1000)
|
||
|
misskeyLocalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000)
|
||
|
if len(global) != 0 {
|
||
|
misskeyLocalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli()))
|
||
|
|
||
|
}
|
||
|
}()
|
||
|
|
||
|
}
|
||
|
}
|