オンラインユーザーを見れるように
docker-ci / docker (push) Successful in 3m16s
Details
docker-ci / docker (push) Successful in 3m16s
Details
This commit is contained in:
parent
4dc8585667
commit
cf3d15fa77
37
collector.go
37
collector.go
|
@ -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
11
main.go
|
@ -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())
|
||||||
|
|
Loading…
Reference in New Issue