В Prometheus 2.1 добавлена конечная точка API для создания моментальных снимков, давайте посмотрим, как ее использовать.
Поскольку Prometheus в основном работает на одной машине, некоторые могут захотеть сделать резервные копии своих данных. В Prometheus 1.x это был медленный и нарушающий работу процесс, требующий полного перезапуска Prometheus. Хорошей новостью является то, что благодаря новому механизму хранения данных Prometheus 2.1 имеет гораздо лучший способ сделать это.
Чтобы воспользоваться им, необходимо включить конечные точки Admin API при запуске Prometheus:
1 | ./prometheus --storage.tsdb.path=data/ --web.enable-admin-api |
Затем вы можете использовать простой HTTP POST запрос, чтобы запросить снимок:
1 2 | curl -XPOST localhost:9090/api/v1/admin/tsdb/snapshot |
Здесь несколько секунд спустя он вернул имя нового снапшота в объекте JSON.
1 | {"status":"success","data":{"name":"20220914T114222Z-437862657a44775a"}} |
Если вы заглянете в каталог snapshots вашего каталога данных, то увидите этот снимок:
1 2 3 | ls .../data/prometheus/snapshots/ -1 20220914T114222Z-437862657a44775a |
Затем вы можете скопировать этот каталог в любое удобное для вас место.
Снимки состоят из ссылок существующих блоков и дампа текущих открытых блоков. Поскольку используются жесткие ссылки, снимки старых блоков не занимают дополнительного дискового пространства, так как на диске хранится только одна копия, однако вы можете сломать Prometheus, если измените их, их разрешения или их пользователя/группу. Когда вы закончите, вы можете rm -rf каталог снимка, поскольку, хотя снимок изначально занимает мало дополнительного дискового пространства, после удаления/уплотнения оригинального блока снимок будет тем, что сохраняет это дисковое пространство.
Чтобы использовать снимок, выполните команду --storage.tsdb.path указывающей на него.
к примеру
1 | ./prometheus --storage.tsdb.path=.../data/prometheus/snapshots/20220914T114222Z-437862657a44775a --web.enable-admin-api |