Системное администрирование / Munin: Мониторинг Rackspace Storage

в 12:28, , рубрики: CDN, munin, rackspace, метки: , ,

Добрый день!

Мы храним картинки в CDN от Rackspace. Поставлена задача: выводить графики использования CDN, а именно количество объектов и занимаемое пространство.

Как по мне, лучший инструмент для выведения такого рода грфиков — Munin. Очень легко написать для него плагин на практически любом языке, да и данные можно выводить как угодно.

Я написал 2 плагина к Munin, которые по Rackspace API могут вам указать сколько у вас в сторадже файлов ну и их общий размер.

Плагин №1: rackspace_cdn_count.php

#!/usr/bin/php
<?php
$x_auth_user='###NAME';
$x_auth_key='###KEY';
$api_url='https://auth.api.rackspacecloud.com/v1.0/';

function SplitTwice($content,$first,$second) {
$s1=split($first,$content);
$splitted=split($second,$s1[1]);
return trim($splitted[0]);
}

if ($argv[1]=='config'){
print "graph_title Rackspace CDN files countn";
print "graph_vlabel Files Countn";
print "graph_category rackspacen";
print "count.label files countn";
print "graph_args --base 1000n";

exit;
}

$header_auth = array("X-Auth-User:$x_auth_user","X-Auth-Key:$x_auth_key");

//Authentication
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_auth);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$data = curl_exec($ch);
curl_close($ch);

$cdn_url= SplitTwice($data,'X-Storage-Url: ','Cache');
$token= SplitTwice ($data,'X-Auth-Token:','X-Storage-Token:');

$header_cdn = array ("X-Auth-Token:$token");

//Get data
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, $cdn_url);
curl_setopt($ch1, CURLOPT_HEADER, true);
curl_setopt($ch1, CURLOPT_HTTPHEADER, $header_cdn);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, 30);
$data1 = curl_exec($ch1);
curl_close($ch1);

$objects_count = SplitTwice($data1,'X-Account-Object-Count:','X-Account-Bytes-Used:');
$objects_bytes_used = SplitTwice ($data1,'X-Account-Bytes-Used:','X-Account-Container-Count:');

echo 'count.value '.$objects_count;

?>

Плагин №2: rackspace_cdn_size.php
#!/usr/bin/php
<?php
$x_auth_user='###NAME';
$x_auth_key='###KEY';
$api_url='https://auth.api.rackspacecloud.com/v1.0/';

function SplitTwice($content,$first,$second) {
$s1=split($first,$content);
$splitted=split($second,$s1[1]);
return trim($splitted[0]);
}

if ($argv[1]=='config'){
print "graph_title Rackspace CDN storage usagen";
print "graph_vlabel CDN storage usagen";
print "graph_category rackspacen";
print "usage.label storage usagen";
print "graph_args --base 1024n";

exit;
}

$header_auth = array("X-Auth-User:$x_auth_user","X-Auth-Key:$x_auth_key");

//Authenticate
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_auth);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
$data = curl_exec($ch);
curl_close($ch);

$cdn_url= SplitTwice($data,'X-Storage-Url: ','Cache');
$token= SplitTwice ($data,'X-Auth-Token:','X-Storage-Token:');

$header_cdn = array ("X-Auth-Token:$token");

//Get data
$ch1 = curl_init();
curl_setopt($ch1, CURLOPT_URL, $cdn_url);
curl_setopt($ch1, CURLOPT_HEADER, true);
curl_setopt($ch1, CURLOPT_HTTPHEADER, $header_cdn);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, 30);
$data1 = curl_exec($ch1);
curl_close($ch1);

$objects_bytes_used = SplitTwice ($data1,'X-Account-Bytes-Used:','X-Account-Container-Count:');

echo 'usage.value '.$objects_bytes_used;

?>

Выглядит сабж вот так:
image

Ожидаемый результат — кривая увеличения количества объектов и их объёма.

Автор: korjik


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js