Система за наблюдение Prometheus
Тъй като системите и приложенията стават все по-сложни, мониторингът е от съществено значение за осигуряване на оптимална производителност, надеждност и мащабируемост. Prometheus, набор от инструменти за мониторинг и сигнализиране с отворен код, се превърна в едно от най-популярните решения за управление и визуализиране на метриките от различни системи. Първоначално разработен от SoundCloud, Prometheus вече е проект на Cloud Native Computing Foundation (CNCF) и има широко разпространение в различни индустрии.
В тази статия ще разгледаме основните характеристики на Prometheus, как работи и стъпките, необходими за настройването му за мониторинг на вашата инфраструктура и приложения.
Какво представлява Prometheus?
Prometheus е мощна система за мониторинг, предназначена за събиране, съхраняване и търсене на данни за времеви редове, които представляват измервания или събития, проследявани във времето. Данните, събрани от Prometheus, могат да бъдат визуализирани, анализирани и използвани за задействане на предупреждения, като помагат на екипите да бъдат в течение на състоянието и производителността на инфраструктурата си.
Prometheus е известен с няколко ключови функции:
- Модел на данни с времеви редове: Prometheus съхранява данни като времеви редове, което означава, че метриките се записват през интервали от време.
- Мониторинг на базата на изтегляне: Вместо наблюдаваните системи да изпращат метрики към сървъра, Prometheus използва модел, базиран на изтегляне, за да извлича метрики от крайните точки.
- Мощен език за заявки (PromQL): Prometheus предоставя мощен език за заявки, PromQL, който позволява на потребителите да филтрират и обобщават метрики в реално време.
- Предупреждение: Prometheus се интегрира с Alertmanager за дефиниране на правила и изпращане на известия, когато са изпълнени определени условия.
- Откриване на услуги: Prometheus може автоматично да открива и събира метрики от динамично променящи се среди, като Kubernetes.
Как работи Prometheus
Prometheus следва проста, но надеждна архитектура, предназначена за наблюдение на данни с времеви редове. Ето как работи:
- Събиране на метрични данни (Scraping): Prometheus периодично събира метрики от крайни точки по HTTP (наричани износители), изложени от приложения или системи.
- Съхраняване на данни за времеви редове: След като бъдат събрани, Prometheus съхранява метриките в база данни с времеви редове, където всяка точка от данни е свързана с времева марка и набор от етикети.
- Запитване с PromQL: Потребителите могат да правят заявки за съхраняваните метрики, като използват езика за заявки на Prometheus, PromQL, за да генерират графики, табла или предупреждения.
- Подаване на сигнали: Въз основа на предварително определени условия Prometheus може да задейства предупреждения с помощта на Alertmanager, който може да изпраща известия по имейл, Slack, PagerDuty или други услуги.
Prometheus поддържа модел, базиран на изтегляне, при който периодично извлича метрики от крайни точки, които излагат метрики във формат, разбираем за Prometheus. Това го прави идеален за мониторинг на разпределени системи и микроуслуги, при които мащабирането и динамичните среди са често срещани.
Компоненти на Prometheus
Prometheus се състои от няколко основни компонента, всеки от които има различна цел:
- Prometheus Server: Централният компонент, който отговаря за събирането, съхраняването и търсенето на метрики. Той изстъргва целевите крайни точки и съхранява метриките в база данни с времеви редове.
- Износители: Това са приложения или услуги, които излагат метрики в съвместим с Prometheus формат. Обичайните износители включват:
- Експортьор на възли: Събира метрики на ниво хардуер и операционна система.
- Експортер на черна кутия: За изследване на крайни точки по HTTP, DNS, TCP и др.
- Специфични за приложението износители: Много бази данни (като PostgreSQL, MySQL) и услуги имат свои собствени износители.
- Alertmanager (Мениджър за предупреждение): Prometheus използва Alertmanager за обработка на сигнали. Той може да насочва сигналите към различни получатели, като Slack, имейл или SMS, и да управлява правила за заглушаване и блокиране.
- PromQL (Prometheus Query Language): Мощен език за заявки, използван за извличане и манипулиране на данни от времеви редове.
- Pushgateway: Компонент, използван за ефимерни или краткотрайни задачи, които не могат да разкрият метрики чрез директно остъргване (напр. пакетни задачи). Pushgateway позволява на тези задачи да изпращат своите метрики към Prometheus.
- Grafana: Въпреки че не е част от самия Prometheus, Grafana е популярен инструмент с отворен код, използван за визуализиране на данни от Prometheus и създаване на интерактивни табла за управление.
Стъпка по стъпка за настройка на Prometheus
Ето как можете да настроите Prometheus на Linux сървър и да започнете да наблюдавате системните показатели:
Стъпка 1: Инсталиране на Prometheus
- Изтеглете Prometheus: Изпълнете следните команди, за да изтеглите и екстрахирате Prometheus: Посетете страницата за изтегляния на Prometheus, за да изтеглите най-новата версия на Prometheus:wget https://github.com/prometheus/prometheus/releases/download/v2.32.1/prometheus-2.32.1.linux-amd64.tar.gz tar -xvf prometheus-2.32.1.linux-amd64.tar.gz cd prometheus-2.32.1.linux-amd64
- Стартирайте Prometheus: Изпълнете следната команда, за да стартирате Prometheus:./prometheus –config.file=prometheus.yml
По подразбиране Prometheus работи на порт 9090 и можете да получите достъп до уеб интерфейса му, като отидете на http://localhost:9090 в браузъра си.
Стъпка 2: Конфигуриране на Prometheus
Основната конфигурация на Prometheus се извършва чрез файла prometheus.yml. Този файл указва на Prometheus кои цели (износители) да остъргва и колко често.
Ето една основна конфигурация на файла prometheus.yml:
Можете да добавите още цели или износители, ако е необходимо, и Prometheus автоматично ще започне да ги скрепи.
Стъпка 3: Инсталиране на износителя на възли (за системни показатели)
За да наблюдавате системните показатели, като например използването на процесора, паметта, диска и мрежата, можете да инсталирате Node Exporter.
- Изтеглете Node Exporter:wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64
- Стартиране на Node Exporter: Изпълнете следната команда, за да стартирате Node Exporter:./node_exporter
По подразбиране Node Exporter се стартира на порт 9100 и разкрива показатели като използване на процесора, статистика на паметта, дискови входно-изходни операции и мрежови показатели.
- Конфигуриране на Prometheus за остъргване на Node Exporter: Добавете следната задача към конфигурационния файл prometheus.yml:scrape_configs: – job_name: ‘node_exporter’ static_configs: – цели: [‘localhost:9100’]
- Рестартирайте Prometheus: След като направите промени в конфигурационния файл, рестартирайте Prometheus, за да започнете да събирате метрики от Node Exporter.
Стъпка 4: Визуализиране на метриките с Grafana
За да визуализирате метриките на Prometheus, Grafana е отличен инструмент. Той се интегрира безпроблемно с Prometheus и ви позволява да създавате интерактивни информационни табла.
- Инсталирайте Grafana: На Linux можете да инсталирате Grafana, като следвате инструкциите на уебсайта Grafana.
- Конфигурирайте Prometheus като източник на данни: След като инсталирате Grafana:
- Влезте в Grafana (http://localhost:3000).
- Отидете в Configuration (Конфигурация) > Data Sources (Източници на данни) и добавете Prometheus като източник на данни (http://localhost:9090).
- Създайте табла за управление: Сега можете да създавате свои собствени табла за управление или да импортирате предварително създадени табла за управление от пазара на Grafana, за да визуализирате показатели като използване на процесора, използване на паметта, производителност на диска и др.
Стъпка 5: Настройте сигнали
Prometheus ви позволява да конфигурирате предупреждения въз основа на конкретни условия, като например високо използване на процесора, малко дисково пространство или сривове на приложението.
- Дефинирайте правила за алармиране: Сигналите се дефинират в отделен файл rules.yml. Ето едно примерно правило за предупреждение, което се задейства, когато използването на процесора е по-високо от 80%:име: example_alerts правила: – alert: HighCPUsage expr: 100 – (avg by(instance) (rate(node_cpu_seconds_total{mode=”idle”}[5m])) * 100) > 80 for: 5m етикети: сериозност: предупреждение анотации: резюме: “High CPU usage detected on {{ $labels.instance }}” описание: “Използването на процесора е над 80% за повече от 5 минути.”
- Конфигуриране на Alertmanager: Инсталирайте и конфигурирайте Alertmanager, за да изпраща известия по имейл, Slack или други канали, когато се задейства предупреждение.
Случаи на употреба за Prometheus
Prometheus се използва в широк спектър от сценарии за наблюдение на различни видове системи, включително:
- Мониторинг на инфраструктурата: Събиране на метрики от сървъри, бази данни и мрежови устройства, за да се гарантира, че инфраструктурата ви работи безпроблемно.
- Мониторинг на приложения: Проследяване на показатели за производителност като латентност, честота на заявките, процент на грешки и потребление на ресурси за приложения, особено в архитектури на микроуслуги.
- Наблюдение на Kubernetes: Prometheus се интегрира нативно с Kubernetes и може автоматично да открива и извлича метрики от капсули и услуги в клъстер на Kubernetes.
- Потребителски метрики: Prometheus ви позволява да инструментализирате собствените си приложения, за да разкриете потребителски метрики, предоставяйки дълбока информация за специфичното поведение на приложенията.
Заключение
Prometheus е мощно и гъвкаво решение за мониторинг, което позволява събиране на данни в реално време, извършване на справки и предупреждаване въз основа на данни от времеви редове. Независимо дали наблюдавате метрики на системно ниво или производителността на приложения в архитектура на микросървиси, Prometheus е ценен инструмент за осигуряване на здравето и стабилността на вашата инфраструктура.
Като следвате стъпките, описани в тази статия, можете да започнете работа с Prometheus, да събирате метрики от вашите системи и да визуализирате тези метрики с помощта на Grafana. С течение на времето Prometheus може да ви помогне да придобиете представа за тенденциите в производителността, да откриете аномалии и да реагирате бързо на инциденти, като подобрите както времето за работа, така и надеждността на системата.