pm2和pm2-logrotate 日志管理 初探

官网:https://pm2.keymetrics.io/

ADVANCED, PRODUCTION PROCESS MANAGER FOR NODE.JS

高级,Node.js生产环境进程守护程序。

0x1 安装

npm install pm2@latest -g

0x2 基本命令

$ pm2 start app.js -i 4  # 后台运行pm2,启动4个app.js # 也可以把'max' 参数传递给 start# 正确的进程数目依赖于Cpu的核心数目
$ pm2 start app.js -i max    # 根据有效CPU数目启动最大进程数目
$ pm2 start app.js --name my-api # 命名进程
$ pm2 list               # 显示所有进程状态
$ pm2 monit              # 监视所有进程
$ pm2 logs               # 显示所有进程日志
$ pm2 stop all           # 停止所有进程
$ pm2 restart all        # 重启所有进程
$ pm2 reload all         # 0 秒停机重载进程 (用于 NETWORKED 进程)
$ pm2 stop 0             # 停止指定的进程
$ pm2 restart 0          # 重启指定的进程
$ pm2 startup            # 产生 init 脚本 保持进程活着
$ pm2 web                # 运行健壮的 computer API endpoint (http://localhost:9615)
$ pm2 delete 0           # 杀死指定的进程
$ pm2 delete all         # 杀死全部进程
$ pm2 info app           # 参看name为app的信息

日志管理

安装pm2-logrotate

pm2的日志模块默认是每一个服务进程都分配两个默认的日志文件

这两个日志文件存放于/root/.pm2/logs中,如果pm2管理5个服务,那么该文件夹下总共有10个日志文件,并且随着时间不断增加,很容易就会产生很多个上g的日志文件,导致了服务器的磁盘空间不足的问题

pm2 install pm2-logrotate

配置

  • max_size (Defaults to 10M): When a file size becomes higher than this value it will rotate it (its possible that the worker check the file after it actually pass the limit) . You can specify the unit at then end: 10G, 10M, 10K

    • 配置项默认是 10MB,并不意味着切割出来的日志文件大小一定就是 10MB,而是检查时发现日志文件大小达到 max_size,则触发日志切割。
  • retain (Defaults to 30 file logs): This number is the number of rotated logs that are keep at any one time, it means that if you have retain = 7 you will have at most 7 rotated logs and your current one.
    • 这个数字是在任何一个时间保留已分割的日志的数量,这意味着如果您保留7个,那么您将最多有7个已分割日志和您当前的一个
  • compress (Defaults to false): Enable compression via gzip for all rotated logs
    • 对所有已分割的日志启用 gzip 压缩
  • dateFormat (Defaults to YYYY-MM-DD_HH-mm-ss) : Format of the data used the name the file of log
    • 文件名格式化的规则
  • rotateModule (Defaults to true) : Rotate the log of pm2’s module like other apps
    • 像其他应用程序一样分割 pm2模块的日志
  • workerInterval (Defaults to 30 in secs) : You can control at which interval the worker is checking the log’s size (minimum is 1)
    • 您可以控制工作线程检查日志大小的间隔(最小值为1)单位为秒(控制模块检查log日志大小的循环时间,默认30s检查一次)
  • rotateInterval (Defaults to 0 0 * * * everyday at midnight): This cron is used to a force rotate when executed. We are using node-schedule to schedule cron, so all valid cron for node-schedule is valid cron for this option. Cron style :
    • 多久备份一次
*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
  • TZ (Defaults to system time): This is the standard tz database timezone used to offset the log file saved. For instance, a value of Etc/GMT+1, with an hourly log, will save a file at hour 14 GMT with hour 13(GMT+1) in the log name.

    • 时区(默认为系统时区)

如何设置 ?

安装完模块后,您必须键入: pm2 set pm2-logrotate:<param> <value>

例如:

  • pm2 set pm2-logrotate:max_size 1K (1KB)
  • pm2 set pm2-logrotate:compress true (compress logs when rotated)
  • pm2 set pm2-logrotate:rotateInterval '*/1 * * * *' (force rotate every minute)

我的设置

$ pm2 set pm2-logrotate:max_size 10M
$ pm2 set pm2-logrotate:retain 3 # 备份最多3份,也就是备份最进3小时的日志(默认30份)
$ pm2 set pm2-logrotate:dateFormat YYYY-MM-DD_HH-mm-ss # 文件名时间格式
$ pm2 set pm2-logrotate:workerInterval 3600
$ pm2 set pm2-logrotate:rotateInterval 0 0 * * *
$ pm2 set pm2-logrotate:TZ Asia/Shanghai # 中国时区

参考:https://www.jianshu.com/p/54bc346d2406 作者:kelvv

