• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    linux服务监控及运维

    一, 安装psutil 包

    1.1、安装压缩包:以root身份登陆CentOS依次 执行以下命令:

    wget https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz

    如果wget 下不下来,则直接在浏览器中复制 粘贴链接https://pypi.python.org/packages/source/p/psutil/psutil-2.1.3.tar.gz 下载下来,用ftp传输工具传输到linux上,然后再进行下面的操作

    1.2 解压: tar zxvf psutil-2.1.3.tar.gz

    1.3 进入解压完的目录:cd psutil-2.1.3/

    1.4 启动安装: python3 setup.py install

    1.5 验证: 在命令窗口输入 python3,然后 输入 :

    import psutil 不报错,则证明安装 成功

    接着输入:

    res = psutil.process_iter()
    
    for var in res:
    
    ​ print(var)
    
    

    则会显示一堆信息

    二,找到操作系统中所有的服务的name和pid

    import psutil
    proc_dict = {}
    #ID:进程名
    proc_name = set()
    #关于进程的集合,集合去重
    for p in psutil.process_iter():
        proc_dict[p.pid] = p.name()
        proc_name.add(p.name())
    print(proc_dict)
    print('\n\n--------------------------\n')
    print(proc_name)
    
    
    

    三,找到需要监控但没有启动的服务

    proc_stop = monitor_name - proc_name

    即:需要监控的服务name 减去 操作系统中所有服务的name

    四,监控服务,如果没有开启则自动开启,[并发邮件通知工作人员]

     1.使用os.system(命令)启用 服务。
     完整代码如下:

    import psutil
    import os
    #如果需要发邮件给通知管理人员可能需要使用 request 和 json
    #import request
    #import json
    import time
    
    time_now = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
    #要监控的服务
    monitor_name = {'nginx'}
    #启动命令
    monitor_map = {'nginx':'service nginx start'}
    
    while True:
        #操作系统中所有进程的字典
        proc_dict = {}
    
        #操作系统中所有的进程名集合
        proc_name = set()
    
        #psutil.process_iter()会返回操作系统下所有进程名及进程ID
        for p in psutil.process_iter():
            proc_dict[p.pid] = p.name()
            proc_name.add(p.name())
        print(proc_dict)
        print('\n\n--------------------------\n')
        print(proc_name)
    
        # monitor_name - proc_name == died process name
        #提取到那个监控进程没有启动
        proc_stop = monitor_name - proc_name
        print(proc_stop)
        if proc_stop:
            for p in proc_stop:
                 p_status = '停止'
                 p_name = p
                 data ={p_status,p_name,time_now}
                 headers = {'Content-Type':'application/json;charset=utf-8'}
                 #send_data = json.dumps(data).encode('utf-8')
                 #发邮件给管理人员
                 #request.post(url=url,data=send_data,headers=headers)
    
                 os.system(monitor_map[p])
                 proc_name = set()
    
                 for p2 in psutil.process_iter():
                     proc_name.add(p2.name())
    
                 if p in proc_name:
                      print("重启成功")
                  else:
                      print("重启失败")
     time.sleep(2000)
    

    运行之后的效果:

    到此这篇关于linux服务监控及运维的文章就介绍到这了,更多相关linux服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    上一篇:Apache安装后出现服务无法启动(服务里启动出现错误代码1)
    下一篇:docker容器的几种存储详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    linux服务监控及运维 linux,服务,监控,及,运维,