Серверы AMD EPYC 9354 — от 27000 ₽ в месяц или 45 ₽ в час ⭐ 64 ядра, 2.0 ГГц / 384 ГБ RAM / 2× 1.92 TБ SSD

22.09.2023

Мониторинг SSL-сертификатов oVirt

server one
HOSTKEY
Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

Автор: Степан Вахета, специалист отдела DevOps компании Hostkey

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

В прошлых статьях мы описывали варианты использования Prometheus + Alertmanager + Node Exporter и HTTP и SSL через Prometheus blackbox_exporter.

Сегодня речь пойдет о мониторинге сертификатов в локальном хранилище двух основных компонентов oVirt: oVirt Engine и oVirt Node. Именно посредством этих сертификатов происходит взаимодействие между данными компонентами.

  • oVirt Engine — это центральный компонент управления, который контролирует все хосты виртуализации, общие дисковые ресурсы и виртуальные сети.
  • oVirt Node — это компонент, установленный на каждом отдельном хосте, который управляет всеми ресурсами этого хоста и запущенными на нем виртуальными машинами.

В зависимости от архитектуры ноды oVirt могут объединяться в кластеры. При этом важно поддерживать высокий уровень надежности взаимодействия между компонентами системы.

Коммуникация между oVirt Engine и хостами oVirt осуществляется по зашифрованному SSL-соединению, основанному на сертификатах этих компонентов. В зависимости от версии oVirt срок действия этих сертификатов может отличаться: до версии 4.5 он составлял 398 дней, а начиная с версии 4.5 увеличен до 5 лет.

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

Лучшее решение проблемы — не допустить ее возникновения. Соответственно, мы будем собирать необходимые метрики с помощью SSL Exporter — он позволяет назначать для сбора метрик целевой параметр в виде локальных файлов, что отлично подходит для решения нашей задачи.

После установки и запуска экспортера необходимо определить целевые параметры (таргеты) для каждого из компонентов системы. Согласно документации интересующие нас сертификаты для каждого из компонентов расположены по следующим путям:

  • для ovirt-engine — /etc/pki/ovirt-engine;
  • для ovirt-host — /etc/pki/vdsm/ и /etc/pki/libvirt/.

Данный экспортер имеет возможность поиска и выборки по множеству файлов одновременно (при помощи пакета doublestar), в запросе мы будем использовать именно его.

Целевой параметр для oVirt Engine:

http://<engine_address>:9219/probe?module=file&target=/etc/pki/ovirt-engine/**/**.pem

Целевой параметр для oVirt Hosts:

http://<node_address>:9219/probe?module=file&target=/etc/pki/vdsm/**/**.pem
http://<node_address>:9219/probe?module=file&target=/etc/pki/libvirt/**/**.pem

Пример выборки собранных метрик:

Затем необходимо описать конфигурацию для Prometheus и добавить ее в базу. Для наглядности разделим ее по job_name при последующей визуализации в панели AlertManager:

/etc/prometheus/prometheus.yml

- job_name: ssl_file_engine
metrics_path: /probe
params:
	module:
	- file
	target:
	- /etc/pki/ovirt-engine/**/**.pem
static_configs:
- targets:
	- engine_address:9219
	- engine_address:9219

- job_name: ssl_file_vdsm_node
metrics_path: /probe
params:
	module:
	- file
	target:
	- /etc/pki/vdsm/**/**.pem
static_configs:
- targets:
	- node_address:9219
	- node_address:9219

- job_name: ssl_file_libvirt_node
metrics_path: /probe
params:
	module:
	- file
	target:
	- /etc/pki/libvirt/**/**.pem
static_configs:
- targets:
	- node_address:9219
	- node_address:9219

Далее необходимо описать конфигурационный файл с правилами для срабатывания алертов. Нас будет интересовать дата окончания срока действия сертификата.

Добавим правило, которое будет срабатывать за 70 и менее дней до истечения срока действия сертификата.

ssl_file_engine.yml

groups:
- name: ssl_file_engine
	rules:
	- alert: SSLCertExpiringSoon
	expr:  ssl_file_cert_not_after{job="ssl_file_engine"} - time() < 86400 * 70
	for: 10m
	labels:
		severity: critical
	annotations:
		description: "SSL certificate will expire in {{ $value | humanizeDuration }} (instance {{ $labels.instance }}) (instance {{ $labels.file }})"

ssl_file_libvirt_node.yml

groups:
- name: ssl_file_libvirt_node
	rules:
	- alert: SSLCertExpiringSoon
	expr:  ssl_file_cert_not_after{job="ssl_file_libvirt_node"} - time() < 86400 * 70
	for: 10m
	labels:
		severity: critical
	annotations:
		description: "SSL certificate will expire in {{ $value | humanizeDuration }} (instance {{ $labels.instance }}) (instance {{ $labels.file }})"

ssl_file_vdsm_node.yml

groups:
- name: ssl_file_vdsm_node
	rules:
	- alert: SSLCertExpiringSoon
	expr:  ssl_file_cert_not_after{job="ssl_file_vdsm_node"} - time() < 86400 * 70
	for: 10m
	labels:
		severity: critical
	annotations:
		description: "SSL certificate will expire in {{ $value | humanizeDuration }} (instance {{ $labels.instance }}) (instance {{ $labels.file }})"

При истечении заданного срока мы получим следующую визуализацию в панели AlertManager:

Подобный мониторинг позволяет предотвратить сбои в работе из-за несвоевременной замены SSL-сертификатов и обеспечивает стабильное функционирование виртуальной инфраструктуры. Благодаря нескольким простым действиям можно избежать проблемы, которая повлечет простой большого количества ресурсов.

Арендуйте выделенные и виртуальные серверы с моментальным деплоем в надежных дата-центрах класса TIER III в Москве и Нидерландах. Принимаем оплату за услуги HOSTKEY в Нидерландах в рублях на счет российской компании. Оплата с помощью банковских карт, в том числе и картой МИР, банковского перевода и электронных денег.

Другие статьи

21.05.2026

Как мы в отделе документации создали LLM агента для автоматизированного перевода с английского на другие языки

В статье рассказываем, как собрали собственного LLM-агента для перевода технической документации: с валидацией, сохранением Markdown и кода, Git-интеграцией и многошаговой проверкой качества.

19.05.2026

Как подключиться к S3 хранилищу: пошаговое руководство с примерами

Разбираем, как подключиться к S3-хранилищу HOSTKEY: где взять ключи, как настроить endpoint и какие инструменты выбрать для бэкапов, синхронизации, скриптов и работы через графический интерфейс.

15.05.2026

Индия хотела купить суперкомпьютер. Ей отказали. Она собрала свой

В конце 1980-х Индия попыталась купить суперкомпьютер Cray Y-MP, но США не выдали экспортную лицензию. Вместо этого в стране создали центр C-DAC и за три года собрали собственный суперкомпьютер PARAM 8000. Разбираем, как это получилось и почему отказ Cray в итоге сыграл Индии на руку.

13.05.2026

Что такое Облачное объектное хранилище S3 - Amazon Simple Storage Service

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

30.04.2026

OpenWebUI: System Prompt vs Skills vs MCP Tools — разбираем на живом примере валидации URL

System Prompt учит модель что говорить, Skills — как проверить сказанное, MCP Tools — как сделать это в реальном мире. Разбираем трёхуровневую архитектуру на примере бота техподдержки с валидацией ссылок.

Upload