Предложение в другом ответе может быть хорошим шагом вперед. Спасибо @vinodk.
Спросив многих разработчиков на эту тему, я наконец нашел достаточно хорошее решение. Итак, если у вас есть какие-либо улучшения, пожалуйста, опубликуйте их.
Решение, которое я выбрал до сих пор:
- Используйте Prometheus в качестве источника измерений доступности. Прометей нужен в любом случае для регулярного мониторинга.
- Чтобы предотвратить потерю данных мониторинга при сбое образа или узла Docker, сопоставьте том данных с внешним файловым хранилищем, например S3.
- Используйте панель инструментов Grafana, чтобы настроить запрос, что именно нужно. Таким образом, вы можете указать временной диапазон, легенду и т. Д.
- С помощью панели Grafana для экспорта данных в CSV.
Вот пример: в Grafana сначала создайте источник данных Prometheus, затем добавьте панель, см. Шаги ниже. Затем вы можете легко экспортировать данные в Excel, выбрав раскрывающийся список рядом с заголовком панели> еще> Экспорт в CSV. Важно, чтобы у вас был минимальный шаг, достаточно большой.
А как насчет альтернатив?
1) Сохранять результаты Prometheus в удаленной базе данных и запрашивать их отдельно. Это немного излишне - просто получать проценты доступности за месяц.
2) Создание очень простого приложения Spring Boot, которое периодически восстанавливает работоспособность и сохраняет ее в базе данных. Мне потребовался целый день, чтобы создать такое решение (в основном, модульное тестирование ;-). Лучше сделать запрос к Прометею, используя такой запрос:
http://localhost:9090/api/v1/query_range?query=avg_over_time(up[1h])*100&start=2019-10-19T09:20:00.000Z&end=2019-10-19T10:00:00.000Z&step=10m
3) Вы можете использовать инструмент «Телеграф», который занимает меньше места в памяти. Он может хранить данные в InfluxDb. Мне нравится решение / архитектура / стандарт Prometheus для мониторинга, поэтому этот вариант не подходит в моем случае.
4) Мы используем Spring Boot для наших приложений. Spring Boot Admin неприменим, поскольку он только смотрит на текущую ситуацию и не сохраняет результаты.