protomaps / go-pmtiles

Single-file executable tool for working with PMTiles archives
BSD 3-Clause "New" or "Revised" License
350 stars 48 forks source link

Add more prometheus metrics #141

Closed msbarry closed 6 months ago

msbarry commented 6 months ago

Add more prometheus metrics to pmtiles server:

Also fixed a few things I found testing out the corner cases:

The impact on performance seems to be negligible, tilesiege with 1.25m requests was around 37k qps before/after this change.

Example /metrics response after a bunch of requests to "planet" archive that exists and "plaet" archive that does not ``` # HELP pmtiles_bucket_request_duration_seconds Request duration in seconds for individual requests to the underlying bucket # TYPE pmtiles_bucket_request_duration_seconds histogram pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="0.005"} 40 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="0.01"} 51 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="0.025"} 70 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="0.05"} 116 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="0.1"} 126 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="0.25"} 130 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="0.5"} 130 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="1"} 130 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="2.5"} 130 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="5"} 130 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="10"} 130 pmtiles_bucket_request_duration_seconds_bucket{archive="",status="404",le="+Inf"} 130 pmtiles_bucket_request_duration_seconds_sum{archive="",status="404"} 3.3402572059999986 pmtiles_bucket_request_duration_seconds_count{archive="",status="404"} 130 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="0.005"} 0 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="0.01"} 0 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="0.025"} 2 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="0.05"} 32 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="0.1"} 94 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="0.25"} 118 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="0.5"} 118 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="1"} 118 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="2.5"} 118 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="5"} 118 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="10"} 118 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="206",le="+Inf"} 118 pmtiles_bucket_request_duration_seconds_sum{archive="planet",status="206"} 8.975607534 pmtiles_bucket_request_duration_seconds_count{archive="planet",status="206"} 118 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="0.005"} 0 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="0.01"} 0 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="0.025"} 0 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="0.05"} 5 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="0.1"} 6 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="0.25"} 8 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="0.5"} 8 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="1"} 8 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="2.5"} 8 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="5"} 8 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="10"} 8 pmtiles_bucket_request_duration_seconds_bucket{archive="planet",status="canceled",le="+Inf"} 8 pmtiles_bucket_request_duration_seconds_sum{archive="planet",status="canceled"} 0.512169418 pmtiles_bucket_request_duration_seconds_count{archive="planet",status="canceled"} 8 # HELP pmtiles_bucket_requests_total Requests to the underlying bucket # TYPE pmtiles_bucket_requests_total counter pmtiles_bucket_requests_total{archive="",kind="root",status="404"} 10 pmtiles_bucket_requests_total{archive="",kind="tile",status="404"} 120 pmtiles_bucket_requests_total{archive="planet",kind="leaf",status="206"} 10 pmtiles_bucket_requests_total{archive="planet",kind="root",status="206"} 1 pmtiles_bucket_requests_total{archive="planet",kind="tile",status="206"} 107 pmtiles_bucket_requests_total{archive="planet",kind="tile",status="canceled"} 8 # HELP pmtiles_buildinfo # TYPE pmtiles_buildinfo gauge pmtiles_buildinfo{revision="none",version="dev"} 1 # HELP pmtiles_buildtime # TYPE pmtiles_buildtime gauge pmtiles_buildtime 0 # HELP pmtiles_dir_cache_entries Number of directories in the cache # TYPE pmtiles_dir_cache_entries gauge pmtiles_dir_cache_entries 12 # HELP pmtiles_dir_cache_limit_bytes Maximum directory cache size limit in bytes # TYPE pmtiles_dir_cache_limit_bytes gauge pmtiles_dir_cache_limit_bytes 6.4e+07 # HELP pmtiles_dir_cache_requests Requests to the directory cache by archive and status (hit/miss) # TYPE pmtiles_dir_cache_requests counter pmtiles_dir_cache_requests{archive="planet",status="hit"} 694 pmtiles_dir_cache_requests{archive="planet",status="miss"} 11 pmtiles_dir_cache_requests{archive="plet",status="hit"} 37 pmtiles_dir_cache_requests{archive="plet",status="miss"} 10 # HELP pmtiles_dir_cache_size_bytes Current directory cache usage in bytes # TYPE pmtiles_dir_cache_size_bytes gauge pmtiles_dir_cache_size_bytes 3.791191e+06 # HELP pmtiles_request_duration_seconds Overall request duration in seconds # TYPE pmtiles_request_duration_seconds histogram pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="0.005"} 7 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="0.01"} 8 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="0.025"} 22 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="0.05"} 36 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="0.1"} 39 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="0.25"} 47 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="0.5"} 47 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="1"} 47 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="2.5"} 47 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="5"} 47 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="10"} 47 pmtiles_request_duration_seconds_bucket{archive="",handler="tile",status="404",le="+Inf"} 47 pmtiles_request_duration_seconds_sum{archive="",handler="tile",status="404"} 2.1503623300000005 pmtiles_request_duration_seconds_count{archive="",handler="tile",status="404"} 47 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="0.005"} 0 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="0.01"} 0 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="0.025"} 1 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="0.05"} 12 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="0.1"} 41 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="0.25"} 63 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="0.5"} 64 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="1"} 64 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="2.5"} 64 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="5"} 64 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="10"} 64 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="200",le="+Inf"} 64 pmtiles_request_duration_seconds_sum{archive="planet",handler="tile",status="200"} 6.047602334 pmtiles_request_duration_seconds_count{archive="planet",handler="tile",status="200"} 64 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="0.005"} 0 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="0.01"} 0 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="0.025"} 0 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="0.05"} 3 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="0.1"} 29 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="0.25"} 41 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="0.5"} 43 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="1"} 43 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="2.5"} 43 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="5"} 43 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="10"} 43 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="304",le="+Inf"} 43 pmtiles_request_duration_seconds_sum{archive="planet",handler="tile",status="304"} 4.370763833 pmtiles_request_duration_seconds_count{archive="planet",handler="tile",status="304"} 43 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="0.005"} 5 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="0.01"} 17 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="0.025"} 39 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="0.05"} 106 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="0.1"} 124 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="0.25"} 128 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="0.5"} 128 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="1"} 128 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="2.5"} 128 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="5"} 128 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="10"} 128 pmtiles_request_duration_seconds_bucket{archive="planet",handler="tile",status="canceled",le="+Inf"} 128 pmtiles_request_duration_seconds_sum{archive="planet",handler="tile",status="canceled"} 4.8165444530000014 pmtiles_request_duration_seconds_count{archive="planet",handler="tile",status="canceled"} 128 # HELP pmtiles_requests_total Overall number of requests to the service # TYPE pmtiles_requests_total counter pmtiles_requests_total{archive="",handler="CONNECT",status="405"} 1 pmtiles_requests_total{archive="",handler="OPTIONS",status="204"} 253 pmtiles_requests_total{archive="",handler="POST",status="405"} 1 pmtiles_requests_total{archive="",handler="tile",status="404"} 47 pmtiles_requests_total{archive="planet",handler="tile",status="200"} 64 pmtiles_requests_total{archive="planet",handler="tile",status="304"} 43 pmtiles_requests_total{archive="planet",handler="tile",status="canceled"} 128 # HELP pmtiles_response_size_bytes Overall response size in bytes # TYPE pmtiles_response_size_bytes histogram pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="1024"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="5120"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="10240"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="25600"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="51200"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="102400"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="256000"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="512000"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="1.048576e+06"} 47 pmtiles_response_size_bytes_bucket{archive="",handler="tile",status="404",le="+Inf"} 47 pmtiles_response_size_bytes_sum{archive="",handler="tile",status="404"} 799 pmtiles_response_size_bytes_count{archive="",handler="tile",status="404"} 47 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="1024"} 2 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="5120"} 6 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="10240"} 11 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="25600"} 18 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="51200"} 33 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="102400"} 55 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="256000"} 64 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="512000"} 64 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="1.048576e+06"} 64 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="200",le="+Inf"} 64 pmtiles_response_size_bytes_sum{archive="planet",handler="tile",status="200"} 3.403524e+06 pmtiles_response_size_bytes_count{archive="planet",handler="tile",status="200"} 64 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="1024"} 0 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="5120"} 0 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="10240"} 1 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="25600"} 6 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="51200"} 18 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="102400"} 34 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="256000"} 43 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="512000"} 43 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="1.048576e+06"} 43 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="304",le="+Inf"} 43 pmtiles_response_size_bytes_sum{archive="planet",handler="tile",status="304"} 2.787782e+06 pmtiles_response_size_bytes_count{archive="planet",handler="tile",status="304"} 43 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="1024"} 127 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="5120"} 127 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="10240"} 127 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="25600"} 127 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="51200"} 127 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="102400"} 128 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="256000"} 128 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="512000"} 128 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="1.048576e+06"} 128 pmtiles_response_size_bytes_bucket{archive="planet",handler="tile",status="canceled",le="+Inf"} 128 pmtiles_response_size_bytes_sum{archive="planet",handler="tile",status="canceled"} 102841 pmtiles_response_size_bytes_count{archive="planet",handler="tile",status="canceled"} 128 ```