- LINUX
- GIT
- DOCKER
- DOCKERFILE
- DOCKER-COMPOSE
- DOCKERSWARM
- KUBERNETES
- ANSIBLE
- BASH
- 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. Если все ок, идем дальше.
Ну вот вроде и все. Если что, потом статью дополню.
Дальше мы будем воевать с настройками графаны и связки их с прометеусом и алертменеджером. Установкой различных экспортеров и дашбордов...