pm2和pm2-logrotate 日志管理 初探相关推荐

  1. MongoDB 日志管理

    MongoDB默认情况下不会自动的切换轮转日志的,这将会导致日志日渐增大,在繁忙的业务下,日志增长量非常大的.如此之大的日志文件,查看某天的日志也不太方便.如是,需要对mongodb 日志文件进行切换 ...

  2. skynet日志管理

    skynet日志配置 在config里面可以配置自己的日志管理logger:日志输出目录daemon 配置 daemon = "./skynet.pid" 可以以后台模式启动 sk ...

  3. pm2日志管理pm2-logrotate介绍

    pm2-logrotate是什么? pm2-logrotate可以理解为是一个pm2的插件,它扩充了pm2本身没有功能:日志管理,所以它的运行需要依靠pm2,想用它必须先安装pm2才可以. 为什么有p ...

  4. linux日志管理工具logrotate配置

    linux日志管理工具logrotate配置 logrotate介绍 logrotate配置讲解 主配置文件解释(/etc/logrotate.conf) logrotete 命令参数 添加配置 以添 ...

  5. 第 11 章 日志管理 - 089 - 初探 ELK

    在开源的日志管理方案中,最出名的莫过于 ELK 了. ELK 是三个软件的合称:Elasticsearch.Logstash.Kibana. Elasticsearch 一个近乎实时查询的全文搜索引擎 ...

  6. 使用 logrotate 配置 supervisor 进行日志管理按天备份

    supervisor 默认的日志备份策略是按大小备份,经常不知道去哪个文件查日志的烦恼.本文通过设置 logrotate 来进行日志安排备份 logrotate 的配置文件默认存放在 /etc/log ...

  7. Linux Logrotate日志切割管理

    Logrotate 是 linux 系统用来分割日志的系统工具.Logrotate 可以设置为每天.每周.每月或当日志文件达到一定的大小时处理日志文件,提供自动压缩.删除.分割日志文件的功能.一般 C ...

  8. Linux 日志管理(RHEL7)

    日志管理 系统和程序的日记本 记录系统,程序运行中发生的各种事件 通过查看日志,了解及排除故障 信息安全控制的依据 内核及系统日志 由系统服务rsyslog统一记录/管理 日志消息采用文本格式 主要记 ...

  9. Kubernetes-基于EFK进行统一的日志管理

    1.统一日志管理的整体方案 通过应用和系统日志可以了解Kubernetes集群内所发生的事情,对于调试问题和监视集群活动来说日志非常有用.对于大部分的应用来说,都会具有某种日志机制.因此,大多数容器引 ...

  10. linux 学习 14 日志管理

    第十四讲 日志管理 14.1 日志管理-简介 1.日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论 ...

最新文章

  1. 用js 判断datagrid 中的 checkbox 是否被选中
  2. android开发获取应用本身耗电量_别找了,Android常用自动化工具全在这儿了!
  3. linux shell 输出文件 指定行
  4. python opencv检测人脸
  5. MIT CSAIL最新研究:将AI应用于流媒体视频,可获得更好的播放体验
  6. 【数据竞赛】图像赛排行榜拉开100名差距的技巧
  7. css两栏式布局示例
  8. 聆听无声的话语:手把手教你用ModelArts实现手语识别
  9. 数据结构与算法(C#实现)系列---树
  10. 浏览器后退不刷新页面
  11. hdu 1207汉诺塔II 递推
  12. 在eclipse中引入mybatis和spring的约束文件
  13. 计算机一直显示配置更新失败怎么办,电脑更新新系统的时候出现配置更新失败问题怎么办...
  14. 运维审计新形势下CIO的管理职责
  15. mysql数据库常用存储引擎的区别
  16. 工作八年的程序员,却拿着毕业三年的工资,再不开窍就真晚了...
  17. RAID5数据应该如何恢复
  18. 华硕电脑桌面没有计算机图标 怎么弄出来,电脑桌面图标不见了怎么恢复 电脑桌面图标怎么随意设置...
  19. 在未来几年,有哪些职业可能被人工智能取代?
  20. Mysql清除表数据的三种方式

热门文章

  1. mysql 免安装 net_mysql 免安装
  2. lgv20刷twrp_TWRP 新增对 Realme C2, LG V20等设备的支持
  3. android图案解锁忘了怎么解,安卓手机解锁图案忘了怎么办?手机解锁密码忘了怎么办?...
  4. Android调试办法之adb指令解锁手机锁屏
  5. 等保三级多久测评一次?每年都要测评吗?
  6. 形式验证——学习笔记
  7. vue父子组件传值:父传子、子传父
  8. python参数类型为uint8,将图像数据类型从uint16转换为uint8
  9. ceph 删除 osd
  10. 数据可视化 - 什么是数据可视化