Created
April 11, 2025 11:24
-
-
Save juliusknorr/39aecb974cf5dc75e21e924782b16844 to your computer and use it in GitHub Desktop.
php-apcu-prometheus.php
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Simple endpoint to get apcu metrics into monitoring as a prometheus endpoint | |
if (!extension_loaded('apcu')) { | |
header('HTTP/1.1 500 Internal Server Error'); | |
echo "Error: APCu extension not enabled\n"; | |
exit(1); | |
} | |
$apcStats = apcu_cache_info(true); | |
$mem = apcu_sma_info(true); | |
if ($apcStats === false || $mem === false) { | |
header('HTTP/1.1 500 Internal Server Error'); | |
echo "Error: APCu extension not enabled\n"; | |
exit(1); | |
} | |
header('Content-Type: text/plain; version=0.0.4'); | |
// Calculate memory values once to ensure consistency | |
$totalMemory = $mem['num_seg'] * $mem['seg_size']; | |
$availableMemory = $mem['avail_mem']; | |
$usedMemory = $totalMemory - $availableMemory; | |
echo "# HELP php_apc_num_slots Number of slots in APC cache\n"; | |
echo "# TYPE php_apc_num_slots gauge\n"; | |
echo "php_apc_num_slots " . $apcStats['num_slots'] . "\n"; | |
echo "# HELP php_apc_num_entries Number of entries in APC cache\n"; | |
echo "# TYPE php_apc_num_entries gauge\n"; | |
echo "php_apc_num_entries " . $apcStats['num_entries'] . "\n"; | |
echo "# HELP php_apc_num_hits Number of cache hits\n"; | |
echo "# TYPE php_apc_num_hits counter\n"; | |
echo "php_apc_num_hits " . $apcStats['num_hits'] . "\n"; | |
echo "# HELP php_apc_num_misses Number of cache misses\n"; | |
echo "# TYPE php_apc_num_misses counter\n"; | |
echo "php_apc_num_misses " . $apcStats['num_misses'] . "\n"; | |
echo "# HELP php_apc_num_inserts Number of cache inserts\n"; | |
echo "# TYPE php_apc_num_inserts counter\n"; | |
echo "php_apc_num_inserts " . $apcStats['num_inserts'] . "\n"; | |
echo "# HELP php_apc_hit_ratio Ratio of cache hits to total cache operations\n"; | |
echo "# TYPE php_apc_hit_ratio gauge\n"; | |
echo "php_apc_hit_ratio " . ($apcStats['num_hits'] / ($apcStats['num_hits'] + $apcStats['num_misses'])) . "\n"; | |
echo "# HELP php_apc_miss_ratio Ratio of cache misses to total cache operations\n"; | |
echo "# TYPE php_apc_miss_ratio gauge\n"; | |
echo "php_apc_miss_ratio " . ($apcStats['num_misses'] / ($apcStats['num_hits'] + $apcStats['num_misses'])) . "\n"; | |
echo "# HELP php_apc_num_expunges Number of cache expunges due to cache full\n"; | |
echo "# TYPE php_apc_num_expunges counter\n"; | |
echo "php_apc_num_expunges " . $apcStats['expunges'] . "\n"; | |
echo "# HELP php_apc_memory_size Total memory size allocated for APC\n"; | |
echo "# TYPE php_apc_memory_size gauge\n"; | |
echo "php_apc_memory_size " . $totalMemory . "\n"; | |
echo "# HELP php_apc_memory_available Available memory in APC\n"; | |
echo "# TYPE php_apc_memory_available gauge\n"; | |
echo "php_apc_memory_available " . $availableMemory . "\n"; | |
echo "# HELP php_apc_memory_used Used memory in APC\n"; | |
echo "# TYPE php_apc_memory_used gauge\n"; | |
echo "php_apc_memory_used " . $usedMemory . "\n"; | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment