feat: バージョンを表示できるように

This commit is contained in:
usbharu 2025-04-20 18:11:31 +09:00
parent f34672c826
commit 2fe3084d80
Signed by: usbharu
GPG Key ID: 8CB1087135660B8D
3 changed files with 320 additions and 160 deletions

View File

@ -69,6 +69,18 @@ func collectPing() {
}
}
func collectMeta() {
for {
time.Sleep(1 * time.Minute)
meta, err := client.Meta().InstanceMeta(true)
if err != nil {
logrus.WithField("type", "meta").Warning(err)
continue
}
misskeyMeta.WithLabelValues(*meta.Version).Set(1)
}
}
func collectStats() {
for {
time.Sleep(30 * time.Second)

View File

@ -23,7 +23,6 @@
"panels": [
{
"datasource": {
"type": "prometheus",
"uid": "cej25be7w5af4e"
},
"fieldConfig": {
@ -31,36 +30,23 @@
"color": {
"mode": "thresholds"
},
"fieldMinMax": false,
"mappings": [
{
"options": {
"0": {
"index": 1,
"text": "DOWN"
},
"1": {
"index": 0,
"text": "UP"
}
},
"type": "value"
}
],
"noValue": "UNKNOWN",
"custom": {
"align": "auto",
"cellOptions": {
"type": "auto"
},
"inspect": false
},
"mappings": [],
"thresholds": {
"mode": "absolute",
"steps": [
{
"color": "red"
"color": "green"
},
{
"color": "red",
"value": 0
},
{
"color": "green",
"value": 1
"value": 80
}
]
}
@ -68,140 +54,60 @@
"overrides": []
},
"gridPos": {
"h": 6,
"w": 3,
"h": 3,
"w": 6,
"x": 0,
"y": 0
},
"id": 1,
"id": 12,
"options": {
"colorMode": "value",
"graphMode": "area",
"justifyMode": "auto",
"orientation": "auto",
"percentChangeColorMode": "standard",
"reduceOptions": {
"calcs": [
"last"
],
"cellHeight": "sm",
"footer": {
"countRows": false,
"fields": "",
"values": false
"reducer": [
"sum"
],
"show": false
},
"showPercentChange": false,
"textMode": "auto",
"wideLayout": true
"showHeader": false
},
"pluginVersion": "11.6.0",
"targets": [
{
"datasource": {
"type": "prometheus",
"uid": "cej25be7w5af4e"
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "misskey_health",
"exemplar": false,
"expr": "misskey_meta{instance=\"$instance\", job=\"$job\"}",
"format": "table",
"fullMetaSearch": false,
"includeNullMetadata": true,
"instant": true,
"legendFormat": "__auto",
"range": true,
"range": false,
"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
}
]
"title": "Misskey Version",
"transformations": [
{
"id": "organize",
"options": {
"excludeByName": {
"Time": true,
"Value": true,
"__name__": true,
"instance": true,
"job": true
},
"includeByName": {},
"indexByName": {},
"renameByName": {}
}
},
"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"
"type": "table"
},
{
"datasource": {
@ -261,14 +167,18 @@
"pluginVersion": "11.6.0",
"targets": [
{
"disableTextWrap": false,
"editorMode": "code",
"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",
"fullMetaSearch": false,
"includeNullMetadata": true,
"instant": false,
"legendFormat": "__auto",
"range": true,
"refId": "A"
"refId": "A",
"useBackend": false
}
],
"title": "Availability(30d)",
@ -311,7 +221,7 @@
"percentChangeColorMode": "standard",
"reduceOptions": {
"calcs": [
"lastNotNull"
"last"
],
"fields": "",
"values": false
@ -384,26 +294,34 @@
"pluginVersion": "11.6.0",
"targets": [
{
"disableTextWrap": false,
"editorMode": "builder",
"expr": "misskey_notes_count",
"expr": "misskey_notes_count{instance=\"$instance\", job=\"$job\"}",
"fullMetaSearch": false,
"includeNullMetadata": true,
"instant": false,
"legendFormat": "All",
"range": true,
"refId": "A"
"refId": "A",
"useBackend": false
},
{
"datasource": {
"type": "prometheus",
"uid": "cej25be7w5af4e"
},
"disableTextWrap": false,
"editorMode": "builder",
"exemplar": false,
"expr": "misskey_original_notes_count",
"expr": "misskey_original_notes_count{instance=\"$instance\", job=\"$job\"}",
"fullMetaSearch": false,
"hide": false,
"includeNullMetadata": true,
"instant": false,
"legendFormat": "Local",
"range": true,
"refId": "B"
"refId": "B",
"useBackend": false
}
],
"title": "Note Count",
@ -459,29 +377,219 @@
"pluginVersion": "11.6.0",
"targets": [
{
"editorMode": "code",
"expr": "misskey_users_count",
"disableTextWrap": false,
"editorMode": "builder",
"expr": "misskey_users_count{instance=\"$instance\", job=\"$job\"}",
"fullMetaSearch": false,
"includeNullMetadata": true,
"legendFormat": "All",
"range": true,
"refId": "A"
"refId": "A",
"useBackend": false
},
{
"datasource": {
"type": "prometheus",
"uid": "cej25be7w5af4e"
},
"editorMode": "code",
"expr": "misskey_original_users_count",
"disableTextWrap": false,
"editorMode": "builder",
"expr": "misskey_original_users_count{instance=\"$instance\", job=\"$job\"}",
"fullMetaSearch": false,
"hide": false,
"includeNullMetadata": true,
"instant": false,
"legendFormat": "Local",
"range": true,
"refId": "B"
"refId": "B",
"useBackend": false
}
],
"title": "User Count",
"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": {
"type": "prometheus",
@ -711,7 +819,7 @@
},
"disableTextWrap": false,
"editorMode": "builder",
"expr": "misskey_api_response_time_raw",
"expr": "misskey_api_response_time_raw{instance=\"$instance\", job=\"$job\"}",
"fullMetaSearch": false,
"hide": false,
"includeNullMetadata": false,
@ -780,7 +888,7 @@
{
"disableTextWrap": false,
"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,
"includeNullMetadata": true,
"legendFormat": "{{type}} {{status}}",
@ -847,7 +955,7 @@
{
"disableTextWrap": false,
"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,
"includeNullMetadata": true,
"legendFormat": "{{type}} {{status}}",
@ -934,9 +1042,7 @@
],
"displayMode": "table",
"placement": "right",
"showLegend": true,
"sortBy": "Max",
"sortDesc": true
"showLegend": true
},
"tooltip": {
"hideZeros": false,
@ -949,7 +1055,7 @@
{
"disableTextWrap": false,
"editorMode": "builder",
"expr": "misskey_jobqueue_jobs",
"expr": "misskey_jobqueue_jobs{instance=\"$instance\", job=\"$job\"}",
"fullMetaSearch": false,
"includeNullMetadata": true,
"interval": "1",
@ -964,19 +1070,53 @@
}
],
"preload": false,
"refresh": "auto",
"schemaVersion": 41,
"tags": [],
"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": {
"from": "now-15m",
"from": "now-3h",
"to": "now"
},
"timepicker": {},
"timezone": "browser",
"title": "New dashboard",
"uid": "eej5avfu4yyo0f",
"version": 25
"version": 26
}

View File

@ -154,6 +154,12 @@ var (
Name: "misskey_online_users",
Help: "Online Users",
})
misskeyMeta = prometheus.NewGaugeVec(
prometheus.GaugeOpts{
Name: "misskey_meta",
Help: "Misskey Instance Metadata",
},
[]string{"version"})
)
func main() {
@ -202,6 +208,7 @@ func main() {
prometheus.MustRegister(misskeyApiResponseTime)
prometheus.MustRegister(misskeyApiResponseTimeRaw)
prometheus.MustRegister(misskeyOnlineUsers)
prometheus.MustRegister(misskeyMeta)
handler := promhttp.Handler()
@ -216,6 +223,7 @@ func main() {
go collectStats()
go collectTimeline()
go collectOnlineUsers()
go collectMeta()
}()
logrus.Error(server.ListenAndServe())