Dart: формат даты

В Dart дату к любому строчному формату можно привести при помощи функции DateFormat. Например как-то так:

import 'package:intl/intl.dart';
DateTime now =DateTime.now();
DateFormat formatter = DateFormat('dd.MM.yyyy');
final String formatted = formatter.format(now);

Grafana: правильное выставление времени на графике

К сожалению так и не смог докопаться до истины, почему при отображении графика на панели, время сбивается в непонятные значения +3 часа. Хотя и в настройках панели и в настройках отображения везде установлено руками UTC+3. Пришлось решать проблему кардинально, изменив время в запросе:

SELECT CONVERT_TZ(m_data.dt,'+00:00','-03:00') as dt ,CAST(m_data.value as int) as 'Mikrotik'  FROM m_data.m_data 
WHERE m_data.place=10 and m_data.source=12 and m_data.value_type=1 order by dt limit 500

Microtik: включение API и вывод уровня сигнала wifi соеднинений

Вывести уровни сигнала соединений:

/interface wireless registration-table> print

Включить сервис API:

/ip service> enable 5

Grafana: доступ к просмотру дашбоарда или панели без авторизации

Grafana после некоторой настройки позволяет «расшаривать» дашборды и панели для просмотра для не авторизированных пользователей. Для этого в файле настройки /etc/grafana/grafana.ini необходимо найти секцию auth.anonymous и установить enabled=true:

[auth.anonymous]
# enable anonymous access
enabled = true

После чего необходимо перезапустить сервер:

service grafana-server restart

Grafana: отображение времени пинга

К сожалению Grafana не хранит данные, и сама опрашивать ничего не умеет. Она может лишь красиво нарисовать картинку на основании данных из какого то источника. Посему сначала сделаем скрипт, который ложит данные о пинге в БД MySQL:

#!/bin/sh
time=ping 192.168.10.100 -c 1 | grep time= | awk '{print $7}' | awk -F '=' '{print $2}'
mysql -ulogin -pparol -e "use m_data;insert into graf_ping (ip,value) values ('192.168.10.100',$time)"

Структура таблицы БД:

CREATE TABLE graf_ping (
id int(11) NOT NULL,
dt datetime NOT NULL DEFAULT current_timestamp(),
ip text COLLATE utf8_bin NOT NULL,
value int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

Поместим выполнение этого скрипта например в крон, и далее настроим отображение на стороне Grafana:

Добавим «отсечку» 200мл, «красная линия»:

И чуть сгладим линии:

В результате можно получить нечто такое:

1 7 8 9 10 11 59