Prometheus
Prometheus4 — це система моніторингу з відкритим вихідним кодом і база даних часових рядів. Ви можете використовувати Prometheus з Istio для запису метрик, що відстежують стан Istio та застосунків у сервісній мережі. Ви можете візуалізувати метрики за допомогою таких інструментів, як Grafana5 та Kiali6.
Встановлення
Варіант 1: Швидкий старт
Istio надає базове демонстраційне встановлення для швидкого запуску Prometheus:
Це розгорне Prometheus у вашому кластері. Це призначено лише для демонстрації та не оптимізовано для продуктивності або безпеки.
Варіант 2: Налаштоване встановлення
Ознайомтесь з документацією Prometheus7, щоб почати розгортати Prometheus у вашому середовищі. Дивіться Конфігурацію для отримання додаткової інформації про конфігурацію Prometheus для збору даних про розгортання Istio.
Конфігурація
У мережі Istio кожен компонент надає точку доступу, яка публікує метрики. Prometheus працює шляхом збору даних з цих точок доступу. Це конфігурується через файл конфігурації Prometheus8, який контролює налаштування для яких точок доступу запитувати, порт і шлях запиту, налаштування TLS та інше.
Щоб зібрати метрики для всієї мережі, налаштуйте Prometheus для збору:
- Панель управління (
istiod
розгортання) - Ingress та Egress шлюзи
- Envoy sidecar
- Застосунки користувача (якщо вони публікують метрики Prometheus)
Щоб спростити конфігурацію метрик, Istio пропонує два режими роботи.
Варіант 1: Обʼєднання метрик
Щоб спростити конфігурацію, Istio має можливість повністю контролювати збору даних за допомогою анотацій prometheus.io
. Це дозволяє збору даних з Istio працювати з готовими конфігураціями, такими як ті, що надаються Helm stable/prometheus
9 чартами.
Цей варіант увімкнено стандартно, але його можна вимкнути, передавши
--set meshConfig.enablePrometheusMerge=false
під час встановлення10. Коли увімкнено, відповідні анотації prometheus.io
будуть додані до всіх контейнерів даних, щоб налаштувати збір даних. Якщо ці анотації вже існують, вони будуть перезаписані. За допомогою цього варіанту sidecar Envoy буде змішувати метрики Istio з метриками застосунків. Обʼєднані метрики будуть зібрані з :15020/stats/prometheus
.
Цей варіант експонує всі метрики у текстовому вигляді.
Ця функція може не відповідати вашим потребам у наступних ситуаціях:
- Вам потрібно збирати метрики за допомогою TLS.
- Ваш застосунок публікує метрики з такими ж назвами, як і метрики Istio. Наприклад, ваші метрики застосунку надають метрику
istio_requests_total
. Це може статися, якщо застосунок самостійно запускає Envoy. - Ваша установка Prometheus не налаштована для збору даних на основі стандартних анотацій
prometheus.io
.
Якщо потрібно, цю функцію можна вимкнути для кожного навантаження, додавши анотацію prometheus.istio.io/merge-metrics: "false"
до podʼа.
Варіант 2: Налаштовані конфігурації збору
Щоб налаштувати наявну установку Prometheus для збору статистики, згенерованої Istio, потрібно додати кілька завдань (job).
- Щоб зібрати статистику
Istiod
, можна додати наступне завдання для збору з його портуhttp-monitoring
:
- Щоб зібрати статистику Envoy, включаючи проксі sidecar та проксі шлюзів,
можна додати наступне завдання для збору з портів, що закінчуються на
-envoy-prom
:
- Для статистики застосунків, якщо Strict mTLS не увімкнено, ваша наявна конфігурація збору даних повинна продовжити працювати. В іншому випадку, Prometheus потрібно налаштувати для збору з сертифікатами Istio.
Налаштування TLS
Коли Istio налаштовано для використання взаємного TLS, Prometheus повинен бути налаштований для збору даних з використанням сертифікатів Istio.
Метрики панелі управління, шлюзу та sidecar Envoy будуть зібрані через незашифрований текст. Однак метрики застосунків слідуватимуть будь-якій політиці автентифікації Istio11, яка була налаштована для навантаження.
- Якщо ви використовуєте режим
STRICT
, то Prometheus потрібно налаштувати для збору даних з використанням сертифікатів Istio, як описано нижче. - Якщо ви використовуєте режим
PERMISSIVE
, навантаження зазвичай приймає TLS і незашифрований текст. Однак, Prometheus не може надсилати спеціальний варіант TLS, який вимагає Istio для режимуPERMISSIVE
. Як результат, ви не повинні налаштовувати TLS у Prometheus. - Якщо ви використовуєте режим
DISABLE
, для Prometheus не потрібно налаштовувати TLS.
Один зі способів надати сертифікати Istio для Prometheus — це впровадження sidecar, який буде ротувати сертифікати SDS і виводити їх у том, який можна розділити з Prometheus. Однак, sidecar не повинен перехоплювати запити для Prometheus, оскільки модель прямого доступу до точок доступу Prometheus несумісна з моделлю проксі sidecar Istio.
Щоб досягти цього, налаштуйте зміну тома сертифікатів в контейнері сервера Prometheus:
Тоді додайте наступні анотації до шаблону podʼа розгортання Prometheus і розгорніть його з інʼєкцією sidecar13. Це налаштовує sidecar для запису сертифіката у спільний том, але без налаштування перенаправлення трафіку:
Нарешті, налаштуйте контекст TLS для завдання збору:
Найкращі практики
Для більших мереж розширена конфігурація може допомогти Prometheus масштабуватися. Дивіться Використання Prometheus для моніторингу в промисловому масштабі для отримання додаткової інформації.