diff --git a/collector.go b/collector.go index c819980..4ecb3e1 100644 --- a/collector.go +++ b/collector.go @@ -45,6 +45,35 @@ func collectJobqueue() { } } +func collectDelayed() { + collectDelayedInternal() + for { + time.Sleep(5 * time.Minute) + collectDelayedInternal() + } +} + +func collectDelayedInternal() { + delayed, err := client.Admin().Queue().InboxDelayed() + if err != nil { + logrus.WithField("type", "delayed").Warning(err) + } else { + for i := range delayed { + m := delayed[i] + misskeyJobQueueDelayed.WithLabelValues("inbox", m.Host).Set(float64(m.Count)) + } + } + deliverDelayed, err := client.Admin().Queue().DeliverDelayed() + if err != nil { + logrus.WithField("type", "delayed").Warning(err) + return + } + for i := range deliverDelayed { + m := deliverDelayed[i] + misskeyJobQueueDelayed.WithLabelValues("deliver", m.Host).Set(float64(m.Count)) + } +} + func collectPing() { for { time.Sleep(5 * time.Second) diff --git a/main.go b/main.go index b20a644..219ab4f 100644 --- a/main.go +++ b/main.go @@ -29,6 +29,12 @@ var ( }, []string{"type", "status"}, ) + misskeyJobQueueDelayed = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: "misskey_jobqueue_delayed", + Help: "Delayed Job", + }, + []string{"type", "host"}) misskeyNotesCount = prometheus.NewGauge( prometheus.GaugeOpts{ Name: "misskey_notes_count", @@ -186,6 +192,7 @@ func main() { fmt.Println(stats) prometheus.MustRegister(misskeyJobQueueJobsCount) + prometheus.MustRegister(misskeyJobQueueDelayed) prometheus.MustRegister(misskeyNotesCount) prometheus.MustRegister(misskeyUsersCount) prometheus.MustRegister(misskeyOriginalNotesCount) @@ -219,6 +226,7 @@ func main() { go func() { go collectJobqueue() + go collectDelayed() go collectPing() go collectStats() go collectTimeline()