Установка сервера Prometheus в Ubuntu 20.04 / 18.04 | Debian 10/9

Установка сервера Prometheus в Ubuntu 20.04 / 18.04 | Debian 10/9

 

Как установить Prometheus на Ubuntu 20.04 / 18.04 и Debian 10/9 Linux ?. Prometheus — это инструмент мониторинга, предназначенный для записи показателей в реальном времени в базу данных временных рядов. Это программный проект с открытым исходным кодом, написанный на Go. Метрики Prometheus собираются с помощью HTTP-запросов, что обеспечивает более высокую производительность и масштабируемость. В этом руководстве мы обсудим, как установить Prometheus Server в системах Debian и Ubuntu Linux.

Другие инструменты, которые делают Prometheus полноценным инструментом мониторинга:

  • Exporters: это библиотеки, которые помогают экспортировать метрики из сторонних систем в качестве метрик Prometheus..
  • PromQL: язык запросов Prometheus, который позволяет фильтровать данные многомерных временных рядов.

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

Шаг 1. Создайте системную группу Prometheus

Начнем с создания пользователя и группы системы Prometheus.

sudo groupadd --system prometheus

Группа с ID <1000 является системной группой. После добавления системной группы создайте системного пользователя Prometheus и назначьте созданную первичную группу.

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

Шаг 2. Создайте каталоги данных и конфигураций для Prometheus

Prometheus нужен каталог для хранения его данных. Мы создадим его в /var/lib/prometheus.

sudo mkdir /var/lib/prometheus

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

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

Шаг 3: Загрузите Prometheus

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

Установите wget.

sudo apt update
sudo apt -y install wget curl vim

Затем скачайте последний бинарный архив для Prometheus.

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

Распакуйте файл:

tar xvf prometheus*.tar.gz
cd prometheus*/

Переместите двоичные файлы в каталог  /usr/local/bin/ .

sudo mv prometheus promtool /usr/local/bin/

Проверить установленную версию:

$ prometheus --version
prometheus, version 2.15.2 (branch: HEAD, revision: d9613e5c466c6e9de548c4dae1b9aabf9aaf7c57)
  build user:       root@688433cf4ff7
  build date:       20200106-14:50:51
  go version:       go1.13.5

$ promtool --version
promtool, version 2.15.2 (branch: HEAD, revision: d9613e5c466c6e9de548c4dae1b9aabf9aaf7c57)
  build user:       root@688433cf4ff7
  build date:       20200106-14:50:51
  go version:       go1.13.5

Переместите шаблон конфигурации Prometheus в каталог /etc.

sudo mv prometheus.yml /etc/prometheus/prometheus.yml

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

sudo mv consoles/ console_libraries/ /etc/prometheus/

Шаг 4: Настройте Prometheus в Debian / Ubuntu

Создайте или отредактируйте файл конфигурации для Prometheus /etc/prometheus/prometheus.yml.

sudo vim /etc/prometheus/prometheus.yml

Конфигурации шаблона должны выглядеть примерно так:

# my 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 is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# 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']

Вы можете отредактировать файл по своему усмотрению и сохранить его.

Создайте файл служебного модуля Prometheus systemd

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

sudo tee /etc/systemd/system/prometheus.service<<EOF
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
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
EOF

Измените права доступа к каталогу.

Измените владельца этих каталогов на пользователя и группу Prometheus.

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/

Перезагрузите демон systemd и запустите службу:

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

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

$ systemctl status prometheus
● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-01-19 14:36:08 UTC; 14s ago
     Docs: https://prometheus.io/docs/introduction/overview/
 Main PID: 1397 (prometheus)
    Tasks: 7 (limit: 2377)
   Memory: 21.7M
   CGroup: /system.slice/prometheus.service
           └─1397 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.console.templates

Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.959Z caller=main.go:334 vm_limits="(soft=unlimited, hard=unlimited)"
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.960Z caller=main.go:648 msg="Starting TSDB ..."
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.964Z caller=head.go:584 component=tsdb msg="replaying WAL, this may take awhil
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.964Z caller=web.go:506 component=web msg="Start listening for connections" add
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.965Z caller=head.go:632 component=tsdb msg="WAL segment loaded" segment=0 maxS
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.966Z caller=main.go:663 fs_type=EXT4_SUPER_MAGIC
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.966Z caller=main.go:664 msg="TSDB started"
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.966Z caller=main.go:734 msg="Loading configuration file" filename=/etc/prometh
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.967Z caller=main.go:762 msg="Completed loading of configuration file" filename
Jan 19 14:36:08 deb10 prometheus[1397]: level=info ts=2020-01-19T14:36:08.967Z caller=main.go:617 msg="Server is ready to receive web requests."

Если на вашем сервере работает брандмауэр, вам нужно открыть порт 9090 .

sudo ufw allow 9090/tcp

Подтвердите, что вы можете подключиться к порту 9090, получив доступ к IP-адресу / DNS-имени сервера Prometheus в своем веб-браузере.

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