The PHP OPcache extension is a powerful tool that can significantly improve the performance of your PHP applications by storing precompiled script bytecode in shared memory. However, like any caching system, it’s crucial to monitor the performance and usage of your OPcache to ensure that it’s configured correctly and operating optimally. In this post, we will outline a method to monitor OPcache using a combination of Telegraf, InfluxDB, and Grafana.
Pre-requisites
For this tutorial, we assume that you have the following:
- A PHP environment with OPcache enabled
- An InfluxDB instance up and running
- A Grafana instance up and running
- Telegraf installed and running on the server where PHP is installed
Step 1: Create a PHP Script to Expose OPcache Stats
First, let’s create a PHP script that will expose the OPcache stats in a JSON format that can be consumed by Telegraf. Save the following script as opcache.php
:
<?php
header('Content-Type: application/json');
$status = opcache_get_status();
if ($status) {
unset($status['scripts']); // Remove 'scripts' element
echo json_encode($status);
} else {
echo json_encode(['error' => 'OPCache not enabled']);
}
This script fetches the OPcache status, removes the scripts
element, and then outputs the remaining data as a JSON object.
Step 2: Configure Telegraf to Collect the OPcache Stats
Next, we need to configure Telegraf to collect the OPcache stats from our PHP script using the inputs.http
plugin. Edit your Telegraf configuration file (usually located at /etc/telegraf/telegraf.conf
or /etc/telegraf/telegraf.d/your-config.conf
) and add the following:
[[inputs.http]]
urls = ["https://localhost/opcache.php"]
data_format = "json"
This configuration tells Telegraf to make an HTTP request to https://localhost/opcache.php
and interpret the response as JSON. Make sure to replace https://localhost/opcache.php
with the actual URL of your opcache.php
script.
Step 3: Visualize the Data in Grafana
Finally, we can visualize our OPcache stats in Grafana:
- In Grafana, add a new data source for your InfluxDB instance (if you haven’t done so already).
- Create a new dashboard.
- Add panels to your dashboard and select your InfluxDB data source.
- Now, you can create queries to visualize the OPcache data collected by Telegraf. For example, you might want to visualize
opcache_statistics.hits
,opcache_statistics.misses
, or any other stats exposed by theopcache_get_status()
function.
And that’s it! You’re now monitoring OPcache with Telegraf, InfluxDB, and Grafana. This setup will give you a continuous stream of data about your OPcache performance, and you can build Grafana dashboards to visualize and analyze this data in real time. Happy monitoring!