Как установить 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.