Как установить Prometheus на RHEL 8 / CentOS 8

Как установить Prometheus на RHEL 8 / CentOS 8

 

Добро пожаловать в наше руководство по установке Prometheus на CentOS 8 / RHEL 8. Prometheus — это набор инструментов для мониторинга временных рядов и оповещений с открытым исходным кодом, изначально разработанный в SoundCloud. Он очень активно развивается и пользуется популярностью у многих организаций и компаний.

Prometheus — это фактически инструмент мониторинга облачных приложений и микросервисов. Вы не можете говорить о мониторинге инфраструктуры Docker и Kubernetes, не упомянув Prometheus. Для достижения полного мониторинга, оповещения и визуализации обычно используется Grafana .

Ниже приведены шаги по установке инструмента мониторинга Prometheus на RHEL 8.

Шаг 1. Добавьте системного пользователя и группу для Prometheus

Давайте начнем установку Prometheus на RHEL 8 с создания специального пользователя, который будет запускать и управлять сервисом Prometheus. Это системный пользователь, у которого нет доступа к логину через консоль / оболочку.

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

Обратите внимание, что у этого пользователя нет оболочки / bin / bash, поэтому мы использовали  -s / sbin / nologin .

Шаг 2: Установите NTP-сервер

Чтобы избежать дрейфа времени, настройте сервер NTP на сервере Prometheus для обеспечения точного времени.

 

Как настроить NTP-сервер с помощью Chrony на RHEL / CentOS 8

Шаг 3: Создайте каталог данных для Prometheus

После создания системного пользователя и группы перейдите к созданию каталога, который будет использоваться для хранения данных Prometheus. Сюда входят показатели, полученные от отслеживаемых агентов.

sudo mkdir /var/lib/prometheus

Вы можете выбрать другой путь, например, отдельный раздел.

Шаг 4: Создайте каталоги конфигурации для Prometheus

Каталог основных файлов конфигурации Prometheus находится в  /etc/prometheus/ . В нем будет несколько подкаталогов.

for i in rules rules.d files_sd; do
 sudo mkdir -p /etc/prometheus/${i};
done

Шаг 5: Загрузите Prometheus на CentOS 8 / RHEL 8

Нам нужно скачать последнюю версию архива Prometheus и распаковать его, чтобы получить бинарные файлы. Вы можете проверить выпуски на  странице выпусков  Prometheus на Github .

Вы можете использовать curl или wget для загрузки из командной строки.

curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \
  | grep browser_download_url \
  | grep linux-amd64 \
  | cut -d '"' -f 4 \
  | wget -qi -

Извлеките файл и переместите его в каталог в вашем $ PATH

tar xvf prometheus-*.tar.gz
cd prometheus-*/
sudo cp prometheus promtool /usr/local/bin/

Также скопируйте консоли и console_libraries в каталог /etc/prometheus:

sudo cp -r consoles/ console_libraries/ /etc/prometheus/

Шаг 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: Создайте служебную единицу systemd

Чтобы иметь возможность управлять службой Prometheus с помощью systemd, вам необходимо явно определить этот файл модуля.

Создать файл

sudo vi /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=/var/lib/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

Замените 2 на количество vcpus на вашем сервере..

Установите правильные разрешения для каталога.

for i in rules rules.d files_sd; do
  sudo chown -R prometheus:prometheus /etc/prometheus/${i};
done
for i in rules rules.d files_sd; do
  sudo chmod -R 775 /etc/prometheus/${i};
done
sudo chown -R prometheus:prometheus /var/lib/prometheus/

Запустите сервис Prometheus.

sudo systemctl daemon-reload
sudo systemctl start prometheus

Проверка состояния с использованием systemctl status prometheus :

$ systemctl status prometheus.service 
 ● prometheus.service - Prometheus
    Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled)
    Active: active (running) since Fri 2019-01-11 00:36:17 EAT; 4min 44s ago
      Docs: https://prometheus.io/docs/introduction/overview/
  Main PID: 7576 (prometheus)
     Tasks: 9 (limit: 11510)
    Memory: 19.8M
    CGroup: /system.slice/prometheus.service
            └─7576 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.console.templat>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709504055Z caller=main.go:244 build_context="(go=go1.11.3, root@b>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709529058Z caller=main.go:245 host_details="(Linux 4.18.0-32.el8.x86_6>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709557341Z caller=main.go:246 fd_limits="(soft=1024, hard=4096)"
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709576706Z caller=main.go:247 vm_limits="(soft=unlimited, hard=unlimit>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.712203022Z caller=main.go:561 msg="Starting TSDB …"
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.712231744Z caller=web.go:429 component=web msg="Start listening for co>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.717664176Z caller=main.go:571 msg="TSDB started"
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.71771626Z caller=main.go:631 msg="Loading configuration file" filename>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.718015628Z caller=main.go:657 msg="Completed loading of configuration >
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.71803238Z caller=main.go:530 msg="Server is ready to receive web reque>

Шаг 8: Настройте firewalld

Я разрешаю доступ к порту интерфейса управления Prometheus 9090из моей доверенной сети, используя расширенные правила Firewalld.

sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" \
source address="192.168.122.0/24" port protocol="tcp" port="9090" accept'

sudo firewall-cmd --reload

Если вы хотите разрешить с любого IP-адреса, используйте:

sudo firewall-cmd --add-port=9090/tcp --permanent
sudo firewall-cmd --reload

Откройте IP-адрес сервера Prometheus / имя хоста и порт 9090.

Теперь у вас установлен Prometheus Server в системе CentOS 8 / RHEL 8 Linux.