使用されていないメトリクスを削除
docker-ci / docker (push) Successful in 55s Details

This commit is contained in:
usbharu 2025-07-07 14:50:54 +09:00
parent 8054429f40
commit 38867f0c67
Signed by: usbharu
GPG Key ID: 8CB1087135660B8D
6 changed files with 1226 additions and 84 deletions

View File

@ -6,7 +6,7 @@ import (
"github.com/sirupsen/logrus"
"github.com/yitsushi/go-misskey/services/notes/timeline"
"io"
"net/http"
"math"
"time"
)
@ -79,20 +79,24 @@ func collectPing() {
time.Sleep(5 * time.Second)
var buf = bytes.NewBuffer([]byte(`{}`))
start := time.Now()
resp, err := http.Post(protocol+"://"+endpoint+"/api/ping", "application/json", buf)
resp, err := httpClient.Post(protocol+"://"+endpoint+"/api/ping", "application/json", buf)
if err != nil {
logrus.WithField("type", "ping").Warning(err)
misskeyPingResponseCode.Set(math.NaN())
misskeyApiResponseTime.WithLabelValues("ping", "").Observe(math.NaN())
misskeyApiResponseTimeRaw.WithLabelValues("ping", "").Set(math.NaN())
continue
}
err = resp.Body.Close()
if err != nil {
logrus.WithField("type", "ping").Warning(err)
misskeyPingResponseCode.Set(math.NaN())
misskeyApiResponseTime.WithLabelValues("ping", "").Observe(math.NaN())
misskeyApiResponseTimeRaw.WithLabelValues("ping", "").Set(math.NaN())
continue
}
misskeyPingResponseCode.Set(float64(resp.StatusCode))
t := float64(time.Since(start).Milliseconds()) / 1000
misskeyPingResponseTime.Observe(t)
misskeyPingResponseTimeRaw.Set(t)
misskeyApiResponseTime.WithLabelValues("ping", "").Observe(t)
misskeyApiResponseTimeRaw.WithLabelValues("ping", "").Set(t)
}
@ -104,6 +108,7 @@ func collectMeta() {
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)
@ -116,6 +121,10 @@ func collectStats() {
stats, err := client.Meta().Stats()
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
}
misskeyNotesCount.Set(float64(stats.NotesCount))
@ -132,7 +141,7 @@ type OnlineUsers struct {
func collectOnlineUsers() {
for {
time.Sleep(1 * time.Minute)
response, err := http.Get(protocol + "://" + endpoint + "/api/get-online-users-count")
response, err := httpClient.Get(protocol + "://" + endpoint + "/api/get-online-users-count")
if err != nil {
logrus.WithField("type", "online-users").Warning(err)
continue
@ -167,11 +176,12 @@ func collectTimeline() {
global, err := client.Notes().Timeline().Global(timeline.GlobalRequest{Limit: 10})
if err != nil {
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
}
t := float64(time.Since(start).Milliseconds()) / 1000
misskeyGlobalTimelineResponseTime.Observe(t)
misskeyGlobalTimelineResponseTimeRaw.Set(t)
misskeyApiResponseTime.WithLabelValues("timeline", "global").Observe(t)
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "global").Set(t)
if len(global) != 0 {
@ -183,11 +193,12 @@ func collectTimeline() {
global, err := client.Notes().Timeline().Local(timeline.LocalRequest{Limit: 10})
if err != nil {
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
}
t := float64(time.Since(start).Milliseconds()) / 1000
misskeyLocalTimelineResponseTime.Observe(t)
misskeyLocalTimelineResponseTimeRaw.Set(t)
misskeyApiResponseTime.WithLabelValues("timeline", "local").Observe(t)
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "local").Set(t)
if len(global) != 0 {
@ -199,11 +210,12 @@ func collectTimeline() {
global, err := client.Notes().Timeline().Get(timeline.GetRequest{Limit: 10})
if err != nil {
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
}
t := float64(time.Since(start).Milliseconds()) / 1000
misskeyHomeTimelineResponseTime.Observe(t)
misskeyHomeTimelineResponseTimeRaw.Set(t)
misskeyApiResponseTime.WithLabelValues("timeline", "home").Observe(t)
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "home").Set(t)
if len(global) != 0 {
@ -215,11 +227,12 @@ func collectTimeline() {
global, err := client.Notes().Timeline().Hybrid(timeline.HybridRequest{Limit: 10})
if err != nil {
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
}
t := float64(time.Since(start).Milliseconds()) / 1000
misskeySocialTimelineResponseTime.Observe(t)
misskeySocialTimelineResponseTimeRaw.Set(t)
misskeyApiResponseTime.WithLabelValues("timeline", "social").Observe(t)
misskeyApiResponseTimeRaw.WithLabelValues("timeline", "social").Set(t)
if len(global) != 0 {

1156
dashboard.json Normal file

File diff suppressed because it is too large Load Diff

16
go.mod
View File

@ -5,6 +5,7 @@ go 1.23.0
toolchain go1.23.3
require (
github.com/prometheus/client_golang v1.22.0
github.com/sirupsen/logrus v1.9.3
github.com/yitsushi/go-misskey v1.1.6
)
@ -12,13 +13,12 @@ require (
require (
github.com/beorn7/perks v1.0.1 // 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/prometheus/client_golang v1.20.5 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.55.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
golang.org/x/net v0.39.0 // indirect
golang.org/x/sys v0.32.0 // indirect
google.golang.org/protobuf v1.34.2 // indirect
github.com/prometheus/client_model v0.6.2 // indirect
github.com/prometheus/common v0.65.0 // indirect
github.com/prometheus/procfs v0.17.0 // indirect
golang.org/x/net v0.41.0 // indirect
golang.org/x/sys v0.33.0 // indirect
google.golang.org/protobuf v1.36.6 // indirect
)

18
go.sum
View File

@ -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/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
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/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
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/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.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/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/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/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/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
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.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.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-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
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.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
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/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/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA=

79
main.go
View File

@ -5,9 +5,11 @@ import (
"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/sirupsen/logrus"
"github.com/yitsushi/go-misskey"
"net"
"net/http"
"os"
"strings"
"time"
)
//TIP <p>To run your code, right-click the code and select <b>Run</b>.</p> <p>Alternatively, click
@ -22,6 +24,17 @@ var path = os.Getenv("MISSKEY_PATH")
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 (
misskeyJobQueueJobsCount = prometheus.NewGaugeVec(
@ -61,35 +74,13 @@ var (
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",
@ -100,42 +91,14 @@ var (
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",
})
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(
prometheus.GaugeOpts{
Name: "misskey_home_timeline_last_note_published",
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(
prometheus.GaugeOpts{
Name: "misskey_social_timeline_last_note_published",
@ -219,20 +182,10 @@ func main() {
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)
prometheus.MustRegister(misskeyHomeTimelineResponseTime)
prometheus.MustRegister(misskeyHomeTimelineResponseTimeRaw)
prometheus.MustRegister(misskeyHomeTimelineLastNotePublished)
prometheus.MustRegister(misskeySocialTimelineResponseTime)
prometheus.MustRegister(misskeySocialTimelineResponseTimeRaw)
prometheus.MustRegister(misskeySocialTimelineLastNotePublished)
prometheus.MustRegister(misskeyApiResponseTime)
prometheus.MustRegister(misskeyApiResponseTimeRaw)

View File

@ -5,5 +5,7 @@ scrape_configs:
- job_name: 'process_exporter'
static_configs:
- targets: ['misskey-exporter:8080']
labels:
misskey_instance: misskey.usbharu.dev
rule_files:
- rules.yaml