1
0
mirror of https://github.com/imgproxy/imgproxy.git synced 2025-01-18 11:12:10 +02:00

Collect vips memory metrics

This commit is contained in:
DarthSim 2019-02-21 20:55:16 +06:00
parent 4f2f20c089
commit f43fd6eec0
2 changed files with 36 additions and 0 deletions

View File

@ -13,6 +13,7 @@ import (
"math"
"os"
"runtime"
"time"
"unsafe"
"golang.org/x/sync/errgroup"
@ -112,6 +113,8 @@ func initVips() {
if err := vipsPrepareWatermark(); err != nil {
logFatal(err.Error())
}
collectVipsMetrics()
}
func shutdownVips() {
@ -119,6 +122,18 @@ func shutdownVips() {
C.vips_shutdown()
}
func collectVipsMetrics() {
if prometheusEnabled {
go func() {
for range time.Tick(5 * time.Second) {
prometheusVipsMemory.Set(float64(C.vips_tracked_get_mem()))
prometheusVipsMaxMemory.Set(float64(C.vips_tracked_get_mem_highwater()))
prometheusVipsAllocs.Set(float64(C.vips_tracked_get_allocs()))
}
}()
}
}
func cachedCString(str string) *C.char {
if cstr, ok := cstrings[str]; ok {
return cstr

View File

@ -19,6 +19,9 @@ var (
prometheusBufferSize *prometheus.HistogramVec
prometheusBufferDefaultSize *prometheus.GaugeVec
prometheusBufferMaxSize *prometheus.GaugeVec
prometheusVipsMemory prometheus.Gauge
prometheusVipsMaxMemory prometheus.Gauge
prometheusVipsAllocs prometheus.Gauge
)
func initPrometheus() {
@ -66,6 +69,21 @@ func initPrometheus() {
Help: "A gauge of the buffer max size in bytes.",
}, []string{"type"})
prometheusVipsMemory = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "vips_memory_bytes",
Help: "A gauge of the vips tracked memory usage in bytes.",
})
prometheusVipsMaxMemory = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "vips_max_memory_bytes",
Help: "A gauge of the max vips tracked memory usage in bytes.",
})
prometheusVipsAllocs = prometheus.NewGauge(prometheus.GaugeOpts{
Name: "vips_allocs",
Help: "A gauge of the number of active vips allocations.",
})
prometheus.MustRegister(
prometheusRequestsTotal,
prometheusErrorsTotal,
@ -75,6 +93,9 @@ func initPrometheus() {
prometheusBufferSize,
prometheusBufferDefaultSize,
prometheusBufferMaxSize,
prometheusVipsMemory,
prometheusVipsMaxMemory,
prometheusVipsAllocs,
)
prometheusEnabled = true