ШПАРГАЛКИ
CI/CD
KUBERNETES
  • DOCKERFILE
  • DOCKER-COMPOSE
  • JENKINSFILE
  • JENKINS-PIPELINE
  • GITLAB CI/CD
  • GROOVIE
  • INSTALL
  • PODS
  • INGRESS

Ставим Prometheus, Grafana и AlertManager на Ubuntu

Для чего нужен Прометей и Графана я расскажу в другой раз. А сейчас нет времени. Пора ставить все хозяйство и мониторить.Опять же, гугл никто не отменял. А еще можно почитать тут, тут и даже вот тут.

Что бы получить нормальный и удобный доступ к нашим сервисам, сделаем прокси-переадрессацию с человеко-понятных урлов на порты наших сервисов. Делать это будем с помощью Nginx.

NGINX

Ставим

sudo apt update \
&& sudo apt install nginx \
&& sudo systemctl start nginx \
&& sudo systemctl start nginx

Порты, которые будут у нас использоваться (без учета экспортеров):

  • Prometheus -- 9090
  • Grafana -- 3000
  • AlertManager -- 9093

Сделаем прокси-переадрессация на них. Создадим файлики в /etc/nginx/sites-available/

prometheus.domain.local

server {
        listen          80;
        server_name     prometheus.domain.local;

         location / {
            proxy_pass http://localhost:9090/;
         }
}

grafana.domain.local

server {
        listen          80;
        server_name     grafana.domain.local;

         location / {
            proxy_pass http://localhost:3000/;
         }
}

alert.domain.local

server {
        listen          80;
        server_name     alert.domain.local;

         location / {
            proxy_pass http://localhost:9093/;
         }
}

Проверим конфигурацию nginx

nginx -t

Если все ок.

Создаем симлинки на поддомены и перезагружаем nginx.

sudo ln -s /etc/nginx/sites-available/prometheus.domain.local /etc/nginx/sites-enabled/ \
&& sudo ln -s /etc/nginx/sites-available/grafana.domain.local /etc/nginx/sites-enabled/ \
&& sudo ln -s /etc/nginx/sites-available/alert.domain.local /etc/nginx/sites-enabled/ \
&& systemctl restart nginx \
&& systemctl status nginx

Prometheus

Переходим на официальную страницу загрузки и копируем ссылку на пакет для Linux:

wget https://github.com/prometheus/prometheus/releases/download/v2.25.1/prometheus-2.25.1.linux-amd64.tar.gz

Создадим нужные директории.

mkdir /etc/prometheus
mkdir /var/lib/prometheus

Распакуем архив и раскинем файлы по каталогам

tar zxvf prometheus-*.linux-amd64.tar.gz \
&& cd prometheus-*.linux-amd64 \
&& cp prometheus promtool /usr/local/bin/ \
&& cp -r console_libraries consoles prometheus.yml /etc/prometheus

Создадим пользователя для прометея без доступа к шелу и домашней директории.

useradd --no-create-home --shell /bin/false prometheus \
&& chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheus \
&& chown prometheus:prometheus /usr/local/bin/{prometheus,promtool}

Перед тем, как запихнуть его в автозапуск, проверим его работу.

/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

Если все ок и веб-морда на порту 9090 отвечает, то перейдем к автозапуску. 

nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Service
After=network.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
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target
systemctl daemon-reload \
&& systemctl enable prometheus \
&& chown -R prometheus:prometheus /var/lib/prometheus \
&& systemctl start prometheus \
&& systemctl status prometheus

Grafana

Добавим репо с графаной в систему.

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add - \
&& sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

Обновляем и ставим

sudo apt update \
&& sudo apt install grafana \
&& sudo systemctl start grafana-server \
&& sudo systemctl enable grafana-server \
&& sudo systemctl status grafana-server

Проверяем веб-морду на 3000 порту. Все работает? Ок. Идем дальше.

У нас есть переадресация в NGINX, так что в конфиг графаны внесем изменения (/etc/grafana/grafana.ini ):

[server]
domain = grafana.example.local

Рестартуем. Ок. Теперь у нас удобный доступ к графане.

AlertManager

Alertmanager нужен для сортировки и группировки событий. Он устанавливается по такому же принципу, что и prometheus.

На той же официальной странице загрузки копируем ссылку на Alertmanager для Linux

wget https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz \
&& mkdir /etc/alertmanager /var/lib/prometheus/alertmanager \
&& tar zxvf alertmanager-*.linux-amd64.tar.gz \
&& cd alertmanager-*.linux-amd64 \
&& cp alertmanager amtool /usr/local/bin/ \
&& cp alertmanager.yml /etc/alertmanager

Назначим юзера, права и вот это вот все...

useradd --no-create-home --shell /bin/false alertmanager \
&& chown -R alertmanager:alertmanager /etc/alertmanager /var/lib/prometheus/alertmanager \
&& chown alertmanager:alertmanager /usr/local/bin/{alertmanager,amtool}

Добавим в автозапуск.

nano  /etc/systemd/system/alertmanager.service
[Unit]
Description=Alertmanager Service
After=network.target

[Service]
EnvironmentFile=-/etc/default/alertmanager
User=alertmanager
Group=alertmanager
Type=simple
ExecStart=/usr/local/bin/alertmanager \
          --config.file=/etc/alertmanager/alertmanager.yml \
          --storage.path=/var/lib/prometheus/alertmanager \
          $ALERTMANAGER_OPTS
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

[Install]
WantedBy=multi-user.target

Запустим наш сервис, перед этим перечитав systemd

systemctl daemon-reload \
&& systemctl enable alertmanager \
&& systemctl start alertmanager \
&& systemctl status alertmanager

Проверяем веб-морду на порту 9093. Если все ок, идем дальше.

Ну вот вроде и все. Если что, потом статью дополню.

Дальше мы будем воевать с настройками графаны и связки их с прометеусом и алертменеджером. Установкой различных экспортеров и дашбордов...

Оцените статью

Еще никто не оставил комментарий. Будьте первым!