每天分享一点运维小知识---pm2工具

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介: 每天分享一点运维小知识---pm2工具

前言

对于后台进程的管理,常用的工具是crontab,可用于两种场景:定时任务和常驻脚本。关于常驻脚本,今天介绍一款更好用的工具:pm2,基于nodejs开发的进程管理器,适用于后台常驻脚本管理,同时对node网络应用有自建负载均衡功能。官方的说法,pm2 是一个带有负载均衡功能的Node应用的进程管理器,个人认为,并不准确,因为pm2支持多种语言,只是对于除node之外的其他进程无负载均衡的能力。


一、pm2特点

说一些pm2有哪些优点好处呢?


支持进程行为配置 ,即可以通过配置,实现对pm2管理应用的一些基础属性更新修改,如应用名称,启动模式等;


支持集群模式,支持负载均衡,但因采用nodejs的cluster模块实现,仅适用于nodejs进程;


支持source map,此项针对js, source map文件是js源文件的信息文件,里面存储着源文件的位置信息;


支持热重启;


支持部署工作流,pm2可依据测试环境和线上环境自动部署到不同的服务器,同时运行在不同配置下;


支持监听重启,在文件更新等情况下可实现进程自动重启;


支持linux的startup进程启动,startup是指系统boot, 进程自启动,如centos的chkconfig;


日志管理,两种日志,pm2系统日志与管理的进程日志,默认会把进程的控制台输出记录到日志中;


命令自动补全功能,个人感觉这个功能意义不大,而且尝试了一下,没有原生的linux命令自动补全反应敏捷;


监控功能,pm2 monit监控cpu和memory使用情况,keymetrics监控更为详细;


支持开发调试模式,非后台运行,pm2-dev start ;


支持pm2模块开发,实现pm2的功能扩展;


keymetrics监控,比pm2 monit监控更为详细友好,通过web页面展示;


最大内存重启,设置最大内存限制,超过限制自动重启;


编程API,提供API供开发者通过编程方式灵活管理进程;


以上简要概述了pm2进程管理工具的特点。


二、pm2命令详解

pm2常用命令

常用命令通常都是比较简单。下面列举一些pm2常用的管理命令


pm2 start  [options] 启动指定应用,如pm2 start index.js --name httpServer;


pm2 stop [options] 停止指定应用,如pm2 stop httpServer;

也可以执行他目录下得 pm2-start.sh 脚本里面用. pm2-start.sh 执行输入0就可以关闭在执行得脚本


pm2 reload|restart [options] 重启指定应用,如pm2 restart httpServer;


pm2 show [options] 显示指定应用详情,如pm2 show httpServer;


pm2 delete [options] 删除指定应用,如pm2 delete httpServer,如果修改应用配置行为,最好先删除应用后,重新启动方才生效,如修改脚本入口文件;


pm2 kill 杀掉pm2管理的所有进程;


pm2 logs 查看指定应用的日志,即标准输出和标准错误;



  • pm2 monit 监控各个应用进程cpu和memory使用情况


三、如何安装一个pm2?

pm2是一个进程管理工具,可以用它来管理node进程,并查看node进程的状态,当然也支持性能监控,进程守护,负载均衡等功能,在前端和nodejs的世界中用的很多。

pm2是基于npm进行安装的,在安装pm2之前要先安装npm


3.1安装node.js

若服务器上已有node.js,可跳过此步,可以通过此命令查看有无node.js


node -v

pm2服务依赖node.js服务,若服务器上无node.js服务,需要先安装node.js; linux安装node.js

这里得node.js你可以去官方下载你自己系统对应得版本 http://nodejs.cn/download/


wget https://nodejs.org/dist/vv16.17.0/node-vv16.17.0-linux-x64.tar.xz     // 下载
tar xf  node-vv16.17.0-linux-x64.tar.xz              // 解压
cd node-vv16.17.0-linux-x64                          // 进入解压目录
./bin/node -v                                       // 执行node命令 查看版本
v16.17.0

这里可以软链接一下方便以后得使用


ln -s /usr/local/node/bin/node   /usr/bin       //这里得地址依据你自己安装的node地址自行修改
ln -s /usr/local/node/bin/npm /usr/bin 
或者ln -s  $nodejs_hom2/bin/npm   /usr/local/bin/ 
   ln -s  $nodejs_hom2/bin/node   /usr/local/bin/

这时你直接输入node -v就可以显示你安装node对应的版本号了到这里node安装结束




3.2安装pm2

全局安装:


npm install -g pm2

安装完之后会将pm2模块安装在$nodejs_home/lib/node_modules/pm2下,然后将pm2做软连接


ln -s /usr/local/node/bin/pm2 /usr/bin
ln -s $nodejs_hom2/bin/pm2   /usr/local/bin/  //建立软连接
pm2 -v                                        //查看pm2版本
4.5.0

这里如果你不折到pm2具体安装在哪了你可以


which pm2   //查询安装路径



这时pm2也可以用了





3.3离线安装pm2

如果服务器无法联网,那么也就无法使用全局安装的命令进行在线安装,需要进行离线安装,最简单的方法是,找到一台可以在线安装的服务器,进行pm2的安装,安装完成后,利用如下命令,直接进入到pm2的安装路径


cd $(npm config get prefix)/lib/node_modules   //进入node.js的node_modules路径
ls                                             //查看
npm  pm2

然后将这个目录下的pm2打包,上传至需要离线安装pm2服务器的对应目录


tar xzvf pm2.tar.gz    //解压
ln -s  $nodejs_hom2/lib/node_modules/pm2/bin/pm2   /usr/local/bin/   //建立软连接
pm2 -v                 //查看pm2版本
4.5.0


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
1月前
|
运维 Linux Apache
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
Puppet 作为一款强大的自动化运维工具,被广泛应用于配置管理领域。通过定义资源的状态和关系,Puppet 能够确保系统始终处于期望的配置状态。
51 3
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
52 4
|
1月前
|
运维 Linux Apache
Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例
【10月更文挑战第8天】本文介绍了Puppet这一强大的自动化运维工具,涵盖其基本概念、安装配置及使用示例。Puppet通过定义资源状态和关系,确保系统配置始终如一,支持高效管理基础设施。文章详细讲解了Puppet的安装步骤、配置方法及DSL语言示例,帮助读者快速掌握Puppet的使用技巧。
61 2
|
6天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
27 4
|
8天前
|
运维 监控 数据安全/隐私保护
自动化运维工具的设计与实现
【10月更文挑战第34天】在现代IT基础设施管理中,自动化运维工具扮演着至关重要的角色。它们不仅提高了运维效率,还确保了服务的连续性和稳定性。本文将深入探讨如何设计并实现一个自动化运维工具,从需求分析到功能实现,再到最终的测试与部署。我们将通过一个简单的代码示例来展示如何自动执行常见的运维任务,如日志清理和性能监控。文章旨在为读者提供一套完整的方法论,以便他们能够构建自己的自动化运维解决方案。
|
2月前
|
运维 监控 数据处理
常用的运维工具:基本的命令行工具详解(grep, awk, sed)
常用的运维工具:基本的命令行工具详解(grep, awk, sed)
51 14
常用的运维工具:基本的命令行工具详解(grep, awk, sed)
|
1月前
|
运维 关系型数据库 MySQL
自动化运维工具Ansible的实战应用
【10月更文挑战第9天】在现代IT运维领域,效率和可靠性是衡量一个系统是否健康的重要指标。自动化运维工具Ansible因其简洁、易用的特性,成为了众多企业和开发者的首选。本文将通过实际案例,展示如何利用Ansible进行日常的运维任务,包括配置管理、软件部署以及批量操作等,帮助读者深入理解Ansible的应用场景及其带来的效益。
|
1月前
|
人工智能 运维 监控
自动化运维:从脚本到工具的演变之路
【10月更文挑战第8天】在数字化时代的浪潮中,运维不再是简单的硬件维护,它已经演变成一场关于效率、稳定性和创新的技术革命。本文将带您领略自动化运维的魅力,从最初的脚本编写到现代复杂的自动化工具,我们将一探究竟,看看这些工具如何帮助运维人员简化日常任务,提升工作效率,并最终推动业务发展。
|
1月前
|
机器学习/深度学习 运维 监控
提升运维效率:自动化工具与实践的融合
【10月更文挑战第3天】 在当今信息技术迅猛发展的时代,运维作为保持系统稳定性和性能的关键角色变得越来越重要。本文将探讨如何通过结合自动化工具和最佳实践来优化运维流程,实现高效、可靠的运维管理。从基础监控到高级自动化,我们将一步步引导您了解如何搭建和维护一个高效的运维体系。
35 3
|
1月前
|
运维 Prometheus 监控
运维中的自动化实践每月一次的系统维护曾经是许多企业的噩梦。不仅因为停机时间长,更因为手动操作容易出错。然而,随着自动化工具的引入,这一切正在悄然改变。本文将探讨自动化在IT运维中的重要性及其具体应用。
在当今信息技术飞速发展的时代,企业对系统的稳定性和效率要求越来越高。传统的手动运维方式已经无法满足现代企业的需求。自动化技术的引入不仅提高了运维效率,还显著降低了出错风险。本文通过几个实际案例,展示了自动化在IT运维中的具体应用,包括自动化部署、监控告警和故障排除等方面,旨在为读者提供一些实用的参考。