Compare commits
13 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
79255b1fa9 | |
|
|
79a0844d7a | |
|
|
38867f0c67 | |
|
|
8054429f40 | |
|
|
b94aa5e9aa | |
|
|
78009e495d | |
|
|
9049c07f3a | |
|
|
6bb1d7cd0e | |
|
|
2fe3084d80 | |
|
|
f34672c826 | |
|
|
0bc7588984 | |
|
|
390880343b | |
|
|
31b7d2bfa1 |
|
|
@ -4,6 +4,8 @@ on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- 'master'
|
- 'master'
|
||||||
|
tags:
|
||||||
|
- "**"
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
docker:
|
docker:
|
||||||
|
|
@ -30,6 +32,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
images: git.usbharu.dev/usbharu/misskey-exporter
|
images: git.usbharu.dev/usbharu/misskey-exporter
|
||||||
tags: |
|
tags: |
|
||||||
|
type=semver,pattern=v{{version}}
|
||||||
type=raw,value=latest
|
type=raw,value=latest
|
||||||
type=sha,prefix=,suffix=,format=short
|
type=sha,prefix=,suffix=,format=short
|
||||||
- name: build
|
- name: build
|
||||||
|
|
|
||||||
82
collector.go
82
collector.go
|
|
@ -6,7 +6,7 @@ import (
|
||||||
"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"
|
"io"
|
||||||
"net/http"
|
"math"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -45,35 +45,86 @@ 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() {
|
func collectPing() {
|
||||||
for {
|
for {
|
||||||
time.Sleep(5 * time.Second)
|
time.Sleep(5 * time.Second)
|
||||||
var buf = bytes.NewBuffer([]byte(`{}`))
|
var buf = bytes.NewBuffer([]byte(`{}`))
|
||||||
start := time.Now()
|
start := time.Now()
|
||||||
resp, err := http.Post("https://"+endpoint+"/api/ping", "application/json", buf)
|
resp, err := httpClient.Post(protocol+"://"+endpoint+"/api/ping", "application/json", buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "ping").Warning(err)
|
logrus.WithField("type", "ping").Warning(err)
|
||||||
|
misskeyPingResponseCode.Set(math.NaN())
|
||||||
|
misskeyApiResponseTime.WithLabelValues("ping", "").Observe(math.NaN())
|
||||||
|
misskeyApiResponseTimeRaw.WithLabelValues("ping", "").Set(math.NaN())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
err = resp.Body.Close()
|
err = resp.Body.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "ping").Warning(err)
|
logrus.WithField("type", "ping").Warning(err)
|
||||||
|
misskeyPingResponseCode.Set(math.NaN())
|
||||||
|
misskeyApiResponseTime.WithLabelValues("ping", "").Observe(math.NaN())
|
||||||
|
misskeyApiResponseTimeRaw.WithLabelValues("ping", "").Set(math.NaN())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
misskeyPingResponseCode.Set(float64(resp.StatusCode))
|
misskeyPingResponseCode.Set(float64(resp.StatusCode))
|
||||||
t := float64(time.Since(start).Milliseconds()) / 1000
|
t := float64(time.Since(start).Milliseconds()) / 1000
|
||||||
misskeyPingResponseTime.Observe(t)
|
|
||||||
misskeyPingResponseTimeRaw.Set(t)
|
|
||||||
misskeyApiResponseTime.WithLabelValues("ping", "").Observe(t)
|
misskeyApiResponseTime.WithLabelValues("ping", "").Observe(t)
|
||||||
misskeyApiResponseTimeRaw.WithLabelValues("ping", "").Set(t)
|
misskeyApiResponseTimeRaw.WithLabelValues("ping", "").Set(t)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func collectMeta() {
|
||||||
|
for {
|
||||||
|
time.Sleep(1 * time.Minute)
|
||||||
|
meta, err := client.Meta().InstanceMeta(true)
|
||||||
|
if err != nil {
|
||||||
|
logrus.WithField("type", "meta").Warning(err)
|
||||||
|
misskeyMeta.WithLabelValues("UNKNOWN").Set(math.NaN())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
misskeyMeta.WithLabelValues(*meta.Version).Set(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func collectStats() {
|
func collectStats() {
|
||||||
for {
|
for {
|
||||||
time.Sleep(30 * time.Second)
|
time.Sleep(30 * time.Second)
|
||||||
stats, err := client.Meta().Stats()
|
stats, err := client.Meta().Stats()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
logrus.WithField("type", "stats").Warning(err)
|
||||||
|
misskeyNotesCount.Set(math.NaN())
|
||||||
|
misskeyUsersCount.Set(math.NaN())
|
||||||
|
misskeyOriginalNotesCount.Set(math.NaN())
|
||||||
|
misskeyOriginalUsersCount.Set(math.NaN())
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
misskeyNotesCount.Set(float64(stats.NotesCount))
|
misskeyNotesCount.Set(float64(stats.NotesCount))
|
||||||
|
|
@ -90,7 +141,7 @@ type OnlineUsers struct {
|
||||||
func collectOnlineUsers() {
|
func collectOnlineUsers() {
|
||||||
for {
|
for {
|
||||||
time.Sleep(1 * time.Minute)
|
time.Sleep(1 * time.Minute)
|
||||||
response, err := http.Get("https://" + endpoint + "/api/get-online-users-count")
|
response, err := httpClient.Get(protocol + "://" + endpoint + "/api/get-online-users-count")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "online-users").Warning(err)
|
logrus.WithField("type", "online-users").Warning(err)
|
||||||
continue
|
continue
|
||||||
|
|
@ -111,6 +162,7 @@ func collectOnlineUsers() {
|
||||||
err = json.Unmarshal(all, &onlineUsers)
|
err = json.Unmarshal(all, &onlineUsers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "online-users").Warning(err)
|
logrus.WithField("type", "online-users").Warning(err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
misskeyOnlineUsers.Set(float64(onlineUsers.Count))
|
misskeyOnlineUsers.Set(float64(onlineUsers.Count))
|
||||||
}
|
}
|
||||||
|
|
@ -124,11 +176,12 @@ func collectTimeline() {
|
||||||
global, err := client.Notes().Timeline().Global(timeline.GlobalRequest{Limit: 10})
|
global, err := client.Notes().Timeline().Global(timeline.GlobalRequest{Limit: 10})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "timeline").Warning(err)
|
logrus.WithField("type", "timeline").Warning(err)
|
||||||
|
misskeyApiResponseTime.WithLabelValues("timeline", "global").Observe(math.NaN())
|
||||||
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "global").Set(math.NaN())
|
||||||
|
misskeyGlobalTimelineLastNotePublished.Set(math.NaN())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t := float64(time.Since(start).Milliseconds()) / 1000
|
t := float64(time.Since(start).Milliseconds()) / 1000
|
||||||
misskeyGlobalTimelineResponseTime.Observe(t)
|
|
||||||
misskeyGlobalTimelineResponseTimeRaw.Set(t)
|
|
||||||
misskeyApiResponseTime.WithLabelValues("timeline", "global").Observe(t)
|
misskeyApiResponseTime.WithLabelValues("timeline", "global").Observe(t)
|
||||||
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "global").Set(t)
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "global").Set(t)
|
||||||
if len(global) != 0 {
|
if len(global) != 0 {
|
||||||
|
|
@ -140,11 +193,12 @@ func collectTimeline() {
|
||||||
global, err := client.Notes().Timeline().Local(timeline.LocalRequest{Limit: 10})
|
global, err := client.Notes().Timeline().Local(timeline.LocalRequest{Limit: 10})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "timeline").Warning(err)
|
logrus.WithField("type", "timeline").Warning(err)
|
||||||
|
misskeyApiResponseTime.WithLabelValues("timeline", "local").Observe(math.NaN())
|
||||||
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "local").Set(math.NaN())
|
||||||
|
misskeyLocalTimelineLastNotePublished.Set(math.NaN())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t := float64(time.Since(start).Milliseconds()) / 1000
|
t := float64(time.Since(start).Milliseconds()) / 1000
|
||||||
misskeyLocalTimelineResponseTime.Observe(t)
|
|
||||||
misskeyLocalTimelineResponseTimeRaw.Set(t)
|
|
||||||
misskeyApiResponseTime.WithLabelValues("timeline", "local").Observe(t)
|
misskeyApiResponseTime.WithLabelValues("timeline", "local").Observe(t)
|
||||||
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "local").Set(t)
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "local").Set(t)
|
||||||
if len(global) != 0 {
|
if len(global) != 0 {
|
||||||
|
|
@ -156,11 +210,12 @@ func collectTimeline() {
|
||||||
global, err := client.Notes().Timeline().Get(timeline.GetRequest{Limit: 10})
|
global, err := client.Notes().Timeline().Get(timeline.GetRequest{Limit: 10})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "timeline").Warning(err)
|
logrus.WithField("type", "timeline").Warning(err)
|
||||||
|
misskeyApiResponseTime.WithLabelValues("timeline", "home").Observe(math.NaN())
|
||||||
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "home").Set(math.NaN())
|
||||||
|
misskeyHomeTimelineLastNotePublished.Set(math.NaN())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t := float64(time.Since(start).Milliseconds()) / 1000
|
t := float64(time.Since(start).Milliseconds()) / 1000
|
||||||
misskeyHomeTimelineResponseTime.Observe(t)
|
|
||||||
misskeyHomeTimelineResponseTimeRaw.Set(t)
|
|
||||||
misskeyApiResponseTime.WithLabelValues("timeline", "home").Observe(t)
|
misskeyApiResponseTime.WithLabelValues("timeline", "home").Observe(t)
|
||||||
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "home").Set(t)
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "home").Set(t)
|
||||||
if len(global) != 0 {
|
if len(global) != 0 {
|
||||||
|
|
@ -172,11 +227,12 @@ func collectTimeline() {
|
||||||
global, err := client.Notes().Timeline().Hybrid(timeline.HybridRequest{Limit: 10})
|
global, err := client.Notes().Timeline().Hybrid(timeline.HybridRequest{Limit: 10})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithField("type", "timeline").Warning(err)
|
logrus.WithField("type", "timeline").Warning(err)
|
||||||
|
misskeyApiResponseTime.WithLabelValues("timeline", "social").Observe(math.NaN())
|
||||||
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "social").Set(math.NaN())
|
||||||
|
misskeySocialTimelineLastNotePublished.Set(math.NaN())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
t := float64(time.Since(start).Milliseconds()) / 1000
|
t := float64(time.Since(start).Milliseconds()) / 1000
|
||||||
misskeySocialTimelineResponseTime.Observe(t)
|
|
||||||
misskeySocialTimelineResponseTimeRaw.Set(t)
|
|
||||||
misskeyApiResponseTime.WithLabelValues("timeline", "social").Observe(t)
|
misskeyApiResponseTime.WithLabelValues("timeline", "social").Observe(t)
|
||||||
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "social").Set(t)
|
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "social").Set(t)
|
||||||
if len(global) != 0 {
|
if len(global) != 0 {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
450
dashboards.json
450
dashboards.json
|
|
@ -23,7 +23,6 @@
|
||||||
"panels": [
|
"panels": [
|
||||||
{
|
{
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "prometheus",
|
|
||||||
"uid": "cej25be7w5af4e"
|
"uid": "cej25be7w5af4e"
|
||||||
},
|
},
|
||||||
"fieldConfig": {
|
"fieldConfig": {
|
||||||
|
|
@ -31,36 +30,23 @@
|
||||||
"color": {
|
"color": {
|
||||||
"mode": "thresholds"
|
"mode": "thresholds"
|
||||||
},
|
},
|
||||||
"fieldMinMax": false,
|
"custom": {
|
||||||
"mappings": [
|
"align": "auto",
|
||||||
{
|
"cellOptions": {
|
||||||
"options": {
|
"type": "auto"
|
||||||
"0": {
|
|
||||||
"index": 1,
|
|
||||||
"text": "DOWN"
|
|
||||||
},
|
},
|
||||||
"1": {
|
"inspect": false
|
||||||
"index": 0,
|
|
||||||
"text": "UP"
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"type": "value"
|
"mappings": [],
|
||||||
}
|
|
||||||
],
|
|
||||||
"noValue": "UNKNOWN",
|
|
||||||
"thresholds": {
|
"thresholds": {
|
||||||
"mode": "absolute",
|
"mode": "absolute",
|
||||||
"steps": [
|
"steps": [
|
||||||
{
|
{
|
||||||
"color": "red"
|
"color": "green"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"color": "red",
|
"color": "red",
|
||||||
"value": 0
|
"value": 80
|
||||||
},
|
|
||||||
{
|
|
||||||
"color": "green",
|
|
||||||
"value": 1
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -68,140 +54,60 @@
|
||||||
"overrides": []
|
"overrides": []
|
||||||
},
|
},
|
||||||
"gridPos": {
|
"gridPos": {
|
||||||
"h": 6,
|
"h": 3,
|
||||||
"w": 3,
|
"w": 6,
|
||||||
"x": 0,
|
"x": 0,
|
||||||
"y": 0
|
"y": 0
|
||||||
},
|
},
|
||||||
"id": 1,
|
"id": 12,
|
||||||
"options": {
|
"options": {
|
||||||
"colorMode": "value",
|
"cellHeight": "sm",
|
||||||
"graphMode": "area",
|
"footer": {
|
||||||
"justifyMode": "auto",
|
"countRows": false,
|
||||||
"orientation": "auto",
|
|
||||||
"percentChangeColorMode": "standard",
|
|
||||||
"reduceOptions": {
|
|
||||||
"calcs": [
|
|
||||||
"last"
|
|
||||||
],
|
|
||||||
"fields": "",
|
"fields": "",
|
||||||
"values": false
|
"reducer": [
|
||||||
|
"sum"
|
||||||
|
],
|
||||||
|
"show": false
|
||||||
},
|
},
|
||||||
"showPercentChange": false,
|
"showHeader": false
|
||||||
"textMode": "auto",
|
|
||||||
"wideLayout": true
|
|
||||||
},
|
},
|
||||||
"pluginVersion": "11.6.0",
|
"pluginVersion": "11.6.0",
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"datasource": {
|
|
||||||
"type": "prometheus",
|
|
||||||
"uid": "cej25be7w5af4e"
|
|
||||||
},
|
|
||||||
"disableTextWrap": false,
|
"disableTextWrap": false,
|
||||||
"editorMode": "builder",
|
"editorMode": "builder",
|
||||||
"expr": "misskey_health",
|
"exemplar": false,
|
||||||
|
"expr": "misskey_meta{instance=\"$instance\", job=\"$job\"}",
|
||||||
|
"format": "table",
|
||||||
"fullMetaSearch": false,
|
"fullMetaSearch": false,
|
||||||
"includeNullMetadata": true,
|
"includeNullMetadata": true,
|
||||||
|
"instant": true,
|
||||||
"legendFormat": "__auto",
|
"legendFormat": "__auto",
|
||||||
"range": true,
|
"range": false,
|
||||||
"refId": "A",
|
"refId": "A",
|
||||||
"useBackend": false
|
"useBackend": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"title": "Health",
|
"title": "Misskey Version",
|
||||||
"type": "stat"
|
"transformations": [
|
||||||
},
|
|
||||||
{
|
|
||||||
"datasource": {
|
|
||||||
"type": "prometheus",
|
|
||||||
"uid": "cej25be7w5af4e"
|
|
||||||
},
|
|
||||||
"fieldConfig": {
|
|
||||||
"defaults": {
|
|
||||||
"color": {
|
|
||||||
"mode": "thresholds"
|
|
||||||
},
|
|
||||||
"fieldMinMax": false,
|
|
||||||
"mappings": [
|
|
||||||
{
|
{
|
||||||
|
"id": "organize",
|
||||||
"options": {
|
"options": {
|
||||||
"0": {
|
"excludeByName": {
|
||||||
"index": 1,
|
"Time": true,
|
||||||
"text": "DOWN"
|
"Value": true,
|
||||||
|
"__name__": true,
|
||||||
|
"instance": true,
|
||||||
|
"job": true
|
||||||
},
|
},
|
||||||
"1": {
|
"includeByName": {},
|
||||||
"index": 0,
|
"indexByName": {},
|
||||||
"text": "UP"
|
"renameByName": {}
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"type": "value"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"noValue": "UNKNOWN",
|
"type": "table"
|
||||||
"thresholds": {
|
|
||||||
"mode": "absolute",
|
|
||||||
"steps": [
|
|
||||||
{
|
|
||||||
"color": "red"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"color": "red",
|
|
||||||
"value": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"color": "green",
|
|
||||||
"value": 1
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"overrides": []
|
|
||||||
},
|
|
||||||
"gridPos": {
|
|
||||||
"h": 6,
|
|
||||||
"w": 3,
|
|
||||||
"x": 3,
|
|
||||||
"y": 0
|
|
||||||
},
|
|
||||||
"id": 7,
|
|
||||||
"options": {
|
|
||||||
"colorMode": "value",
|
|
||||||
"graphMode": "area",
|
|
||||||
"justifyMode": "auto",
|
|
||||||
"orientation": "auto",
|
|
||||||
"percentChangeColorMode": "standard",
|
|
||||||
"reduceOptions": {
|
|
||||||
"calcs": [
|
|
||||||
"last"
|
|
||||||
],
|
|
||||||
"fields": "",
|
|
||||||
"values": false
|
|
||||||
},
|
|
||||||
"showPercentChange": false,
|
|
||||||
"textMode": "value",
|
|
||||||
"wideLayout": true
|
|
||||||
},
|
|
||||||
"pluginVersion": "11.6.0",
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"datasource": {
|
|
||||||
"type": "prometheus",
|
|
||||||
"uid": "cej25be7w5af4e"
|
|
||||||
},
|
|
||||||
"disableTextWrap": false,
|
|
||||||
"editorMode": "builder",
|
|
||||||
"expr": "up",
|
|
||||||
"fullMetaSearch": false,
|
|
||||||
"includeNullMetadata": true,
|
|
||||||
"legendFormat": "__auto",
|
|
||||||
"range": true,
|
|
||||||
"refId": "A",
|
|
||||||
"useBackend": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"title": "Exporter Health",
|
|
||||||
"type": "stat"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"datasource": {
|
"datasource": {
|
||||||
|
|
@ -261,14 +167,18 @@
|
||||||
"pluginVersion": "11.6.0",
|
"pluginVersion": "11.6.0",
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
|
"disableTextWrap": false,
|
||||||
"editorMode": "code",
|
"editorMode": "code",
|
||||||
"exemplar": false,
|
"exemplar": false,
|
||||||
"expr": "100 * (sum_over_time(misskey_health[30d]) / count_over_time(misskey_health[30d]))",
|
"expr": "100 * (sum_over_time(misskey_health{instance=\"$instance\", job=\"$job\"}[30d]) / count_over_time(misskey_health{instance=\"$instance\", job=\"$job\"}[30d]))",
|
||||||
"format": "time_series",
|
"format": "time_series",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
"instant": false,
|
"instant": false,
|
||||||
"legendFormat": "__auto",
|
"legendFormat": "__auto",
|
||||||
"range": true,
|
"range": true,
|
||||||
"refId": "A"
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"title": "Availability(30d)",
|
"title": "Availability(30d)",
|
||||||
|
|
@ -311,7 +221,7 @@
|
||||||
"percentChangeColorMode": "standard",
|
"percentChangeColorMode": "standard",
|
||||||
"reduceOptions": {
|
"reduceOptions": {
|
||||||
"calcs": [
|
"calcs": [
|
||||||
"lastNotNull"
|
"last"
|
||||||
],
|
],
|
||||||
"fields": "",
|
"fields": "",
|
||||||
"values": false
|
"values": false
|
||||||
|
|
@ -384,26 +294,34 @@
|
||||||
"pluginVersion": "11.6.0",
|
"pluginVersion": "11.6.0",
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
|
"disableTextWrap": false,
|
||||||
"editorMode": "builder",
|
"editorMode": "builder",
|
||||||
"expr": "misskey_notes_count",
|
"expr": "misskey_notes_count{instance=\"$instance\", job=\"$job\"}",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
"instant": false,
|
"instant": false,
|
||||||
"legendFormat": "All",
|
"legendFormat": "All",
|
||||||
"range": true,
|
"range": true,
|
||||||
"refId": "A"
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "prometheus",
|
"type": "prometheus",
|
||||||
"uid": "cej25be7w5af4e"
|
"uid": "cej25be7w5af4e"
|
||||||
},
|
},
|
||||||
|
"disableTextWrap": false,
|
||||||
"editorMode": "builder",
|
"editorMode": "builder",
|
||||||
"exemplar": false,
|
"exemplar": false,
|
||||||
"expr": "misskey_original_notes_count",
|
"expr": "misskey_original_notes_count{instance=\"$instance\", job=\"$job\"}",
|
||||||
|
"fullMetaSearch": false,
|
||||||
"hide": false,
|
"hide": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
"instant": false,
|
"instant": false,
|
||||||
"legendFormat": "Local",
|
"legendFormat": "Local",
|
||||||
"range": true,
|
"range": true,
|
||||||
"refId": "B"
|
"refId": "B",
|
||||||
|
"useBackend": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"title": "Note Count",
|
"title": "Note Count",
|
||||||
|
|
@ -459,29 +377,219 @@
|
||||||
"pluginVersion": "11.6.0",
|
"pluginVersion": "11.6.0",
|
||||||
"targets": [
|
"targets": [
|
||||||
{
|
{
|
||||||
"editorMode": "code",
|
"disableTextWrap": false,
|
||||||
"expr": "misskey_users_count",
|
"editorMode": "builder",
|
||||||
|
"expr": "misskey_users_count{instance=\"$instance\", job=\"$job\"}",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
"legendFormat": "All",
|
"legendFormat": "All",
|
||||||
"range": true,
|
"range": true,
|
||||||
"refId": "A"
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "prometheus",
|
"type": "prometheus",
|
||||||
"uid": "cej25be7w5af4e"
|
"uid": "cej25be7w5af4e"
|
||||||
},
|
},
|
||||||
"editorMode": "code",
|
"disableTextWrap": false,
|
||||||
"expr": "misskey_original_users_count",
|
"editorMode": "builder",
|
||||||
|
"expr": "misskey_original_users_count{instance=\"$instance\", job=\"$job\"}",
|
||||||
|
"fullMetaSearch": false,
|
||||||
"hide": false,
|
"hide": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
"instant": false,
|
"instant": false,
|
||||||
"legendFormat": "Local",
|
"legendFormat": "Local",
|
||||||
"range": true,
|
"range": true,
|
||||||
"refId": "B"
|
"refId": "B",
|
||||||
|
"useBackend": false
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"title": "User Count",
|
"title": "User Count",
|
||||||
"type": "stat"
|
"type": "stat"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "thresholds"
|
||||||
|
},
|
||||||
|
"fieldMinMax": false,
|
||||||
|
"mappings": [
|
||||||
|
{
|
||||||
|
"options": {
|
||||||
|
"0": {
|
||||||
|
"index": 1,
|
||||||
|
"text": "DOWN"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"index": 0,
|
||||||
|
"text": "UP"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "value"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"noValue": "UNKNOWN",
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "red"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 3,
|
||||||
|
"w": 3,
|
||||||
|
"x": 0,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
"id": 1,
|
||||||
|
"options": {
|
||||||
|
"colorMode": "value",
|
||||||
|
"graphMode": "area",
|
||||||
|
"justifyMode": "auto",
|
||||||
|
"orientation": "auto",
|
||||||
|
"percentChangeColorMode": "standard",
|
||||||
|
"reduceOptions": {
|
||||||
|
"calcs": [
|
||||||
|
"last"
|
||||||
|
],
|
||||||
|
"fields": "",
|
||||||
|
"values": false
|
||||||
|
},
|
||||||
|
"showPercentChange": false,
|
||||||
|
"textMode": "auto",
|
||||||
|
"wideLayout": true
|
||||||
|
},
|
||||||
|
"pluginVersion": "11.6.0",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"disableTextWrap": false,
|
||||||
|
"editorMode": "builder",
|
||||||
|
"expr": "misskey_health{instance=\"$instance\", job=\"$job\"}",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
|
"legendFormat": "__auto",
|
||||||
|
"range": true,
|
||||||
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Health",
|
||||||
|
"type": "stat"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "thresholds"
|
||||||
|
},
|
||||||
|
"fieldMinMax": false,
|
||||||
|
"mappings": [
|
||||||
|
{
|
||||||
|
"options": {
|
||||||
|
"0": {
|
||||||
|
"index": 1,
|
||||||
|
"text": "DOWN"
|
||||||
|
},
|
||||||
|
"1": {
|
||||||
|
"index": 0,
|
||||||
|
"text": "UP"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"type": "value"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"noValue": "UNKNOWN",
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "red"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "green",
|
||||||
|
"value": 1
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 3,
|
||||||
|
"w": 3,
|
||||||
|
"x": 3,
|
||||||
|
"y": 3
|
||||||
|
},
|
||||||
|
"id": 7,
|
||||||
|
"options": {
|
||||||
|
"colorMode": "value",
|
||||||
|
"graphMode": "area",
|
||||||
|
"justifyMode": "auto",
|
||||||
|
"orientation": "auto",
|
||||||
|
"percentChangeColorMode": "standard",
|
||||||
|
"reduceOptions": {
|
||||||
|
"calcs": [
|
||||||
|
"last"
|
||||||
|
],
|
||||||
|
"fields": "",
|
||||||
|
"values": false
|
||||||
|
},
|
||||||
|
"showPercentChange": false,
|
||||||
|
"textMode": "value",
|
||||||
|
"wideLayout": true
|
||||||
|
},
|
||||||
|
"pluginVersion": "11.6.0",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"disableTextWrap": false,
|
||||||
|
"editorMode": "builder",
|
||||||
|
"expr": "up{instance=\"$instance\", job=\"$job\"}",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
|
"legendFormat": "__auto",
|
||||||
|
"range": true,
|
||||||
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Exporter Health",
|
||||||
|
"type": "stat"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"datasource": {
|
"datasource": {
|
||||||
"type": "prometheus",
|
"type": "prometheus",
|
||||||
|
|
@ -711,7 +819,7 @@
|
||||||
},
|
},
|
||||||
"disableTextWrap": false,
|
"disableTextWrap": false,
|
||||||
"editorMode": "builder",
|
"editorMode": "builder",
|
||||||
"expr": "misskey_api_response_time_raw",
|
"expr": "misskey_api_response_time_raw{instance=\"$instance\", job=\"$job\"}",
|
||||||
"fullMetaSearch": false,
|
"fullMetaSearch": false,
|
||||||
"hide": false,
|
"hide": false,
|
||||||
"includeNullMetadata": false,
|
"includeNullMetadata": false,
|
||||||
|
|
@ -780,7 +888,7 @@
|
||||||
{
|
{
|
||||||
"disableTextWrap": false,
|
"disableTextWrap": false,
|
||||||
"editorMode": "builder",
|
"editorMode": "builder",
|
||||||
"expr": "sum by(status) (misskey_jobqueue_jobs{type=\"deliver\"})",
|
"expr": "sum by(status) (misskey_jobqueue_jobs{type=\"deliver\", instance=\"$instance\", job=\"$job\"})",
|
||||||
"fullMetaSearch": false,
|
"fullMetaSearch": false,
|
||||||
"includeNullMetadata": true,
|
"includeNullMetadata": true,
|
||||||
"legendFormat": "{{type}} {{status}}",
|
"legendFormat": "{{type}} {{status}}",
|
||||||
|
|
@ -847,7 +955,7 @@
|
||||||
{
|
{
|
||||||
"disableTextWrap": false,
|
"disableTextWrap": false,
|
||||||
"editorMode": "builder",
|
"editorMode": "builder",
|
||||||
"expr": "sum by(status) (misskey_jobqueue_jobs{type=\"inbox\"})",
|
"expr": "sum by(status) (misskey_jobqueue_jobs{type=\"inbox\", instance=\"$instance\", job=\"$job\"})",
|
||||||
"fullMetaSearch": false,
|
"fullMetaSearch": false,
|
||||||
"includeNullMetadata": true,
|
"includeNullMetadata": true,
|
||||||
"legendFormat": "{{type}} {{status}}",
|
"legendFormat": "{{type}} {{status}}",
|
||||||
|
|
@ -934,9 +1042,7 @@
|
||||||
],
|
],
|
||||||
"displayMode": "table",
|
"displayMode": "table",
|
||||||
"placement": "right",
|
"placement": "right",
|
||||||
"showLegend": true,
|
"showLegend": true
|
||||||
"sortBy": "Max",
|
|
||||||
"sortDesc": true
|
|
||||||
},
|
},
|
||||||
"tooltip": {
|
"tooltip": {
|
||||||
"hideZeros": false,
|
"hideZeros": false,
|
||||||
|
|
@ -949,7 +1055,7 @@
|
||||||
{
|
{
|
||||||
"disableTextWrap": false,
|
"disableTextWrap": false,
|
||||||
"editorMode": "builder",
|
"editorMode": "builder",
|
||||||
"expr": "misskey_jobqueue_jobs",
|
"expr": "misskey_jobqueue_jobs{instance=\"$instance\", job=\"$job\"}",
|
||||||
"fullMetaSearch": false,
|
"fullMetaSearch": false,
|
||||||
"includeNullMetadata": true,
|
"includeNullMetadata": true,
|
||||||
"interval": "1",
|
"interval": "1",
|
||||||
|
|
@ -964,19 +1070,53 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"preload": false,
|
"preload": false,
|
||||||
"refresh": "auto",
|
|
||||||
"schemaVersion": 41,
|
"schemaVersion": 41,
|
||||||
"tags": [],
|
"tags": [],
|
||||||
"templating": {
|
"templating": {
|
||||||
"list": []
|
"list": [
|
||||||
|
{
|
||||||
|
"current": {
|
||||||
|
"text": "misskey-exporter:8080",
|
||||||
|
"value": "misskey-exporter:8080"
|
||||||
|
},
|
||||||
|
"definition": "label_values(instance)",
|
||||||
|
"name": "instance",
|
||||||
|
"options": [],
|
||||||
|
"query": {
|
||||||
|
"qryType": 1,
|
||||||
|
"query": "label_values(instance)",
|
||||||
|
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||||
|
},
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"type": "query"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"current": {
|
||||||
|
"text": "process_exporter",
|
||||||
|
"value": "process_exporter"
|
||||||
|
},
|
||||||
|
"definition": "label_values(job)",
|
||||||
|
"name": "job",
|
||||||
|
"options": [],
|
||||||
|
"query": {
|
||||||
|
"qryType": 1,
|
||||||
|
"query": "label_values(job)",
|
||||||
|
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||||
|
},
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"type": "query"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"time": {
|
"time": {
|
||||||
"from": "now-15m",
|
"from": "now-3h",
|
||||||
"to": "now"
|
"to": "now"
|
||||||
},
|
},
|
||||||
"timepicker": {},
|
"timepicker": {},
|
||||||
"timezone": "browser",
|
"timezone": "browser",
|
||||||
"title": "New dashboard",
|
"title": "New dashboard",
|
||||||
"uid": "eej5avfu4yyo0f",
|
"uid": "eej5avfu4yyo0f",
|
||||||
"version": 25
|
"version": 26
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,424 @@
|
||||||
|
{
|
||||||
|
"annotations": {
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"builtIn": 1,
|
||||||
|
"datasource": {
|
||||||
|
"type": "grafana",
|
||||||
|
"uid": "-- Grafana --"
|
||||||
|
},
|
||||||
|
"enable": true,
|
||||||
|
"hide": true,
|
||||||
|
"iconColor": "rgba(0, 211, 255, 1)",
|
||||||
|
"name": "Annotations & Alerts",
|
||||||
|
"type": "dashboard"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"editable": true,
|
||||||
|
"fiscalYearStartMonth": 0,
|
||||||
|
"graphTooltip": 0,
|
||||||
|
"id": 2,
|
||||||
|
"links": [],
|
||||||
|
"panels": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "thresholds"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"align": "auto",
|
||||||
|
"cellOptions": {
|
||||||
|
"type": "auto"
|
||||||
|
},
|
||||||
|
"inspect": false
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 12,
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": 1,
|
||||||
|
"options": {
|
||||||
|
"cellHeight": "sm",
|
||||||
|
"footer": {
|
||||||
|
"countRows": false,
|
||||||
|
"fields": "",
|
||||||
|
"reducer": [
|
||||||
|
"sum"
|
||||||
|
],
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
"showHeader": true,
|
||||||
|
"sortBy": [
|
||||||
|
{
|
||||||
|
"desc": true,
|
||||||
|
"displayName": "Delayed"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pluginVersion": "11.6.0",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"disableTextWrap": false,
|
||||||
|
"editorMode": "builder",
|
||||||
|
"exemplar": false,
|
||||||
|
"expr": "misskey_jobqueue_delayed{instance=\"$instance\", job=\"$job\", type=\"inbox\"}",
|
||||||
|
"format": "table",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
|
"instant": true,
|
||||||
|
"legendFormat": "__auto",
|
||||||
|
"range": false,
|
||||||
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Inbox Delayed",
|
||||||
|
"transformations": [
|
||||||
|
{
|
||||||
|
"id": "organize",
|
||||||
|
"options": {
|
||||||
|
"excludeByName": {
|
||||||
|
"Time": true,
|
||||||
|
"__name__": true,
|
||||||
|
"instance": true,
|
||||||
|
"job": true,
|
||||||
|
"type": true
|
||||||
|
},
|
||||||
|
"includeByName": {},
|
||||||
|
"indexByName": {},
|
||||||
|
"renameByName": {
|
||||||
|
"Value": "Delayed"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "thresholds"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"align": "auto",
|
||||||
|
"cellOptions": {
|
||||||
|
"type": "auto"
|
||||||
|
},
|
||||||
|
"inspect": false
|
||||||
|
},
|
||||||
|
"mappings": [],
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 8,
|
||||||
|
"w": 12,
|
||||||
|
"x": 12,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"id": 2,
|
||||||
|
"options": {
|
||||||
|
"cellHeight": "sm",
|
||||||
|
"footer": {
|
||||||
|
"countRows": false,
|
||||||
|
"fields": "",
|
||||||
|
"reducer": [
|
||||||
|
"sum"
|
||||||
|
],
|
||||||
|
"show": false
|
||||||
|
},
|
||||||
|
"showHeader": true,
|
||||||
|
"sortBy": [
|
||||||
|
{
|
||||||
|
"desc": true,
|
||||||
|
"displayName": "Delayed"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"pluginVersion": "11.6.0",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"disableTextWrap": false,
|
||||||
|
"editorMode": "builder",
|
||||||
|
"exemplar": false,
|
||||||
|
"expr": "misskey_jobqueue_delayed{instance=\"$instance\", job=\"$job\", type=\"deliver\"}",
|
||||||
|
"format": "table",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
|
"instant": true,
|
||||||
|
"legendFormat": "__auto",
|
||||||
|
"range": false,
|
||||||
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Deliver Delayed",
|
||||||
|
"transformations": [
|
||||||
|
{
|
||||||
|
"id": "organize",
|
||||||
|
"options": {
|
||||||
|
"excludeByName": {
|
||||||
|
"Time": true,
|
||||||
|
"__name__": true,
|
||||||
|
"instance": true,
|
||||||
|
"job": true,
|
||||||
|
"type": true
|
||||||
|
},
|
||||||
|
"includeByName": {},
|
||||||
|
"indexByName": {},
|
||||||
|
"renameByName": {
|
||||||
|
"Value": "Delayed"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "table"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"fieldConfig": {
|
||||||
|
"defaults": {
|
||||||
|
"color": {
|
||||||
|
"mode": "palette-classic"
|
||||||
|
},
|
||||||
|
"custom": {
|
||||||
|
"axisBorderShow": false,
|
||||||
|
"axisCenteredZero": false,
|
||||||
|
"axisColorMode": "text",
|
||||||
|
"axisLabel": "",
|
||||||
|
"axisPlacement": "auto",
|
||||||
|
"barAlignment": 0,
|
||||||
|
"barWidthFactor": 0.6,
|
||||||
|
"drawStyle": "line",
|
||||||
|
"fillOpacity": 0,
|
||||||
|
"gradientMode": "none",
|
||||||
|
"hideFrom": {
|
||||||
|
"legend": false,
|
||||||
|
"tooltip": false,
|
||||||
|
"viz": false
|
||||||
|
},
|
||||||
|
"insertNulls": false,
|
||||||
|
"lineInterpolation": "linear",
|
||||||
|
"lineWidth": 1,
|
||||||
|
"pointSize": 5,
|
||||||
|
"scaleDistribution": {
|
||||||
|
"type": "linear"
|
||||||
|
},
|
||||||
|
"showPoints": "auto",
|
||||||
|
"spanNulls": false,
|
||||||
|
"stacking": {
|
||||||
|
"group": "A",
|
||||||
|
"mode": "none"
|
||||||
|
},
|
||||||
|
"thresholdsStyle": {
|
||||||
|
"mode": "off"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"decimals": 0,
|
||||||
|
"mappings": [],
|
||||||
|
"min": 0,
|
||||||
|
"thresholds": {
|
||||||
|
"mode": "absolute",
|
||||||
|
"steps": [
|
||||||
|
{
|
||||||
|
"color": "green"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"color": "red",
|
||||||
|
"value": 80
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"unit": "none"
|
||||||
|
},
|
||||||
|
"overrides": []
|
||||||
|
},
|
||||||
|
"gridPos": {
|
||||||
|
"h": 15,
|
||||||
|
"w": 24,
|
||||||
|
"x": 0,
|
||||||
|
"y": 8
|
||||||
|
},
|
||||||
|
"id": 3,
|
||||||
|
"options": {
|
||||||
|
"legend": {
|
||||||
|
"calcs": [
|
||||||
|
"last",
|
||||||
|
"max"
|
||||||
|
],
|
||||||
|
"displayMode": "list",
|
||||||
|
"placement": "right",
|
||||||
|
"showLegend": true
|
||||||
|
},
|
||||||
|
"tooltip": {
|
||||||
|
"hideZeros": false,
|
||||||
|
"mode": "single",
|
||||||
|
"sort": "none"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pluginVersion": "11.6.0",
|
||||||
|
"targets": [
|
||||||
|
{
|
||||||
|
"disableTextWrap": false,
|
||||||
|
"editorMode": "builder",
|
||||||
|
"exemplar": false,
|
||||||
|
"expr": "misskey_jobqueue_delayed{instance=\"$instance\", job=\"$job\", host=~\"$host\", type=\"inbox\"}",
|
||||||
|
"format": "time_series",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"hide": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
|
"instant": false,
|
||||||
|
"legendFormat": "{{host}} {{type}}",
|
||||||
|
"range": true,
|
||||||
|
"refId": "A",
|
||||||
|
"useBackend": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"datasource": {
|
||||||
|
"type": "prometheus",
|
||||||
|
"uid": "cej25be7w5af4e"
|
||||||
|
},
|
||||||
|
"disableTextWrap": false,
|
||||||
|
"editorMode": "builder",
|
||||||
|
"exemplar": false,
|
||||||
|
"expr": "misskey_jobqueue_delayed{instance=\"$instance\", job=\"$job\", host=~\"$host\", type=\"deliver\"}",
|
||||||
|
"format": "time_series",
|
||||||
|
"fullMetaSearch": false,
|
||||||
|
"hide": false,
|
||||||
|
"includeNullMetadata": true,
|
||||||
|
"instant": false,
|
||||||
|
"legendFormat": "{{host}} {{type}}",
|
||||||
|
"range": true,
|
||||||
|
"refId": "B",
|
||||||
|
"useBackend": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": "Delayed Host",
|
||||||
|
"type": "timeseries"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"preload": false,
|
||||||
|
"refresh": "auto",
|
||||||
|
"schemaVersion": 41,
|
||||||
|
"tags": [],
|
||||||
|
"templating": {
|
||||||
|
"list": [
|
||||||
|
{
|
||||||
|
"current": {
|
||||||
|
"text": "misskey-exporter:8080",
|
||||||
|
"value": "misskey-exporter:8080"
|
||||||
|
},
|
||||||
|
"definition": "label_values(instance)",
|
||||||
|
"name": "instance",
|
||||||
|
"options": [],
|
||||||
|
"query": {
|
||||||
|
"qryType": 1,
|
||||||
|
"query": "label_values(instance)",
|
||||||
|
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||||
|
},
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"type": "query"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"current": {
|
||||||
|
"text": "process_exporter",
|
||||||
|
"value": "process_exporter"
|
||||||
|
},
|
||||||
|
"definition": "label_values(job)",
|
||||||
|
"name": "job",
|
||||||
|
"options": [],
|
||||||
|
"query": {
|
||||||
|
"qryType": 1,
|
||||||
|
"query": "label_values(job)",
|
||||||
|
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||||
|
},
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"type": "query"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"current": {
|
||||||
|
"text": [
|
||||||
|
],
|
||||||
|
"value": [
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"definition": "label_values(misskey_jobqueue_delayed,host)",
|
||||||
|
"includeAll": false,
|
||||||
|
"multi": true,
|
||||||
|
"name": "host",
|
||||||
|
"options": [],
|
||||||
|
"query": {
|
||||||
|
"qryType": 1,
|
||||||
|
"query": "label_values(misskey_jobqueue_delayed,host)",
|
||||||
|
"refId": "PrometheusVariableQueryEditor-VariableQuery"
|
||||||
|
},
|
||||||
|
"refresh": 1,
|
||||||
|
"regex": "",
|
||||||
|
"type": "query"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"time": {
|
||||||
|
"from": "now-15m",
|
||||||
|
"to": "now"
|
||||||
|
},
|
||||||
|
"timepicker": {},
|
||||||
|
"timezone": "browser",
|
||||||
|
"title": "New dashboard2",
|
||||||
|
"uid": "aejhaokfyvj0gb",
|
||||||
|
"version": 9
|
||||||
|
}
|
||||||
18
go.mod
18
go.mod
|
|
@ -1,10 +1,11 @@
|
||||||
module github.com/usbharu/misskey-exporter
|
module git.usbharu.dev/usbharu/misskey-exporter
|
||||||
|
|
||||||
go 1.23.0
|
go 1.23.0
|
||||||
|
|
||||||
toolchain go1.23.3
|
toolchain go1.23.3
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/prometheus/client_golang v1.22.0
|
||||||
github.com/sirupsen/logrus v1.9.3
|
github.com/sirupsen/logrus v1.9.3
|
||||||
github.com/yitsushi/go-misskey v1.1.6
|
github.com/yitsushi/go-misskey v1.1.6
|
||||||
)
|
)
|
||||||
|
|
@ -12,13 +13,12 @@ require (
|
||||||
require (
|
require (
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||||
github.com/klauspost/compress v1.17.9 // indirect
|
github.com/klauspost/compress v1.18.0 // indirect
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
|
||||||
github.com/prometheus/client_golang v1.20.5 // indirect
|
github.com/prometheus/client_model v0.6.2 // indirect
|
||||||
github.com/prometheus/client_model v0.6.1 // indirect
|
github.com/prometheus/common v0.65.0 // indirect
|
||||||
github.com/prometheus/common v0.55.0 // indirect
|
github.com/prometheus/procfs v0.17.0 // indirect
|
||||||
github.com/prometheus/procfs v0.15.1 // indirect
|
golang.org/x/net v0.41.0 // indirect
|
||||||
golang.org/x/net v0.39.0 // indirect
|
golang.org/x/sys v0.33.0 // indirect
|
||||||
golang.org/x/sys v0.32.0 // indirect
|
google.golang.org/protobuf v1.36.6 // indirect
|
||||||
google.golang.org/protobuf v1.34.2 // indirect
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
18
go.sum
18
go.sum
|
|
@ -7,18 +7,30 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
|
github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
|
||||||
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
|
||||||
|
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
|
||||||
|
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
|
||||||
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
|
||||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
|
github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y=
|
||||||
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
|
github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE=
|
||||||
|
github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q=
|
||||||
|
github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0=
|
||||||
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
|
github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E=
|
||||||
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
|
github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY=
|
||||||
|
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
|
||||||
|
github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE=
|
||||||
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
|
github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc=
|
||||||
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
|
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
|
||||||
|
github.com/prometheus/common v0.65.0 h1:QDwzd+G1twt//Kwj/Ww6E9FQq1iVMmODnILtW1t2VzE=
|
||||||
|
github.com/prometheus/common v0.65.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8=
|
||||||
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
|
||||||
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
|
||||||
|
github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg=
|
||||||
|
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
|
||||||
|
github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
|
||||||
|
github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
|
||||||
github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
|
github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
|
||||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
|
|
@ -36,6 +48,8 @@ golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ=
|
||||||
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
|
||||||
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
|
golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
|
||||||
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
|
golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
|
||||||
|
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
|
||||||
|
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
|
||||||
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU=
|
||||||
|
|
@ -44,8 +58,12 @@ golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
|
||||||
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
|
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
|
||||||
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
|
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
|
||||||
|
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
|
||||||
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
|
||||||
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
|
||||||
|
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
|
||||||
|
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA=
|
gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA=
|
||||||
|
|
|
||||||
142
main.go
142
main.go
|
|
@ -1,13 +1,15 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
"github.com/prometheus/client_golang/prometheus/promhttp"
|
"github.com/prometheus/client_golang/prometheus/promhttp"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"github.com/yitsushi/go-misskey"
|
"github.com/yitsushi/go-misskey"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
//TIP <p>To run your code, right-click the code and select <b>Run</b>.</p> <p>Alternatively, click
|
//TIP <p>To run your code, right-click the code and select <b>Run</b>.</p> <p>Alternatively, click
|
||||||
|
|
@ -17,7 +19,22 @@ import (
|
||||||
|
|
||||||
var client *misskey.Client
|
var client *misskey.Client
|
||||||
var endpoint = os.Getenv("MISSKEY_ENDPOINT")
|
var endpoint = os.Getenv("MISSKEY_ENDPOINT")
|
||||||
|
var protocol, hasProtocolEnv = os.LookupEnv("MISSKEY_PROTOCOL")
|
||||||
|
var path = os.Getenv("MISSKEY_PATH")
|
||||||
var apiKey = os.Getenv("MISSKEY_API_TOKEN")
|
var apiKey = os.Getenv("MISSKEY_API_TOKEN")
|
||||||
|
var logLevelEnv = os.Getenv("LOGGER_LEVEL")
|
||||||
|
var logFormatEnv = os.Getenv("LOGGER_FORMAT")
|
||||||
|
var httpClient = &http.Client{
|
||||||
|
Timeout: 5 * time.Second,
|
||||||
|
Transport: &http.Transport{
|
||||||
|
DialContext: (&net.Dialer{
|
||||||
|
Timeout: time.Second,
|
||||||
|
}).DialContext,
|
||||||
|
TLSHandshakeTimeout: time.Second,
|
||||||
|
ResponseHeaderTimeout: time.Second,
|
||||||
|
IdleConnTimeout: time.Second,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
misskeyJobQueueJobsCount = prometheus.NewGaugeVec(
|
misskeyJobQueueJobsCount = prometheus.NewGaugeVec(
|
||||||
|
|
@ -27,6 +44,12 @@ var (
|
||||||
},
|
},
|
||||||
[]string{"type", "status"},
|
[]string{"type", "status"},
|
||||||
)
|
)
|
||||||
|
misskeyJobQueueDelayed = prometheus.NewGaugeVec(
|
||||||
|
prometheus.GaugeOpts{
|
||||||
|
Name: "misskey_jobqueue_delayed",
|
||||||
|
Help: "Delayed Job",
|
||||||
|
},
|
||||||
|
[]string{"type", "host"})
|
||||||
misskeyNotesCount = prometheus.NewGauge(
|
misskeyNotesCount = prometheus.NewGauge(
|
||||||
prometheus.GaugeOpts{
|
prometheus.GaugeOpts{
|
||||||
Name: "misskey_notes_count",
|
Name: "misskey_notes_count",
|
||||||
|
|
@ -51,35 +74,13 @@ var (
|
||||||
Help: "Original Users Coount",
|
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(
|
misskeyPingResponseCode = prometheus.NewGauge(
|
||||||
prometheus.GaugeOpts{
|
prometheus.GaugeOpts{
|
||||||
Name: "misskey_ping_response_code",
|
Name: "misskey_ping_response_code",
|
||||||
Help: "Response Code for misskey Ping",
|
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(
|
misskeyGlobalTimelineLastNotePublished = prometheus.NewGauge(
|
||||||
prometheus.GaugeOpts{
|
prometheus.GaugeOpts{
|
||||||
Name: "misskey_global_timeline_last_note_published",
|
Name: "misskey_global_timeline_last_note_published",
|
||||||
|
|
@ -90,42 +91,14 @@ var (
|
||||||
Name: "misskey_local_timeline_last_note_published",
|
Name: "misskey_local_timeline_last_note_published",
|
||||||
Help: "Last Note Published on Local Timeline",
|
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",
|
|
||||||
})
|
|
||||||
misskeyHomeTimelineResponseTime = prometheus.NewHistogram(
|
|
||||||
prometheus.HistogramOpts{
|
|
||||||
Name: "misskey_home_timeline_response_time",
|
|
||||||
Help: "Response Time for misskey Home Timeline",
|
|
||||||
})
|
|
||||||
misskeyHomeTimelineResponseTimeRaw = prometheus.NewGauge(
|
|
||||||
prometheus.GaugeOpts{
|
|
||||||
Name: "misskey_home_timeline_response_time_raw",
|
|
||||||
Help: "Response Time for misskey Home Timeline",
|
|
||||||
})
|
|
||||||
misskeyHomeTimelineLastNotePublished = prometheus.NewGauge(
|
misskeyHomeTimelineLastNotePublished = prometheus.NewGauge(
|
||||||
prometheus.GaugeOpts{
|
prometheus.GaugeOpts{
|
||||||
Name: "misskey_home_timeline_last_note_published",
|
Name: "misskey_home_timeline_last_note_published",
|
||||||
Help: "Last Note Published on Home Timeline",
|
Help: "Last Note Published on Home Timeline",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
misskeySocialTimelineResponseTime = prometheus.NewHistogram(
|
|
||||||
prometheus.HistogramOpts{
|
|
||||||
Name: "misskey_social_timeline_response_time",
|
|
||||||
Help: "Response Time for misskey Home Timeline",
|
|
||||||
})
|
|
||||||
misskeySocialTimelineResponseTimeRaw = prometheus.NewGauge(
|
|
||||||
prometheus.GaugeOpts{
|
|
||||||
Name: "misskey_social_timeline_response_time_raw",
|
|
||||||
Help: "Response Time for misskey Home Timeline",
|
|
||||||
})
|
|
||||||
misskeySocialTimelineLastNotePublished = prometheus.NewGauge(
|
misskeySocialTimelineLastNotePublished = prometheus.NewGauge(
|
||||||
prometheus.GaugeOpts{
|
prometheus.GaugeOpts{
|
||||||
Name: "misskey_social_timeline_last_note_published",
|
Name: "misskey_social_timeline_last_note_published",
|
||||||
|
|
@ -152,49 +125,72 @@ var (
|
||||||
Name: "misskey_online_users",
|
Name: "misskey_online_users",
|
||||||
Help: "Online Users",
|
Help: "Online Users",
|
||||||
})
|
})
|
||||||
|
misskeyMeta = prometheus.NewGaugeVec(
|
||||||
|
prometheus.GaugeOpts{
|
||||||
|
Name: "misskey_meta",
|
||||||
|
Help: "Misskey Instance Metadata",
|
||||||
|
},
|
||||||
|
[]string{"version"})
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
||||||
|
if !hasProtocolEnv {
|
||||||
|
protocol = "https"
|
||||||
|
}
|
||||||
|
|
||||||
options, err := misskey.NewClientWithOptions(
|
options, err := misskey.NewClientWithOptions(
|
||||||
misskey.WithAPIToken(apiKey),
|
misskey.WithAPIToken(apiKey),
|
||||||
misskey.WithBaseURL("https", endpoint, ""),
|
misskey.WithBaseURL(protocol, endpoint, path),
|
||||||
misskey.WithLogLevel(logrus.InfoLevel),
|
|
||||||
)
|
)
|
||||||
|
var logLevel logrus.Level
|
||||||
|
switch {
|
||||||
|
case strings.EqualFold("DEBUG", logLevelEnv):
|
||||||
|
logLevel = logrus.DebugLevel
|
||||||
|
break
|
||||||
|
case strings.EqualFold("INFO", logLevelEnv):
|
||||||
|
logLevel = logrus.InfoLevel
|
||||||
|
break
|
||||||
|
case strings.EqualFold("WARN", logLevelEnv):
|
||||||
|
logLevel = logrus.WarnLevel
|
||||||
|
break
|
||||||
|
case strings.EqualFold("ERROR", logLevelEnv):
|
||||||
|
logLevel = logrus.ErrorLevel
|
||||||
|
break
|
||||||
|
case strings.EqualFold("FATAL", logLevelEnv):
|
||||||
|
logLevel = logrus.FatalLevel
|
||||||
|
break
|
||||||
|
case strings.EqualFold("TRACE", logLevelEnv):
|
||||||
|
logLevel = logrus.TraceLevel
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
logLevel = logrus.InfoLevel
|
||||||
|
}
|
||||||
|
if strings.EqualFold("json", logFormatEnv) {
|
||||||
|
logrus.SetFormatter(&logrus.JSONFormatter{})
|
||||||
|
}
|
||||||
|
logrus.SetLevel(logLevel)
|
||||||
client = options
|
client = options
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.Error(err)
|
logrus.Error(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
stats, err := client.Admin().Queue().Stats()
|
|
||||||
if err != nil {
|
|
||||||
logrus.Error(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
fmt.Println(stats)
|
|
||||||
|
|
||||||
prometheus.MustRegister(misskeyJobQueueJobsCount)
|
prometheus.MustRegister(misskeyJobQueueJobsCount)
|
||||||
|
prometheus.MustRegister(misskeyJobQueueDelayed)
|
||||||
prometheus.MustRegister(misskeyNotesCount)
|
prometheus.MustRegister(misskeyNotesCount)
|
||||||
prometheus.MustRegister(misskeyUsersCount)
|
prometheus.MustRegister(misskeyUsersCount)
|
||||||
prometheus.MustRegister(misskeyOriginalNotesCount)
|
prometheus.MustRegister(misskeyOriginalNotesCount)
|
||||||
prometheus.MustRegister(misskeyOriginalUsersCount)
|
prometheus.MustRegister(misskeyOriginalUsersCount)
|
||||||
prometheus.MustRegister(misskeyPingResponseTime)
|
|
||||||
prometheus.MustRegister(misskeyPingResponseTimeRaw)
|
|
||||||
prometheus.MustRegister(misskeyPingResponseCode)
|
prometheus.MustRegister(misskeyPingResponseCode)
|
||||||
prometheus.MustRegister(misskeyGlobalTimelineResponseTime)
|
|
||||||
prometheus.MustRegister(misskeyLocalTimelineResponseTime)
|
|
||||||
prometheus.MustRegister(misskeyGlobalTimelineLastNotePublished)
|
prometheus.MustRegister(misskeyGlobalTimelineLastNotePublished)
|
||||||
prometheus.MustRegister(misskeyLocalTimelineLastNotePublished)
|
prometheus.MustRegister(misskeyLocalTimelineLastNotePublished)
|
||||||
prometheus.MustRegister(misskeyGlobalTimelineResponseTimeRaw)
|
|
||||||
prometheus.MustRegister(misskeyLocalTimelineResponseTimeRaw)
|
|
||||||
prometheus.MustRegister(misskeyHomeTimelineResponseTime)
|
|
||||||
prometheus.MustRegister(misskeyHomeTimelineResponseTimeRaw)
|
|
||||||
prometheus.MustRegister(misskeyHomeTimelineLastNotePublished)
|
prometheus.MustRegister(misskeyHomeTimelineLastNotePublished)
|
||||||
prometheus.MustRegister(misskeySocialTimelineResponseTime)
|
|
||||||
prometheus.MustRegister(misskeySocialTimelineResponseTimeRaw)
|
|
||||||
prometheus.MustRegister(misskeySocialTimelineLastNotePublished)
|
prometheus.MustRegister(misskeySocialTimelineLastNotePublished)
|
||||||
prometheus.MustRegister(misskeyApiResponseTime)
|
prometheus.MustRegister(misskeyApiResponseTime)
|
||||||
prometheus.MustRegister(misskeyApiResponseTimeRaw)
|
prometheus.MustRegister(misskeyApiResponseTimeRaw)
|
||||||
prometheus.MustRegister(misskeyOnlineUsers)
|
prometheus.MustRegister(misskeyOnlineUsers)
|
||||||
|
prometheus.MustRegister(misskeyMeta)
|
||||||
|
|
||||||
handler := promhttp.Handler()
|
handler := promhttp.Handler()
|
||||||
|
|
||||||
|
|
@ -205,10 +201,12 @@ func main() {
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
go collectJobqueue()
|
go collectJobqueue()
|
||||||
|
go collectDelayed()
|
||||||
go collectPing()
|
go collectPing()
|
||||||
go collectStats()
|
go collectStats()
|
||||||
go collectTimeline()
|
go collectTimeline()
|
||||||
go collectOnlineUsers()
|
go collectOnlineUsers()
|
||||||
|
go collectMeta()
|
||||||
}()
|
}()
|
||||||
|
|
||||||
logrus.Error(server.ListenAndServe())
|
logrus.Error(server.ListenAndServe())
|
||||||
|
|
|
||||||
|
|
@ -5,5 +5,7 @@ scrape_configs:
|
||||||
- job_name: 'process_exporter'
|
- job_name: 'process_exporter'
|
||||||
static_configs:
|
static_configs:
|
||||||
- targets: ['misskey-exporter:8080']
|
- targets: ['misskey-exporter:8080']
|
||||||
|
labels:
|
||||||
|
misskey_instance: misskey.usbharu.dev
|
||||||
rule_files:
|
rule_files:
|
||||||
- rules.yaml
|
- rules.yaml
|
||||||
Loading…
Reference in New Issue