Установка Prometheus на Alma Linux 8
установить wget, если нет:
dnf install wget
добавить пользователя prometheus:
useradd -m -s /bin/false prometheus
создать директорию /var/lib/prometheus и назначить на нее владельца prometheus:
mkdir /var/lib/prometheus && chown prometheus /var/lib/prometheus/
посмотреть последний релиз на github:
echo "$(curl -I https://github.com/prometheus/prometheus/releases/latest | awk -F '/' '/^location/ {print substr($NF, 1, length($NF)-1)}')"
пример результата:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
v2.51.1
скачать последний релиз (в данном случае: 2.51.1):
wget https://github.com/prometheus/prometheus/releases/download/v2.51.1/prometheus-2.51.1.linux-amd64.tar.gz
распаковать скачанный архив и перейти в распакованную директорию:
tar -xzvf prometheus-*.linux-*.tar.gz && cd prometheus-*.linux-*/
переместить исполняемые файлы в /usr/local/bin:
mv prometheus /usr/local/bin && mv promtool /usr/local/bin
поднятся на уровень выше и переместить директорию в /etc с переименованием:
cd .. && mv prometheus-*.linux-*/ /etc/prometheus
если нужен прямой доступ к Prometheus, то открываем порт 9090:
firewall-cmd --add-port=9090/tcp --permanent && firewall-cmd --reload
создать файл /etc/systemd/system/prometheus.service и заполнить:
[Unit]
Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.target
[Service]
User=prometheus
Group=prometheus
Type=simple
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
[Install]
WantedBy=multi-user.target
перечитать демоны:
systemctl daemon-reload
запустить и добавить в автозапуск сервис Prometheus:
systemctl start prometheus && systemctl enable prometheus
проверить порт 9090:
netstat -tunlp | grep 9090
пример результата:
tcp6 0 0 :::9090 :::* LISTEN 1015899/prometheus
доступно если открыт порт был в firewalld: http://server-ip:9090/graph
пример как можно спрятать панель Prometheus через прокси NGINX:
# ...
server {
# ...
location /prometheus-pA6tK1zS5fyY/ {
proxy_pass http://127.0.0.1:9090/;
proxy_redirect http://127.0.0.1:9090 /;
proxy_set_header Host $host:443;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HTTPS YES;
access_log off;
}
# ...
}
Prometheus URL: https://srv01.example.com/prometheus-pA6tK1zS5fyY/graph
Установка node_exporter
добавить пользователя node_exporter:
useradd -m -s /bin/false node_exporter
посмотреть последнюю версию релиза node_exporter:
echo "$(curl -I https://github.com/prometheus/node_exporter/releases/latest | awk -F '/' '/^location/ {print substr($NF, 1, length($NF)-1)}')"
пример результата:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
v1.7.0
скачать последний релиз (в данном случае: 1.7.0):
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
разархивировать:
tar -xzvf node_exporter-*.linux-*.tar.gz
скопировать исполняемый файл:
cp node_exporter-*.linux-*/node_exporter /usr/local/bin
назначить на исполняемый файл владельца node_exporter:
chown node_exporter:node_exporter /usr/local/bin/node_exporter
создать файл /etc/systemd/system/node_exporter.service и заполнить:
[Unit]
Description=Prometheus Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter
[Install]
WantedBy=multi-user.target
перечитать демоны:
systemctl daemon-reload
запустить и добавить в автозапуск сервис node_exporter:
systemctl start node_exporter && systemctl enable node_exporter
проверить, что порт 9100 прослушивается:
netstat -pnltu | grep 9100
пример результата:
tcp6 0 0 :::9100 :::* LISTEN 1018264/node_export
добавление в firewall, чтобы был доступен для всех:
firewall-cmd --add-port=9100/tcp --permanent && firewall-cmd --reload
для firewall. добавить чтобы было доступно только для IP 1.1.1.1:
firewall-cmd --new-zone=prometheus --permanent && firewall-cmd --zone=prometheus --add-source=1.1.1.1 --permanent && firewall-cmd --zone=prometheus --add-port=9100/tcp --permanent && firewall-cmd --reload
для iptables. добавить чтобы было доступно только для IP 1.1.1.1:
iptables -I INPUT -s 1.1.1.1 -p tcp -m tcp --dport 9100 -j ACCEPT && service iptables save
для добавления node_exporter нужно на сервере Prometheus открыть /etc/prometheus/prometheus.yml и добавить для локального node_exporter:
# ...
scrape_configs:
# ...
- job_name: "node_exporter"
static_configs:
- targets: ["localhost:9100"]
если на другом сервере будет примерно:
# ...
- targets: ["192.168.0.5:9100"]
если несколько серверов:
# ...
- targets: ["localhist:9100", "192.168.0.5:9100", "192.168.0.8:9100"]
на сервере где Prometheus пезапустить Prometheus:
systemctl restart prometheus
для просмотра подключенных node_exporter к Prometheus нужно перейти: http://server-ip:9090/targets
Установка и настройка Grafana
установить с текущего сайта:
dnf install https://disweb.ru/files/rpm/grafana-enterprise-10.4.1-1.x86_64.rpm
или можно установить с официального сайта: https://grafana.com/grafana/download
запустить и добавить в автозапуск:
systemctl start grafana-server && systemctl enable grafana-server
указать пароль админа:
grafana-cli admin reset-admin-password ПАРОЛЬ_АДМИНА
в итоге логин: admin, пароль который указали
по умолчанию Grafana доступен: http://server-ip:3000/
для подключения Prometheus переходим:
Connections -> Data sources -> Add data source
нажимаем на Prometheus
указываем адрес и порт Prometheus (к примеру: http://localhost:9090)
в самом низу нажимаем «Save & test»
при успешном подключени к Prometheus
для добавления Dashboard переходим:
Connections -> Data sources -> Build a dashboard
нажимаем «Import dashboard»
конфигурация dashboard для мониторинга Linux:
https://grafana.com/grafana/dashboards/1860-node-exporter-full/
https://grafana.com/grafana/dashboards/10180-kds-linux-hosts/
выбираем файл конфигурации или указываем ID (к примеру для Linux Host: 1860 или 10180), нажимаем «Load»
выбираем источник и нажимаем «Import»
в результате:
настройка NGINX для скрытия Grafana в подпути:
# ...
server {
# ...
location /status-gX5eJ2rU8woQ/ {
proxy_pass http://127.0.0.1:3000/;
proxy_redirect http://127.0.0.1:3000 /;
proxy_set_header Host $host:443;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header HTTPS YES;
access_log off;
}
# ...
}
# ...
если подпуть меняется нужно указать его в /etc/grafana/grafana.ini:
; ...
root_url=https://srv01.example.com/status-gX5eJ2rU8woQ/
; ...
Grafana URL: https://srv01.example.com/status-gX5eJ2rU8woQ/