ADD tls prometheus
This commit is contained in:
parent
5bf0d5327e
commit
f04048e3c0
@ -61,6 +61,103 @@ WantedBy=multi-user.target
|
|||||||
- `sudo systemctl start prometheus`
|
- `sudo systemctl start prometheus`
|
||||||
- `sudo systemctl enable prometheus`
|
- `sudo systemctl enable prometheus`
|
||||||
|
|
||||||
|
#### Настройка TLS
|
||||||
|
|
||||||
|
- `touch web-config.yml` - создать конфигурационный файл для настойки TLS
|
||||||
|
|
||||||
|
- Добавить в Unit-файл пусть к конфигу TLS в директиве `ExecStart`
|
||||||
|
```bash
|
||||||
|
ExecStart=/usr/local/bin/prometheus \
|
||||||
|
--config.file /etc/prometheus/prometheus.yml \
|
||||||
|
--storage.tsdb.path /etc/prometheus/data \
|
||||||
|
--web.config.file /etc/prometheus/web-config.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
- `certbot certonly --nginx -d prometheus.mcarov.pro` - сгенирировать сертификаты, команду не хочу пояснять
|
||||||
|
|
||||||
|
!!! tip "Если на сервере нет Nginx"
|
||||||
|
`certbot certonly --standalone -d prometheus.mcarov.pro`
|
||||||
|
|
||||||
|
- Добавить Серт и Ключ в `web-config.yml`
|
||||||
|
```
|
||||||
|
tls_server_config:
|
||||||
|
cert_file: /home/prometheus/certs/example.com/example.com.crt
|
||||||
|
key_file: /home/prometheus/certs/example.com/example.com.key
|
||||||
|
```
|
||||||
|
|
||||||
|
- Добавить строку в `/etc/crontab` для обновления серта
|
||||||
|
```
|
||||||
|
0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q
|
||||||
|
```
|
||||||
|
|
||||||
|
- Создать скрипт `/etc/letsencrypt/renewal-hooks/deploy/set-permissions-and-restart-prometheus.sh`
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
# Выдать права пользователю prometheus
|
||||||
|
setfacl -R -m u:prometheus:rX /etc/letsencrypt/
|
||||||
|
|
||||||
|
# Перезагрузить Prometheus
|
||||||
|
systemctl restart prometheus
|
||||||
|
```
|
||||||
|
- `chmod +x /etc/letsencrypt/renewal-hooks/deploy/set-permissions-and-restart-prometheus.sh`
|
||||||
|
|
||||||
|
- `certbot renew --dry-run` - для отладки процесса обновления сертификатов
|
||||||
|
|
||||||
|
- Создать конфиг nginx в `/etc/nginx/sites-available`
|
||||||
|
```
|
||||||
|
server {
|
||||||
|
server_name prometheus.mcarov.pro;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
client_max_body_size 512M;
|
||||||
|
proxy_pass https://127.0.0.1:9090;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
proxy_set_header X-Forwarded-Proto $scheme;
|
||||||
|
}
|
||||||
|
|
||||||
|
access_log /var/log/nginx/prometheus.mcarov.pro.access.log;
|
||||||
|
error_log /var/log/nginx/prometheus.mcarov.pro.error.log;
|
||||||
|
|
||||||
|
listen 443 ssl;
|
||||||
|
ssl_certificate /etc/letsencrypt/live/prometheus.mcarov.pro/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/prometheus.mcarov.pro/privkey.pem;
|
||||||
|
include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||||
|
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
if ($host = prometheus.mcarov.pro) {
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
listen 80;
|
||||||
|
server_name prometheus.mcarov.pro;
|
||||||
|
return 404;
|
||||||
|
|
||||||
|
}
|
||||||
|
```
|
||||||
|
- `ln -s /etc/nginx/sites-available/prometheus.mcarov.pro /etc/nginx/sites-enabled/`
|
||||||
|
- `nginx -t`
|
||||||
|
- `systemctl reload nginx`
|
||||||
|
|
||||||
|
#### Аутентификация для Prometheus Server
|
||||||
|
|
||||||
|
- `htpasswd -nBC 10 "" | tr -d ':\n'` - выполнить
|
||||||
|
|
||||||
|
- Добавить в `web-config.yml`
|
||||||
|
```yml
|
||||||
|
basic_auth_users:
|
||||||
|
# user: password (hash)
|
||||||
|
admin: $2y$10$QzpQ2fO9TpU1Hm4VbB6AMO8ZsdoplfesfAmI8MFB402BVIu5gf.TK
|
||||||
|
```
|
||||||
|
- `systemctl restart prometheus`
|
||||||
|
|
||||||
|
- В UI Grafana настроить Basic auth в Data Source
|
||||||
|
|
||||||
#### Node exporter install
|
#### Node exporter install
|
||||||
- `wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-arm64.tar.gz` - скачиваем node exporter на удалённый хост
|
- `wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-arm64.tar.gz` - скачиваем node exporter на удалённый хост
|
||||||
|
|
||||||
@ -89,10 +186,62 @@ ExecStart=/usr/local/bin/node_exporter
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
```
|
```
|
||||||
|
|
||||||
- `systemctl daemon-reload`
|
- `sudo systemctl daemon-reload`
|
||||||
- `sudo systemctl start node_exporter`
|
- `sudo systemctl start node_exporter`
|
||||||
- `sudo systemctl enable node_exporter`
|
- `sudo systemctl enable node_exporter`
|
||||||
|
|
||||||
|
#### Настройка TLS
|
||||||
|
|
||||||
|
- `touch web.yml`
|
||||||
|
- Создать `openssl.cnf` и наполнить содержимым:
|
||||||
|
```
|
||||||
|
[req]
|
||||||
|
default_bits = 2048
|
||||||
|
prompt = no
|
||||||
|
default_md = sha256
|
||||||
|
distinguished_name = dn
|
||||||
|
|
||||||
|
[dn]
|
||||||
|
CN = 150.241.66.94
|
||||||
|
|
||||||
|
[v3_ext]
|
||||||
|
authorityKeyIdentifier=keyid,issuer:always
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage=digitalSignature,keyEncipherment
|
||||||
|
extendedKeyUsage=serverAuth
|
||||||
|
subjectAltName=@alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
IP.1 = 150.241.66.94
|
||||||
|
```
|
||||||
|
|
||||||
|
- `sudo openssl req -x509 -newkey rsa:2048 -keyout node_exporter.key -out node_exporter.pem -days 36500 -nodes -config openssl.cnf -extensions v3_ext` - генирируем серты
|
||||||
|
|
||||||
|
- Не забываем выдать права на сертификаты
|
||||||
|
|
||||||
|
- Добавить в `web.yml`
|
||||||
|
```
|
||||||
|
tls_server_config:
|
||||||
|
cert_file: /etc/prometheus/node_exporter/certs/node_exporter.pem
|
||||||
|
key_file: /etc/prometheus/node_exporter/certs/node_exporter.key
|
||||||
|
```
|
||||||
|
|
||||||
|
- Добавить в Unit Node Exporter в директиву ExecStart
|
||||||
|
```bash
|
||||||
|
--web.config.file=/etc/prometheus/node_exporter/web.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
- `systemctl daemon-reload`
|
||||||
|
- `systemctl restart node_exporter.service`
|
||||||
|
|
||||||
|
- На машине с Prometheus Server добавить в `prometheus.yml` в нужную джобу экспортера
|
||||||
|
```
|
||||||
|
scheme: https
|
||||||
|
tls_config:
|
||||||
|
ca_file: /etc/prometheus/node_exporter/srv-infra/certs/node_exporter.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
- `systemctl restart prometheus`
|
||||||
|
|
||||||
### Про PromQL
|
### Про PromQL
|
||||||
- `increase()` возвращает общий прирост за указанный интервал времени.
|
- `increase()` возвращает общий прирост за указанный интервал времени.
|
||||||
@ -105,6 +254,6 @@ increase(<метрика>[<интервал>])
|
|||||||
|
|
||||||
### Полезности
|
### Полезности
|
||||||
|
|
||||||
- `promtool check config prometheus.yml`
|
- `promtool check config prometheus.yml`- проверка синтаксиса
|
||||||
- `promtool check rules rules.yml`
|
- `promtool check rules rules.yml` - проверка синтаксиса
|
||||||
- `promtool test rules rules_test.yml`
|
- `promtool test rules rules_test.yml`
|
Loading…
x
Reference in New Issue
Block a user