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

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

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

设计问题

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

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

  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命令上方写上对应频率内容。

你可能感兴趣的:(运维笔记(三)—— 阶段性总结)