153 lines
4.3 KiB
Go
153 lines
4.3 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/yitsushi/go-misskey"
|
|
"net/http"
|
|
"os"
|
|
)
|
|
|
|
//TIP <p>To run your code, right-click the code and select <b>Run</b>.</p> <p>Alternatively, click
|
|
// the <icon src="AllIcons.Actions.Execute"/> icon in the gutter and select the <b>Run</b> menu item from here.</p>
|
|
|
|
//var now = time.Now()
|
|
|
|
var client *misskey.Client
|
|
var endpoint = os.Getenv("MISSKEY_ENDPOINT")
|
|
var apiKey = os.Getenv("MISSKEY_API_TOKEN")
|
|
|
|
var (
|
|
misskeyJobQueueJobsCount = prometheus.NewGaugeVec(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_jobqueue_jobs",
|
|
Help: "misskey job queue jobs",
|
|
},
|
|
[]string{"type", "status"},
|
|
)
|
|
misskeyNotesCount = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_notes_count",
|
|
Help: "Notes Coount",
|
|
},
|
|
)
|
|
misskeyUsersCount = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_users_count",
|
|
Help: "Users Coount",
|
|
},
|
|
)
|
|
misskeyOriginalNotesCount = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_original_notes_count",
|
|
Help: "Original Notes Coount",
|
|
},
|
|
)
|
|
misskeyOriginalUsersCount = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_original_users_count",
|
|
Help: "Original Users Coount",
|
|
},
|
|
)
|
|
misskeyPingResponseTimeRaw = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_ping_response_time_raw",
|
|
Help: "Response Time for misskey Ping",
|
|
},
|
|
)
|
|
misskeyPingResponseTime = prometheus.NewHistogram(
|
|
prometheus.HistogramOpts{
|
|
Name: "misskey_ping_response_time",
|
|
Help: "Response Time for misskey Ping",
|
|
Buckets: prometheus.DefBuckets,
|
|
},
|
|
)
|
|
misskeyPingResponseCode = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_ping_response_code",
|
|
Help: "Response Code for misskey Ping",
|
|
},
|
|
)
|
|
misskeyGlobalTimelineResponseTime = prometheus.NewHistogram(
|
|
prometheus.HistogramOpts{
|
|
Name: "misskey_global_timeline_response_time",
|
|
Help: "Response Time for misskey Global Timeline",
|
|
})
|
|
misskeyLocalTimelineResponseTime = prometheus.NewHistogram(
|
|
prometheus.HistogramOpts{
|
|
Name: "misskey_local_timeline_response_time",
|
|
Help: "Response Time for misskey Local Timeline",
|
|
})
|
|
misskeyGlobalTimelineLastNotePublished = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_global_timeline_last_note_published",
|
|
Help: "Last Note Published on Global Timeline",
|
|
})
|
|
misskeyLocalTimelineLastNotePublished = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_local_timeline_last_note_published",
|
|
Help: "Last Note Published on Local Timeline",
|
|
})
|
|
misskeyGlobalTimelineResponseTimeRaw = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_global_timeline_response_time_raw",
|
|
Help: "Response Time for misskey Global Timeline",
|
|
})
|
|
misskeyLocalTimelineResponseTimeRaw = prometheus.NewGauge(
|
|
prometheus.GaugeOpts{
|
|
Name: "misskey_local_timeline_response_time_raw",
|
|
Help: "Response Time for misskey Local Timeline",
|
|
})
|
|
)
|
|
|
|
func main() {
|
|
options, err := misskey.NewClientWithOptions(
|
|
misskey.WithAPIToken(apiKey),
|
|
misskey.WithBaseURL("https", endpoint, ""),
|
|
misskey.WithLogLevel(logrus.DebugLevel),
|
|
)
|
|
client = options
|
|
if err != nil {
|
|
return
|
|
}
|
|
stats, err := client.Admin().Queue().Stats()
|
|
if err != nil {
|
|
return
|
|
}
|
|
fmt.Println(stats)
|
|
|
|
prometheus.MustRegister(misskeyJobQueueJobsCount)
|
|
prometheus.MustRegister(misskeyNotesCount)
|
|
prometheus.MustRegister(misskeyUsersCount)
|
|
prometheus.MustRegister(misskeyOriginalNotesCount)
|
|
prometheus.MustRegister(misskeyOriginalUsersCount)
|
|
prometheus.MustRegister(misskeyPingResponseTime)
|
|
prometheus.MustRegister(misskeyPingResponseTimeRaw)
|
|
prometheus.MustRegister(misskeyPingResponseCode)
|
|
prometheus.MustRegister(misskeyGlobalTimelineResponseTime)
|
|
prometheus.MustRegister(misskeyLocalTimelineResponseTime)
|
|
prometheus.MustRegister(misskeyGlobalTimelineLastNotePublished)
|
|
prometheus.MustRegister(misskeyLocalTimelineLastNotePublished)
|
|
prometheus.MustRegister(misskeyGlobalTimelineResponseTimeRaw)
|
|
prometheus.MustRegister(misskeyLocalTimelineResponseTimeRaw)
|
|
|
|
handler := promhttp.Handler()
|
|
|
|
server := http.Server{
|
|
Addr: ":8080",
|
|
Handler: handler,
|
|
}
|
|
|
|
go func() {
|
|
go collectJobqueue()
|
|
go collectPing()
|
|
go collectStats()
|
|
go collectTimeline()
|
|
}()
|
|
|
|
logrus.Error(server.ListenAndServe())
|
|
|
|
}
|