Установка сервера 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.