美文网首页
运维笔记(三)—— 阶段性总结

运维笔记(三)—— 阶段性总结

作者: shinoo | 来源:发表于2018-03-19 17:53 被阅读0次

    刚上线了一个简单的需求,有赞商城 和 公司数据库的内部订单自动同步。

    程序逻辑并不难,难点在于程序一直静默跑在服务器上,如果出问题也很难发现。

    设计问题

    同步程序一直跑在服务器上,如果不经常去翻错误日志,或者前台客服主动发现了错误的话,很难发现程序内容错误。

    那么这个程序首先需要一个合理的记录日志和报错通知的机制。

    1. 在 node 的 log 里记录内容有限,定位问题时携带的信息越多越好。
    2. 在重要错误发生,需要人工处理的时候,及时通过邮件通知。

    在实现的时候需要注意这两点。

    日志记录

    Linux给程序提供三种I/O:

        标准输入(standard input) -0 默认接受来自键盘的输入
    
        标注输出(standard output) -1 默认输出到终端窗口
    
        标准错误(standard erroe) -2 默认输出到终端窗口
    

    大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回​​到终端。当然这些产生到输出也可以通过重定向来返回到指定到地方(比如日志文件)

    以下是几个重定向命令:

    command description
    > filename 标准输出重定向到指定file(覆盖)
    >> filename 标准输出重定向到指定file(不会被覆盖)
    2> filename 错误输出重定向到指定file
    &> filename 把所有输入重定向到文件

    在nodejs中的console的log及error方法携带信息有限,不变定位问题,需要对log进行一些拓展。在npm中有许多实现拓展功能的库,比如debug,funcylog,chalk之类,需要根据实际项目进行选择。

    发送邮件使用了一个叫做 nodemailer 的库,配置简单易懂,可以尝试。

    Crontab

    crontab是一个常用命令,用于设置周期性被执行的指令。

    crontab文件包含送交cron守护进程的一系列作业和指令。每个用户可以拥有自己的crontab文件;同时,操作系统保存一个针对整个系统的crontab文件,该文件通常存放于/etc或者/etc之下的子目录中,而这个文件只能由系统管理员来修改。 ——Wikipedia

    文件格式说明
    ——分钟(0 - 59)
    |  ——小时(0 - 23)
    | |  ——日(1 - 31)
    | | |  ——月(1 - 12)
    | | | |  ——星期(0 - 7,星期日=0或7)
    | | | | |
    * * * * * 被执行的命令
    

    一个user下最好设置一个crontab文件方便管理,也可以通过 crontab -e来直接修改默认文件

    crontab文件中的文件路径应为绝对路径,以及最好在每条crontab命令上方写上对应频率内容。

    相关文章

      网友评论

          本文标题:运维笔记(三)—— 阶段性总结

          本文链接:https://www.haomeiwen.com/subject/jeftqftx.html