オンラインユーザーを見れるように
docker-ci / docker (push) Successful in 3m16s Details

This commit is contained in:
usbharu 2025-04-16 14:00:17 +09:00
parent 4dc8585667
commit cf3d15fa77
Signed by: usbharu
GPG Key ID: 8CB1087135660B8D
2 changed files with 45 additions and 3 deletions

View File

@ -2,8 +2,10 @@ package main
import ( import (
"bytes" "bytes"
"encoding/json"
"github.com/sirupsen/logrus" "github.com/sirupsen/logrus"
"github.com/yitsushi/go-misskey/services/notes/timeline" "github.com/yitsushi/go-misskey/services/notes/timeline"
"io"
"net/http" "net/http"
"time" "time"
) )
@ -78,6 +80,39 @@ func collectStats() {
} }
} }
type OnlineUsers struct {
Count int `json:"count"`
}
func collectOnlineUsers() {
for {
time.Sleep(1 * time.Minute)
response, err := http.Get("https://" + endpoint + "/api/get-online-users-count")
if err != nil {
logrus.Warning(err)
continue
}
if err != nil {
logrus.Warning(err)
continue
}
var onlineUsers OnlineUsers
all, err := io.ReadAll(response.Body)
err = response.Body.Close()
if err != nil {
logrus.Warning(err)
continue
}
err = json.Unmarshal(all, &onlineUsers)
if err != nil {
logrus.Warning(err)
}
misskeyOnlineUsers.Set(float64(onlineUsers.Count))
}
}
func collectTimeline() { func collectTimeline() {
for { for {
time.Sleep(30 * time.Second) time.Sleep(30 * time.Second)
@ -92,7 +127,6 @@ func collectTimeline() {
misskeyGlobalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000) misskeyGlobalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000)
if len(global) != 0 { if len(global) != 0 {
misskeyGlobalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli())) misskeyGlobalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli()))
} }
}() }()
go func() { go func() {
@ -106,7 +140,6 @@ func collectTimeline() {
misskeyLocalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000) misskeyLocalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000)
if len(global) != 0 { if len(global) != 0 {
misskeyLocalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli())) misskeyLocalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli()))
} }
}() }()

11
main.go
View File

@ -100,20 +100,27 @@ var (
Name: "misskey_local_timeline_response_time_raw", Name: "misskey_local_timeline_response_time_raw",
Help: "Response Time for misskey Local Timeline", Help: "Response Time for misskey Local Timeline",
}) })
misskeyOnlineUsers = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "misskey_online_users",
Help: "Online Users",
})
) )
func main() { func main() {
options, err := misskey.NewClientWithOptions( options, err := misskey.NewClientWithOptions(
misskey.WithAPIToken(apiKey), misskey.WithAPIToken(apiKey),
misskey.WithBaseURL("https", endpoint, ""), misskey.WithBaseURL("https", endpoint, ""),
misskey.WithLogLevel(logrus.DebugLevel), misskey.WithLogLevel(logrus.InfoLevel),
) )
client = options client = options
if err != nil { if err != nil {
logrus.Error(err)
return return
} }
stats, err := client.Admin().Queue().Stats() stats, err := client.Admin().Queue().Stats()
if err != nil { if err != nil {
logrus.Error(err)
return return
} }
fmt.Println(stats) fmt.Println(stats)
@ -132,6 +139,7 @@ func main() {
prometheus.MustRegister(misskeyLocalTimelineLastNotePublished) prometheus.MustRegister(misskeyLocalTimelineLastNotePublished)
prometheus.MustRegister(misskeyGlobalTimelineResponseTimeRaw) prometheus.MustRegister(misskeyGlobalTimelineResponseTimeRaw)
prometheus.MustRegister(misskeyLocalTimelineResponseTimeRaw) prometheus.MustRegister(misskeyLocalTimelineResponseTimeRaw)
prometheus.MustRegister(misskeyOnlineUsers)
handler := promhttp.Handler() handler := promhttp.Handler()
@ -145,6 +153,7 @@ func main() {
go collectPing() go collectPing()
go collectStats() go collectStats()
go collectTimeline() go collectTimeline()
go collectOnlineUsers()
}() }()
logrus.Error(server.ListenAndServe()) logrus.Error(server.ListenAndServe())