Set Up Composer and Google API Client Library
- If not already set up, use Composer to install Google API Client Library for PHP. This library will simplify our interaction with Google Cloud Monitoring API.
- Run the following command to install the library:
composer require google/cloud-monitoring
Configure Authentication
- Google Cloud services require authentication via a service account. Ensure that you have the JSON key file for your service account.
- Set the environment variable for Google application credentials. You can do so by executing the following command in your terminal:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your-service-account-file.json"
Initialize the Google Cloud Monitoring Client
- Use the client library to initialize a Google Cloud Monitoring client:
require 'vendor/autoload.php';
use Google\Cloud\Monitoring\V3\MetricServiceClient;
use Google\Cloud\Monitoring\V3\ListTimeSeriesRequest;
$projectId = 'your-google-cloud-project-id';
// Create a MetricService client
$client = new MetricServiceClient();
Setting Up Monitoring Parameters
- Define the required parameters like the project name, the metric type you want to monitor, along with the interval you are interested in querying:
$projectName = $client->projectName($projectId);
$metricType = 'compute.googleapis.com/instance/cpu/usage_time';
$intervalStart = strtotime('-1 day');
$intervalEnd = time();
Query Google Cloud Monitoring API
- Use the parameters defined to get time series data from Google Cloud Monitoring API:
try {
$interval = new Google\Cloud\Monitoring\V3\TimeInterval([
'start_time' => (new DateTime())->setTimestamp($intervalStart)->format('c'),
'end_time' => (new DateTime())->setTimestamp($intervalEnd)->format('c')
]);
$request = (new ListTimeSeriesRequest())
->setName($projectName)
->setFilter(sprintf('metric.type="%s"', $metricType))
->setInterval($interval)
->setAggregation(new Google\Cloud\Monitoring\V3\Aggregation([
'alignmentPeriod' => new Google\Protobuf\Duration(['seconds' => 3600]),
'perSeriesAligner' => Google\Cloud\Monitoring\V3\Aggregation\Aligner::ALIGN_RATE
]));
foreach ($client->listTimeSeries($request) as $element) {
printf("Time Series: %s" . PHP_EOL, $element->getMetric()->serializeToJsonString());
}
} catch (Exception $e) {
printf("Error: %s" . PHP_EOL, $e->getMessage());
}
Handle API Response
- Iterate through the response data and take actions as required for your application.
- Handle any exceptions that may occur during API calls or data processing to ensure robustness.
By following these structured steps, you will be able to integrate the Google Cloud Monitoring API into your PHP application to monitor and extract metrics effectively. Remember to continuously update your script to align with any updates from the API or library.