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:
parent
4f2f20c089
commit
f43fd6eec0
15
process.go
15
process.go
@ -13,6 +13,7 @@ import (
|
|||||||
"math"
|
"math"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"time"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sync/errgroup"
|
"golang.org/x/sync/errgroup"
|
||||||
@ -112,6 +113,8 @@ func initVips() {
|
|||||||
if err := vipsPrepareWatermark(); err != nil {
|
if err := vipsPrepareWatermark(); err != nil {
|
||||||
logFatal(err.Error())
|
logFatal(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
collectVipsMetrics()
|
||||||
}
|
}
|
||||||
|
|
||||||
func shutdownVips() {
|
func shutdownVips() {
|
||||||
@ -119,6 +122,18 @@ func shutdownVips() {
|
|||||||
C.vips_shutdown()
|
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 {
|
func cachedCString(str string) *C.char {
|
||||||
if cstr, ok := cstrings[str]; ok {
|
if cstr, ok := cstrings[str]; ok {
|
||||||
return cstr
|
return cstr
|
||||||
|
@ -19,6 +19,9 @@ var (
|
|||||||
prometheusBufferSize *prometheus.HistogramVec
|
prometheusBufferSize *prometheus.HistogramVec
|
||||||
prometheusBufferDefaultSize *prometheus.GaugeVec
|
prometheusBufferDefaultSize *prometheus.GaugeVec
|
||||||
prometheusBufferMaxSize *prometheus.GaugeVec
|
prometheusBufferMaxSize *prometheus.GaugeVec
|
||||||
|
prometheusVipsMemory prometheus.Gauge
|
||||||
|
prometheusVipsMaxMemory prometheus.Gauge
|
||||||
|
prometheusVipsAllocs prometheus.Gauge
|
||||||
)
|
)
|
||||||
|
|
||||||
func initPrometheus() {
|
func initPrometheus() {
|
||||||
@ -66,6 +69,21 @@ func initPrometheus() {
|
|||||||
Help: "A gauge of the buffer max size in bytes.",
|
Help: "A gauge of the buffer max size in bytes.",
|
||||||
}, []string{"type"})
|
}, []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(
|
prometheus.MustRegister(
|
||||||
prometheusRequestsTotal,
|
prometheusRequestsTotal,
|
||||||
prometheusErrorsTotal,
|
prometheusErrorsTotal,
|
||||||
@ -75,6 +93,9 @@ func initPrometheus() {
|
|||||||
prometheusBufferSize,
|
prometheusBufferSize,
|
||||||
prometheusBufferDefaultSize,
|
prometheusBufferDefaultSize,
|
||||||
prometheusBufferMaxSize,
|
prometheusBufferMaxSize,
|
||||||
|
prometheusVipsMemory,
|
||||||
|
prometheusVipsMaxMemory,
|
||||||
|
prometheusVipsAllocs,
|
||||||
)
|
)
|
||||||
|
|
||||||
prometheusEnabled = true
|
prometheusEnabled = true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user