オンラインユーザーを見れるように
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 (
"bytes"
"encoding/json"
"github.com/sirupsen/logrus"
"github.com/yitsushi/go-misskey/services/notes/timeline"
"io"
"net/http"
"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() {
for {
time.Sleep(30 * time.Second)
@ -92,7 +127,6 @@ func collectTimeline() {
misskeyGlobalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000)
if len(global) != 0 {
misskeyGlobalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli()))
}
}()
go func() {
@ -106,7 +140,6 @@ func collectTimeline() {
misskeyLocalTimelineResponseTimeRaw.Set(float64(time.Since(start).Milliseconds()) / 1000)
if len(global) != 0 {
misskeyLocalTimelineLastNotePublished.Set(float64(global[0].CreatedAt.UnixMilli()))
}
}()

11
main.go
View File

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