Добро пожаловать в наше руководство по установке Prometheus на CentOS 8/RHEL 8. Prometheus — это набор инструментов для мониторинга и оповещения временных рядов с открытым исходным кодом, первоначально разработанный в SoundCloud. Он имеет очень активное развитие и сообщество и получил широкое распространение во многих организациях и компаниях.
Prometheus — это инструмент мониторинга де-факто для собственных приложений и микросервисов в облаке. Вы не можете говорить о мониторинге инфраструктуры Docker и Kubernetes, не упоминая Prometheus. Для достижения полного контроля, оповещения и визуализации обычно устанавливается совместно с Grafana.
Если вам интересно сравнее Prometheus, Grafana и Graphite, то статья находится здесь.
Установка Prometheus
Шаг 1: Добавьте системного пользователя и группу для Prometheus
Давайте начнем установку Prometheus на RHEL 8, создав отдельного пользователя, который будет запускать и управлять сервисом Prometheus. Это системный пользователь, который не имеет доступа к логину консоли/оболочки.
groupadd --system prometheus useradd -s /sbin/nologin --system -g prometheus prometheus
Обратите внимание, что у этого пользователя нет оболочки /bin/bash, поэтому мы использовали -s /sbin/nologin.
Шаг 2: Установите NTP-сервер
Чтобы избежать смещения времени, настройте NTP-сервер на сервере Prometheus для обеспечения точного времени.
О том как настроить, вы можете прочитать здесь
Шаг 3: Создайте каталог данных для Prometheus
После создания пользователя и группы системы перейдите к созданию каталога, который будет использоваться для хранения данных Prometheus. Это включает в себя показатели, полученные от отслеживаемых агентов.
mkdir -p /app/prometheus
Шаг 4. Создайте каталоги конфигурации для Prometheus
Каталог первичных файлов конфигурации Prometheus — это / etc / prometheus / . Он будет иметь несколько подкаталогов: rules, rules.d, files_sd.
mkdir -p /etc/prometheus/rules mkdir -p /etc/prometheus/rules.d mkdir -p /etc/prometheus/files_sd
Шаг 5. Загрузим Prometheus для CentOS 8/RHEL 8
Нам нужно скачать последний выпуск архива Prometheus и распаковать его, чтобы получить двоичные файлы. Вы можете проверить релизы Prometheus на странице Github.
Вы можете использовать curl или wget для загрузки из командной строки.
cd /app wget https://github.com/prometheus/prometheus/releases/download/v2.16.0-rc.0/prometheus-2.16.0-rc.0.linux-amd64.tar.gz
Распакуем архив:
tar -xvf prometheus-2.16.0-rc.0.linux-amd64.tar.gz
Скопируем бинарные файлы promtool и prometheus из каталога который мы распаковали, в каталог для запуска бинарных файлов /usr/local/bin:
cd prometheus-2.16.0-rc.0.linux-amd64/ cp prometheus /usr/local/bin/ cp promtool /usr/local/bin/
Скопируем каталог console_libraries и consoles в созданный нами каталог для конфиг файлов /etc/prometheus
cp -r console_libraries/ /etc/prometheus/ cp -r consoles/ /etc/prometheus/
Скопируем файл tsdb в /app/prometheus, а каталог с распакованными файлами и архив удалим.
cp tsdb /app/prometheus cd .. ls rm -rf prometheus-2.16.0-rc.0.linux-amd64 prometheus-2.16.0-rc.0.linux-amd64.tar.gz
Шаг 6. Создайте файл конфигурации Prometheus.
Файл конфигурации Prometheus будет находиться в /etc/prometheus/prometheus.yml .
Создайте простой файл конфигурации, используя следующий пример:
#Global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. scrape_timeout: 15s # scrape_timeout is set to the global default (10s). #A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label job=<job_name> to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090']
Вы можете изменить первоначальные настройки по своему усмотрению.
Шаг 7. Создать системный сервисный модуль
Чтобы иметь возможность управлять службой Prometheus с помощью systemd, вам нужно явно определить этот файл модуля. Для этого создадим сервисный файл.
vim /etc/systemd/system/prometheus.service
Добавим следующее содержание в файл.
[Unit] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple Environment="GOMAXPROCS=2" User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/app/prometheus \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries \ --web.listen-address=0.0.0.0:9090 \ --web.external-url= \ SyslogIdentifier=prometheus Restart=always [Install] WantedBy=multi-user.target
В поле Environment=»GOMAXPROCS=2″ установим количество ядер процессора доступных нашей системе
Установите правильные разрешения каталогов
chown -R prometheus:prometheus /etc/prometheus/ chmod -R 755 /etc/prometheus/ chown -R prometheus:prometheus /app/prometheus/
Чтобы сервисный файл заработал перезагрузим демон systemctl и проверим статус сервиса, чтобы убедиться что приложение успешно запущенно.
systemctl daemon-reload systemctl start prometheus systemctl status prometheus
Шаг 8. Настройка фаерволла
В фаерволле откроем порт для доступа к Prometheus в нашем случае это 9090.
firewall-cmd --add-port=9090/tcp --permanent firewall-cmd --reload
Откройте Prometheus Server IP/имя хоста и порт 9090
Теперь у вас установлен Prometheus Server в системе CentOS 8/RHEL 8 Linux.