У меня две машины:
Машина A:Установлена Grafana / Нет доступа к Интернету / Нужно отправлять уведомления в Telegram
Машина B Nginx установлен / Доступ в Интернет
Я хотел бы отправлять эти уведомления Telegram, но на машине A нет Интернета, поэтому я должен использовать B для этого.
Я создал эту конфигурацию на машине B (в/etc/nginx/sites-available
):
server {
listen 443;
location / {
proxy_pass http://mygrafana.example.com;
}
я увидел, что машина A использует порт 443 для отправки уведомлений Telegram, поэтому я использовал этот порт для прослушивания ---> Вот логи, где я видел порт 443 lvl=eror msg="failed to send notification" logger=alerting.notifier uid= error="Post https://api.telegram.org/XXXXXXXXXXXX/sendMessage: dial tcp XX.XX.XX.XX:443: connect: network is unreachable"
.
Но это не работает, похоже, эта конфигурация не работает.
Здесь, в логах grafana, кажется, что нет подключения к машине Blvl=eror msg="failed to send notification" connect: network is unreachable"
Сервер A — это сервер без Интернета (, т.е. Выделенный сервер, NAS и т. д.)
сервер B — это сервер с Интернетом И доступом к локальной сети (Вторая карта Ethernet, т.е.)
В данном случае я сам предполагается, что оба сервера находятся в одной локальной сети или разрешены владельцем или правилами брандмауэра для этого:-)
Мы должны проверить точку,
В случае, если это неизвестно, мы можем использовать
lsof -Pi :3000
Это скажет вам, слушает ли он только локальный хост или нет.
У Grafana есть отличная документация, которую можно найти здесь.https://grafana.com/docs/grafana/latest/administration/configuration/
пропускает руководство на случай, если он слушает локальный хост и не любит трогать или изменять графаны.
Мы также можем использовать nginx для этого шага, используя либо значение по умолчанию, потому что, по моему предположению, больше ничего не работает.:
#Original from https://grafana.com/tutorials/run-grafana-behind-a-proxy/
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
#Allow only my LAN's to access this
allow 10.0.0.0/8;
allow 192.168.0.0/16;
allow 172.16.0.0/16;
#Finally, disallow the rest
deny all;
server_name _;
listen 80;
root /usr/share/nginx/html;
index index.html index.htm;
location / {
proxy_pass http://localhost:3000/;
}
# Proxy Grafana Live WebSocket connections.
location /api/live {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $http_host;
proxy_pass http://localhost:3000/;
}
}
Я хочу не прикасаться к Grafana и просто использовать для этого NGINX. Более того, теперь я могу получить доступ по IP из локальной сети к этому экземпляру.
Самый простой!
apt -получите установку nginx apt install nginx
И т. д. В зависимости от вашего дистрибутива.
server {
# https redirect
server_name grafana.mydoma.in;
listen 80;
return 301 https://$host$request_uri;
}
server {
proxy_read_timeout 3600;
# *if you need plain http uncomment the port 80*
# *remind, that you will comment out the above, else it wont work*
#listen 80;
listen 443 ssl http2;
server_name grafana.mydoma.in;
location / {
proxy_pass http://10.0.0.1:3000;
proxy_set_header Host $http_host;
}
ssl_certificate /etc/letsencrypt/live/grafana.mydoma.in/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/grafana.mydoma.in/privkey.pem; # managed by Certbot
}
10.0.0.1 — это IP-адрес сервера A, так как он прослушивает порт 80 с недопустимым именем (_), он всегда будет использовать это, если вы, конечно, удалили любую другую конфигурацию по умолчанию:-)
Можно, когда все нормально работает,доступ к grafana отовсюду. Краткое напоминание:
Веселись;-)
root@nginx-verify:/etc/nginx/sites-enabled# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
полный конфиг работает. Не знаю, что вы скопировали.