开发背景

在DreamWeixin设计之初,就已经预想到以DreamWeixin的功能性质,必然会成为以后多个项目的核心服务。

所以确保DreamWeixin的在线正常运行至关重要,监控服务必不可少。

在我的项目中,担任这项服务的是DreamMonitor,但是DreamMonitor是微信报警,而微信报警时的核心服务又是DreamWeixin,也就是说,当DreamWeixin故障时,DreamMonitor也无法报警,所以DreamWeixin的监控服务无法由DreamMonitor来完成。综上所述,最终决定特别做一个DreamWeixin专用的监控服务。

双向报警

DreamWeixinMonitor保证DreamWeixin的正常,但是一旦DreamWeixinMonitor故障的话,监控服务也无法建立。

所以,为了保证服务的稳健,使用了双向报警设计。DreamWeixin故障时,DreamWeixinMonitor发出报警,DreamWeixinMonitor故障时,DreamWeixin发出报警,二者双辅双成,缺一不可。

地域分布

DreamWeixin和DreamWeixinMonitor的双向报警设计,决定了必须要至少有一方正常运行才可以正常监控的。

因此,二者不可以同时在一台服务器上安装,否则服务器一旦故障,二者都同时无法运行,监控服务就名存实亡了。

在目前的使用中,DreamWeixin为了兼顾对国内的网速,设在美国西部。而DreamWeixinMonitor则放到了美国中部,二者不单是不同机房,地域上分隔了半个美国,甚至连ISP服务商都不一样,可以充分发挥出二者双向监控,双向报警的功能。

监控间隔

DreamWeixin身上肩负着多个项目的核心服务,所以DreamWeixinMonitor对的监控是3-5分钟,随时可调整,以确保服务的正常运行。

但DreamWeixinMonitor只负责DreamWeixin这一个项目,所以优先级就比较低了,DreamWeixin是30分钟,如果发生故障,则转为10分钟,直到服务重新上线,再恢复成30分钟。

随用随走

DreamWeixin和DreamWeixinMonitor二者需要分布在不同的地域上,也可以认为,DreamWeixinMonitor需要避开DreamWeixin所在的地区。因此,一开始DreamWeixinMonitor就被设计成绿色安装,随用随走的模式,现在在美国中部,下一分钟可以在美国东部,美国北部,国内,日本等任意地区迁移,这不会对双向监控造成影响

关联项目

DreamWeixin

运行效果

在线演示

测试账号:demouser

测试密码:demouser

测试地址:http://s.dm1.in/6

开发背景

本程序是针对以前在公司项目中,多次因短信产生各种问题而开发设计的。

短信发送主要分两种,一种是全文短信,另一种是模板短信。

以前因短信延误问题,跟服务商客服沟通。客服说明全文短信属于营销短信,是有人工审核的,导致发送时间可能会延长,也是客户收信延误的根源所在。

程序框架是公司的,整个框架都是基于全文短信设计,修改会导致其他很多的问题。

其中一个比较典型的问题就是短信发送记录,框架是把短信内容复制一遍做的发送记录。但要是换了模板短信,程序里就只剩下模板变量,就没有办法做发送记录了。

当然,实际问题远不止于此。

也因为这样,即使是更换短信服务商,也只能选择同类型的,导致对短信服务商的选择非常有限。

短信模板直接写在程序源码上,要修改短信内容只能修改源码,非常麻烦。

程序里发送短信的地方又非常多且零散。

还有一些短信服务商的政策问题。突然说短信要全部备案,过几天又说句尾要加退订回T,否则不给发等等,来得猝不胜防。

开发目标

  1. 在不修改原有代码,不影响原有业务的前提下,实现原有框架的短信功能的无缝升级。
  2. 可以选择使用目前市面上主流的短信服务商,不再被限制在只能使用固定的短信商。
  3. 以往在人工抽检下,短信延误30-60分钟,甚至直接丢失。通过DreamSMS,不再需要人工审核,客户可以更快速稳定接收短信。
  4. 不修改源程序的前提下,实现短信内容的修改,甚至无缝更换短信服务商。

支持接口

目前支持阿里云短信、云片网、腾讯云、短信宝、Luosimao、云之信、乐信、秒嘀。

在可提供短信账号及接口资料的前提下,可现场添加其他短信接口。

使用说明

1. 添加短信账号,具体参数因短信服务商而有一定区别。

2. 添加短信模板,根据上一步的短信账号,添加相对应的模板。需要注意的是,短信模板的内容直接完整复制过来。

3. 如果短信服务商支持远程获取模板的,只需要填入ID,然后点击远程获取便可,建议优先使用。

4. 请求调用方式,用户主页有详细说明与示例。

项目截图

在线演示

测试账号:admin

测试密码:admin

测试地址:http://s.dm1.in/E

后台地址:http://s.dm1.in/F

开发背景

随着项目的增加,项目的在线检测成为一个问题。

像是以前那样定期把项目跑一遍,既没有效率,也越来越困难。

在前公司发生过几起类似事故。公司的服务器系统一直开着在线更新(不是我管理的,不清楚是不是正版),晚上自动更新完系统后,IIS死机,然后早上收到客户投诉。

于是,在构思这么一种服务,一方面要确保网站服务的正常运行,另一方面要在网站错误的时候及时提醒,方便尽快恢复正常服务。

由于PHP本身的限制,不适合用于本项目的开发,在学习了Go后,可以把之前的想法实现出来。

证书检测

自己的网站,是一个境外的SSL网站。曾经有一次,因为工作太忙,忘记了证书过期时间,导致证书过期后使网站跳出弹窗提示,影响了会员体验,因此本项目特别增加了证书检测服务,防止类似事情再次发生。

微信报警

当本项目检测到异常时,是需要提醒相关人员及时处理的。

在提醒通知的处理上,开始的时候是考虑使用短信通知,但使用短信通知,不但会产生额外费用,在短信备案和短信审核上也很容易遇到各种问题。

专门开发一个APP用于通知,会把事情和项目变得非常复杂,也不适合。

目前基本每人都有安装微信,让相关人员关注公众号后,通过微信发送报警通知,既免费又方便及时,实在是不二之选。

尤其是DreamWeixin完成的现在,让一个公众号可以实现多个完全不同的服务,对应多个完全不同的项目,即使是做为一个公众号的附加功能,也是非常有意义的。

关联项目

DreamShort、DreamMail、DreamWeixin…

使用说明

  1. 在“我的网站”里添加被检测的地址。
  2. 除了404、500、502等常规错误,当服务器访问指定地址时,响应速度晚于10秒的话,会判断为无法连接报警。
  3. 当检测网址为加密网站时,可以打开证书检测功能。证书检测会在证书有效期到达指定期限时报警。
  4. 因为有相当数量的网站使用的是自定义CA证书,DreamMonitor并不对证书的合法性进行验证。
  5. 在短时间内无法排除故障,让服务重新上线的情况下,可以把检测状态修改为“禁用”,待服务重新上线后再重新开始监控。

项目截图