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

To run your code, right-click the code and select Run.

Alternatively, click // the icon in the gutter and select the Run menu item from here.

//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()) }