Plotti.co: найпростіший микросервис для моніторингу графіків в реальному часі

Привіт, хабравчанин!

У цій замітці мова піде про Plotti.co — пекельно простому у використанні інструмент, який робить рівно одну річ, але робить її швидко і добре. Мова піде про онлайн-малювання графіків і їх оновлення в реальному часі.

Створення живих графіків на льоту, як мені здається, не є тією задачею, для вирішення якої потрібно спершу прочитати 10 сторінок документації, заплатити за підписку за $20 в місяць, а іноді — і те, і інше відразу. Так не можна. Не в 2016 році.

image

У Plotti.co клієнтська частина — це SVG-зображення, яке підписується за EventSource на джерело даних від сервера, і оновлює графік у відповідності з ними. Вона інтегрується в сторінку елементарно:

<object data="http://plotti.co/U0N5G5FQigwC/plot.svg" type="image/svg+xml"></object>


Так, це все. Тут U0N5G5FQigwC — це хеш картинки. Щоб картинка оновилася у всіх браузерах, в яких вона зараз відкрита, необхідно просто послати GET-запит за відповідною адресою. Наприклад,

wget "http://plotti.co/U0N5G5FQigwC?d=1.5,3.6,7.8 mbps" -O /dev/null



Значення змінних передаються в параметрі d і розділяються комами. Максимальне число змінних (і, відповідно, ліній на графіку) — 9; колір кожного з них фіксований. Якщо хочеться отримати лінію якогось конкретного кольору, можна пропустити потрібну кількість змінних перед нею (наприклад, ось так:
http://plotti.co/U0N5G5FQigwC?d=,,,,,,1.0
).

Проект зроблений за принципом «eat your dogfood», так що прямо на головній можна подивитися графік поточного завантаження процесора сервера, на якому він крутиться. Дані згодовуються в графік з допомогою нехитрого шелл-скрипта:

#!/bin/sh
while true; do
wget -O /dev/null -q http://plotti.co/lock/plottycocpu?d=`mpstat -P ALL 1 1 | awk '/Average:/ && $2 ~ /[0-9]/ {print $3}' | sort -r -g | xargs | sed s/\ /,/g`\%cpuload
done


P. S. Проект був написаний за два дні силами однієї людини і запущений на ARM-сервері від Scaleway за $3 на місяць, і при цьому майже пережив навалу юзерів Hacker News позавчора вночі (до 4 тис одночасних коннектов). Gevent FTW! Подальші дослідження показали, що використовувати інстанси Xeon у Vultr за $5 в місяць більше виправдано.
P. P. S. Проект опенсорсний, вітаються баг репорти і пулл реквесты!
P. P. P. S. Мопед не мій, а хорошої людини; я поки що в основному лише свічку тримав.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.