LINUX.ORG.RU

Графическое отображение графиков, таблиц и т.п.

 


0

1

Есть консольная программа, которая получает некие данные с устройств. Пока она только пишет эти данные в лог. Но хорошо бы сделать динамическое графическое отображение текущих данных для оператора. В виде таблиц значений, графиков и т.п.

Исходники принимающей программы есть, ее можно свободно править, но нет ресурсов, чтобы писать к ней самодельный пользовательский графический интерфейс.

Что можно взять стороннее для взаимодействия? Какой-нибудь сторонний софт, которому можно динамически передавать данные для отрисовки?

Все это должно быть бесплатное и open source, работать, естественно, под Linux.


Это типичная задача для системы мониторинга. Обратитесь к системному администратору и спросите, что он использует. Там наверняка есть способ завести ещё один источник данных, ваше приложение. Если админ это вы и системы мониторинга у вас нет, то а) заведите её (не знаете какую — выбирайте Prometheus+Grafana, они самые модные); б) таким образом задача сведена к предыдущей.

ugoday ★★★★★
()

Очевидное решение - добавить WWW-интерфейс и отображать графику в браузере. В вашу программу добавить выдачу текущих данных через http по запросу (встроенный http-сервер).
Ну или использовать rrdtool или писать в БД, а потом строить Вэб-интерфейс по данным в БД.

sigurd ★★★★★
()
Ответ на: комментарий от sigurd

Я некоторое время назад решал аналогичную задачу, добавив в свою программу встроенный www-сервер https://github.com/civetweb/civetweb и отображал анимированные графики через flotcharts - http://www.flotcharts.org/flot/examples/realtime/index.html

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)

Не понимаю, почему советуют prometheus. Это вообще для другого. А так - да, Grafana для визуализации почти стандарт.

Нужно складывать данные с устройств в какую-то БД, которую умеет Grafana. Текущий список https://grafana.com/docs/grafana/latest/datasources/#built-in-core-data-sources

И потом в самой графане настроить визуализацию из этого источника. Это может быть не очень просто, у них слабая документация, придется гуглить

Еще один вариант: эластик + Kibana. Но это совсем на любителя, и сейчас у эластика не совсем open source лицензия, так что есть некоторые риски

anonymous
()
Ответ на: комментарий от Jurik_Phys

gnuplot хорошо подойдет, если достаточно сгенерировать картинку, и потом ее отобразить (в браузере или где еще там).

Если нужна интерактивность, то без Grafana не обойтись, как мне кажется.

blex ★★
()
Ответ на: комментарий от anonymous

Не понимаю, почему советуют prometheus.

кладывать данные с устройств в какую-то БД, которую умеет Grafana

БД, которую умеет Grafana и которая умеет хранить временные серии, называется Prometheus. Привет.

Еще один вариант: эластик

Вы зачем человека плохому учите? Elasticsearch создан для полнотекстового поиска. Это вообще другая задача.

ugoday ★★★★★
()
Ответ на: комментарий от ugoday

В Prometheus используется другая модель:

Prometheus uses a pull model to scrape metrics from the targets that expose an HTTP endpoint

То есть ТС нужно будет поднять веб-сервер, который будет отдавать метрики, а Prometheus время от времени будет ходить на этот веб-сервер и забирать метрики.

Судя по тому, что написал ТС, у него противоположная модель, push-model, он сам собирает метрики и складывает их в лог.

Возможно, он поехавший захочет сделать как советуют в интернетах, но на этом пути его ждет куча приключений. Вот эта связка Prometheus+Grafana глючит, при апдейтах постоянно какие-то проблемы.

Если он будет складывать в классическую СУБД, в тот же постгрис, то у него будет больше гибкости. Когда надоест графана (а она, скажем прямо, не так уж хороша), сможет визуализировать не только ей, а хотя бы тем же matplotlib. Или напишет что-то свое.

Elasticsearch создан для полнотекстового поиска. Это вообще другая задача.

Понятно. Вы, похоже, вообще от современных подходов далеки. Наберите в гугле elastic kibana, если интересно, почитайте.

anonymous
()
Ответ на: комментарий от anonymous

Понятно. Вы, похоже, вообще от современных подходов далеки

Вот и поговорил.

Наберите в гугле elastic kibana,

У меня 12 кластеров Opensearch под контролем. Советовать его или elasticsearch для задачи автора может только вредитель.

То есть ТС нужно будет поднять веб-сервер, который будет отдавать метрики,

Это называется prometheus-exporter, штатная загогулина делается легко и непринуждённо.

связка Prometheus+Grafana глючит,

Попробуйте привязать к ногам пудовые гири и висеть на турнике каждый день по 10-15 минут.

ugoday ★★★★★
()