大家来分享下监控、异常报警、备份的方法吧~

2014 年 7 月 15 日
 hustlzp
断断续续手头上的VPS多了,得统一一下监控、报警等措施,不然乱的很。

于是买了一台新VPS,这台VPS不跑业务,专门用于管理和监控其他VPS(简称Admin VPS),基本的结构就是master-slave。

# 异常报警

用Sentry监控各VPS中运行的website app。Sentry支持很多语言环境,Python、ROR、Node.js等等,异常一出现就会发邮件报警。

# 系统监控

每台服务器都添加New Relic支持,然后在iTunes下一个New Relic App,用手机可以随时看到CPU、内存使用情况,蛮方便的。超过了限制也会发邮件报警。

后来又尝试了下Munin,搭建起来也很方便,能看到的参数更多了。不过我的站点一般没啥流量,只需要知道挂了没挂,所以不需要太细的监控,目前来看用New Relic就够了...

# 备份

对于一个website app来说,需要备份的一般分2类:数据库、文件。所以Admin VPS的备份结构是:

* backup/$project/db/
* backup/$project/files/

我采用的也是比较常见的rsync同步方法:在需要备份的VPS上开启rsync后台进程,然后开cronjob每天在某个时间段进行数据库dump。Admin VPS开cronjob定时从其他VPS同步文件。

数据库备份是以当天的星期数(0-6)命名的:

mysqldump -uroot -ppwd dbname > /path/to/backup/-`date +%w`.sql

这样的话就可以循环备份7天的数据库历史数据,之前的数据就会被rewrite。

不过有一个问题就是,如何去监控这种备份行为?比如说发现某天的备份文件没有同步过来,就发邮件报警什么的?或许需要去编写Monin插件实现?目前还没有去探索。

-------------------------------------

像这样折腾一翻后,感觉心里踏实了些。

大家来分享下你采用的监控、异常报警、备份方法吧?集思广益一下~
8773 次点击
所在节点    DevOps
19 条回复
hging
2014 年 7 月 15 日
备份脚本最后写上发邮件,如果中间异常报错,就不会发邮件,证明有错。我的思路是这样。
hustlzp
2014 年 7 月 15 日
@hging 赞!我怎么没想到!
Livid
2014 年 7 月 15 日
数据库备份完之后最好再加一个压缩吧,然后复制到 BTSync 的目录里,就可以自动同步了。
hustlzp
2014 年 7 月 15 日
@Livid 原来有BitTorrent Sync这个好东西,谢谢推荐!
caizixian
2014 年 7 月 15 日
你的做法已经不错了 我的做法还要加上保存至Amazon Glacier或者Dropbox
jprovim
2014 年 7 月 15 日
@caizixian 我也是Dropbox同步, 另加google drive.
hustlzp
2014 年 7 月 15 日
@caizixian
@jprovim 我也去试一试 ^_^
ballpen
2014 年 7 月 15 日
我直接备份到GD的免费空间
dofaith09
2014 年 7 月 16 日
uptimerobot, 监控网站有没有down掉
moname
2014 年 7 月 16 日
@zyx89513 赞,想到一块儿了,省心。
dndx
2014 年 7 月 16 日
监控、报警:Nagios
备份:Dropbox,每天覆盖旧文件,history 够用了。
lookhi
2014 年 7 月 16 日
以前用邮件太麻烦了,现在是邮件+用prosody自建IM提醒.
紧急消息 直接的IM才是正道
hustlzp
2014 年 7 月 16 日
@lookhi 确实啊,邮件太延迟了。请问你用的什么client来接收IM消息?
mengzhuo
2014 年 7 月 16 日
备份我直接用阿里云的OSS了(数据用GPG加密过了)……外网如果不访问,竟然就不收钱……
lookhi
2014 年 7 月 16 日
@hustlzp pidgin就可以了prosody是个简易的XMPP服务
20150517
2014 年 7 月 17 日
我公司用的nagios,可以监控各种,比如今天备份文件没增加之类的,还能自己写插件
hustlzp
2014 年 7 月 17 日
发现了一个Dropbox备份脚本:
https://github.com/andreafabrizi/Dropbox-Uploader
dennyzhang
2016 年 9 月 14 日
@hging 还是判断$?更合适吧。备份失败的话,就发报警邮件。

如果条件允许的话,能开一个 Jenkins 的话,更建议定义一个 Jenkins job 。
然后在 job 加一个 post-action ,发 slack 或 BearyChat 的 IM 通知消息。
dennyzhang
2016 年 9 月 14 日
@dndx 还是软删除,而不是 overwrite 吧。

不知道有没有好的 backupset rotate 的开源解决方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/122730

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX