3.0.3 • Published 5 years ago
pm2-logrotate-s3 v3.0.3
pm2-logrotate-s3
Description
pm2-logrotate-s3 is based on pm2-logrotate
PM2 module to automatically rotate logs of processes managed by PM2 and upload to s3 before deleting logs.
Install
pm2 install pm2-logrotate-s3
NOTE: the command is pm2 install NOT npm install
Configure
create pm2-logrotate-s3-config.json file in PM2 home folder which by default is ~/.pm2 . set config values as given in example below:
module.exports = {
"max_size": "10M",
"retain": "2",
"compress": true,
"dateFormat": "YYYY-MM-DD_HH-mm-ss",
"workerInterval": "30",
"rotateInterval": "0 0 * * *",
"rotateModule": true,
"TZ": null,
"aws": {
"credentials": {
"accessKeyId": "<AWS_ACCESS_KEY_ID>",
"secretAccessKey": "<AWS_SECRET_ACCESS_KEY>"
}
},
"logBucketSetting": {
"bucket": "<S3_BUCKET>",
"s3Path": "website-node-react",
"s3FilePathFormat": "__year__/__month__/__day__/__ip__/__filename__"
},
"getServerPublicIp": true,
"serverIp": null
}Config Property Description
S3 upload properties
All of the following properties needs to defined for s3 upload to work.
aws.credentials.accessKeyId(Defaults tonull): This is access key id of your aws account.aws.credentials.secretAccessKey(Defaults tonull): This is secret key of your aws account.logBucketSetting.s3Path(Defaults tonull): This is s3 path in bucket where all your logs would be kept.logBucketSetting.s3FilePathFormat(Defaults to__year__/__month__/__day__/__ip__/__filename__): This is key path where your logs would be uploaded. Here__year__,__month__,__day__,__ip__,__filename__, and__epoch__are place holders for dynamic value to be inserted in key path. One of two properties should be set for this to work.getServerPublicIp(Defaults tofalse): This extracts the public ip of server.serverIp(Defaults tonull): This is the static value of ip of server that needed to be passed.
PM2 log rotate properties
max_size(Defaults to10M): 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,10Kretain(Defaults toall): 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.compress(Defaults tofalse): Enable compression via gzip for all rotated logsdateFormat(Defaults toYYYY-MM-DD_HH-mm-ss) : Format of the data used the name the file of logrotateModule(Defaults totrue) : Rotate the log of pm2's module like other appsworkerInterval(Defaults to30in secs) : You can control at which interval the worker is checking the log's size (minimum is1)rotateInterval(Defaults to0 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 :TZ(Defaults to system time): This is the standard tz database timezone used to offset the log file saved. For instance, a value ofEtc/GMT+1, with an hourly log, will save a file at hour14GMT with hour13(GMT+1) in the log name.
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ 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)
