想发个告警这么难?
内网保障了安全,却也阻断了一些常用的告警消息推送(比如有个服务监控系统,需要推送告警消息到企业微信/飞书/钉钉机器人)。
挺好的方式WebHook,简单又高效。
之前部署好监控服务就没管通知这一块,监控服务就形同虚设。
最近刚好遇到一个服务宕机,但所有人都后知后觉,宕机很久才发现。
监控服务被提上日程。
第一个简单的方案,用Nginx反向代理内网请求到外网。
Nginx第一坑
反向代理本是Nginx最常见的作用。
上去就是一顿配置。
啥情况?咋没生效??
哪里配置不对吗?
检查一下午。
第二天检查一下版本,Nginx 1.18.0,怀疑是Nginx版本问题。
升级到新的Nginx 1.27.0版本,再用服务器本机尝试一下。
竟然可以了!!
Nginx 1.18.0不是第一次被这个版本背刺了。
上次是反向代理配置了多个规则,结果新配置的规则始终不生效。
升级版本就好了!
内网代理混乱
代理并非像想象中的那样直接,各种绕。
中间可能又经历了几次代理,因为Nginx版本的问题,导致从其它服务器访问代理服务一直不生效。
算是学会了,看到Nginx 1.18.0,尽量先升级!!
Nginx配置反向代理
在Nginx.conf中配置规则:
location ~ ^/feishu/(.*)$ {
set $webhook_id $1;
proxy_pass https://open.feishu.cn/open-apis/bot/v2/hook/$webhook_id;
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;
}
用curl先在Nginx本机调试一下,记得把webhook_id替换成你自己的:
curl -X POST http://192.168.10.92:25689/feishu/[webhook_id] \
-H "Content-Type: application/json" \
-d '{"msg_type": "text", "content": {"text": "Hello, Feishu 123!"}}'
成功的话,飞书应该能收到消息(其余机器人操作类似)。
有个安全建议,在新增机器人时,设置一下IP白名单或者其余安全措施。
可以防止机器人万一被泄露导致的滥用。
学会了吗?