Grafana: Аннотации
Продолжаю попытки нормально пометить на графике дневное и ночное время. Описание предыдущих попыток можно почитать здесь. На этот раз, попробуем при помощи аннотаций. Основная идея: при помощи аннтотаций, на графике возможно помечать и подписывать определенные промежутки данных на графике. Аннотации можно добавлять из вне при помощи специального API.
Создадим ключ API:
Далее, необходимо узнать id дашборда (гаходится как orgId в url) и id панели дашборда, чтобы таргетировать аннотацию.
Далее наваяем небольшой скрипт на PHP, который положим в крон и будем выполнять ночью:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#!/usr/bin/php <?php $geo=21; // Код можно узнать здесь: https://xn--90acbu5aj5f.xn--p1ai/?page_id=6661 $api_key_grafana="Bearer eyJrIwedwediLCJpZCI6MX0="; $api_grafana_url="https://qwedqweai/api/annotations"; $dash_id=1; $panel_id=30; $offset=3*60*60; // смещение времени $ch = curl_init("https://yandex.ru/time/sync.json?geo=21"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $res=curl_exec($ch); curl_close($ch); $js=json_decode($res); if ($js==null){die("Не удалось получить данные для обработки");}; $DayFrom=$js->clocks->$geo->sunrise; $DayTo=$js->clocks->$geo->sunset; $dt=Date("Y-m-d"); echo "День $dt с $DayFrom по $DayTo\n"; $dtStart=(strtotime($dt." ".$DayFrom.":00")-$offset)."000"; $dtEnd=(strtotime($dt." ".$DayTo.":00")-$offset)."000"; $ch = curl_init($api_grafana_url); curl_setopt($ch, CURLOPT_HTTPHEADER, array( "Authorization: $api_key_grafana", "Content-Type: application/json" )); curl_setopt($ch, CURLOPT_POST, 1); $postd=[]; $postd["text"]="Дневное время"; $postd["dashboardId"]=$dash_id; $postd["panelId"]=$panel_id; $postd["time"]=$dtStart+0; $postd["timeEnd"]=$dtEnd+0; $postd["tags"]=["daytime"]; curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postd)); $res=curl_exec($ch); var_dump($res); ?> |
В результате на графике получим нечто подобное: