V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hustlzp
V2EX  ›  DevOps

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

  •  6
     
  •   hustlzp · 2014-07-15 14:51:57 +08:00 · 7647 次点击
    这是一个创建于 3789 天前的主题,其中的信息可能已经有所发展或是发生改变。
    断断续续手头上的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插件实现?目前还没有去探索。

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

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

    大家来分享下你采用的监控、异常报警、备份方法吧?集思广益一下~
    第 1 条附言  ·  2014-07-16 01:36:29 +08:00
    更新:
    mysqldump -uuser -ppwd dbname | gzip > /path/to/backup/dir`date +%w`.sql
    第 2 条附言  ·  2014-07-16 01:38:17 +08:00
    更新:
    mysqldump -uuser -ppwd dbname | gzip > /path/to/backup/dir/`date +%w`.sql
    第 3 条附言  ·  2014-07-16 01:39:10 +08:00
    更新:
    mysqldump -uuser -ppwd dbname | gzip > /path/to/backup/dir/`date +%w`.sql.gzip
    第 4 条附言  ·  2014-07-16 09:12:19 +08:00
    # 服务器和网站uptime监控

    https://uptimerobot.com

    免费的,已经用这个替代监控宝了。

    感谢 @zyx89513 @moname 的推荐。
    第 5 条附言  ·  2014-07-16 09:30:57 +08:00
    QQ邮箱支持开通手机邮箱,只要发送到这个地址,就可以即时收到短信通知(发送到原有邮箱不会收到短信通知),推荐一下。
    19 条回复    2016-09-14 09:10:22 +08:00
    hging
        1
    hging  
       2014-07-15 15:22:09 +08:00   ❤️ 1
    备份脚本最后写上发邮件,如果中间异常报错,就不会发邮件,证明有错。我的思路是这样。
    hustlzp
        2
    hustlzp  
    OP
       2014-07-15 15:26:56 +08:00
    @hging 赞!我怎么没想到!
    Livid
        3
    Livid  
    MOD
       2014-07-15 15:29:15 +08:00   ❤️ 1
    数据库备份完之后最好再加一个压缩吧,然后复制到 BTSync 的目录里,就可以自动同步了。
    hustlzp
        4
    hustlzp  
    OP
       2014-07-15 15:34:18 +08:00
    @Livid 原来有BitTorrent Sync这个好东西,谢谢推荐!
    caizixian
        5
    caizixian  
       2014-07-15 20:19:01 +08:00   ❤️ 1
    你的做法已经不错了 我的做法还要加上保存至Amazon Glacier或者Dropbox
    jprovim
        6
    jprovim  
       2014-07-15 21:50:32 +08:00   ❤️ 1
    @caizixian 我也是Dropbox同步, 另加google drive.
    hustlzp
        7
    hustlzp  
    OP
       2014-07-15 22:03:11 +08:00
    @caizixian
    @jprovim 我也去试一试 ^_^
    ballpen
        8
    ballpen  
       2014-07-15 22:38:26 +08:00   ❤️ 1
    我直接备份到GD的免费空间
    zyx89513
        9
    zyx89513  
       2014-07-16 03:48:33 +08:00   ❤️ 1
    uptimerobot, 监控网站有没有down掉
    moname
        10
    moname  
       2014-07-16 06:46:05 +08:00 via iPhone   ❤️ 1
    @zyx89513 赞,想到一块儿了,省心。
    dndx
        11
    dndx  
       2014-07-16 06:52:48 +08:00   ❤️ 1
    监控、报警:Nagios
    备份:Dropbox,每天覆盖旧文件,history 够用了。
    lookhi
        12
    lookhi  
       2014-07-16 07:32:26 +08:00   ❤️ 1
    以前用邮件太麻烦了,现在是邮件+用prosody自建IM提醒.
    紧急消息 直接的IM才是正道
    hustlzp
        13
    hustlzp  
    OP
       2014-07-16 09:18:36 +08:00
    @lookhi 确实啊,邮件太延迟了。请问你用的什么client来接收IM消息?
    mengzhuo
        14
    mengzhuo  
       2014-07-16 09:22:48 +08:00   ❤️ 1
    备份我直接用阿里云的OSS了(数据用GPG加密过了)……外网如果不访问,竟然就不收钱……
    lookhi
        15
    lookhi  
       2014-07-16 09:54:12 +08:00   ❤️ 1
    @hustlzp pidgin就可以了prosody是个简易的XMPP服务
    20150517
        16
    20150517  
       2014-07-17 01:00:06 +08:00 via Android   ❤️ 1
    我公司用的nagios,可以监控各种,比如今天备份文件没增加之类的,还能自己写插件
    hustlzp
        17
    hustlzp  
    OP
       2014-07-17 10:30:57 +08:00
    发现了一个Dropbox备份脚本:
    https://github.com/andreafabrizi/Dropbox-Uploader
    dennyzhang
        18
    dennyzhang  
       2016-09-14 09:08:31 +08:00
    @hging 还是判断$?更合适吧。备份失败的话,就发报警邮件。

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

    不知道有没有好的 backupset rotate 的开源解决方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3522 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:37 · PVG 12:37 · LAX 20:37 · JFK 23:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.