ITPub博客

首页 > 数据库 > 数据库开发技术 > Python脚本实现Linux服务器远程健康检查

Python脚本实现Linux服务器远程健康检查

原创 数据库开发技术 作者:运维book思议 时间:2023-06-17 19:49:23 0 删除 编辑

先放个链接,万一有人关注呢

优质文章推荐

↓ ↓ ↓ ↓ ↓

Linux系统初始化脚本

能够监控100台服务器的磁盘利用率的脚本——16行代码实现

Linux系统初始化脚本之二

Linux系统巡检脚本——快速获取当前系统信息

Linux远程执行脚本——Python运维脚本

哪个Linux发行版会成为CentOS的平替?

当今时代,远程服务器扮演着重要的角色,支持各种应用和服务的运行。然而,监控和维护多个远程服务器的健康状态可能变得繁琐而耗时。为了简化这个过程,提高运维效率,我们可以利用自动化脚本来监控远程服务器的健康状况。在这篇文章中,我们将介绍一个名为"远程服务器健康检查脚本"的工具,它可以帮助运维人员实时监控远程服务器的CPU使用率并发送邮件通知,以便及时采取必要的措施。

应用场景

"远程服务器健康检查脚本"适用于以下场景:
1、远程服务器监控:
对于拥有多台远程服务器的企业或组织,运维人员需要实时监控服务器的健康状况。该脚本可以定期检查服务器的CPU使用率,并在超过预设阈值时发送警报邮件,以便及时响应和解决问题。
2、运维自动化:
脚本的自动化特性使得运维人员无需手动登录每台服务器来检查其状态。通过设置合适的检查间隔时间和阈值,脚本可以自动运行并及时通知运维人员关键服务器的健康状态,大大减轻了人工监控的负担。
3、预防性维护:
通过定期监控服务器的CPU使用率,运维人员可以及早发现可能出现性能问题的服务器。这使得他们能够采取预防性的维护措施,如优化代码、增加硬件资源或迁移工作负载,以避免潜在的故障和性能下降。
4、多服务器环境管理:
对于大型分布式系统或云环境,存在着许多远程服务器,需要及时了解它们的状态。脚本可以轻松扩展以支持多个远程服务器,并根据需要在配置文件中添加或删除主机信息,从而提供对整个服务器群集的全面监控和管理。

脚本示例

import subprocessimport smtplibfrom email.mime.text import MIMETextfrom email.header import Headerimport paramikoimport getpassimport time
# 主机信息文件路径HOSTS_FILE = 'hosts.txt'
# 检查间隔时间(秒)CHECK_INTERVAL = 60
# 阈值(CPU 使用率百分比)THRESHOLD = 80
# 邮件配置SMTP_SERVER = 'smtp.example.com'SMTP_PORT = 587SMTP_USERNAME = 'your_username'SMTP_PASSWORD = ''SENDER = 'sender@example.com'RECIPIENTS = ['recipient1@example.com', 'recipient2@example.com']
# 从主机信息文件中读取主机信息def read_hosts(): hosts = [] with open(HOSTS_FILE, 'r') as file: for line in file: host, username, key_filename = line.strip().split(',') hosts.append({'host': host, 'username': username, 'key_filename': key_filename}) return hosts
# 检查服务器状态def check_server_status(server): host = server['host'] username = server['username'] key_filename = server['key_filename']
# 创建 SSH 客户端 client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try: # 使用密钥连接远程服务器 client.connect(hostname=host, username=username, key_filename=key_filename) except paramiko.AuthenticationException as e: print(f'连接服务器 {host} 失败: {e}') return False
# 执行命令获取 CPU 使用率 command = 'top -bn1 | grep \'Cpu(s)\'' stdin, stdout, stderr = client.exec_command(command) output = stdout.read().decode('utf-8') client.close()
# 解析 CPU 使用率 cpu_usage = float(output.split()[1])
# 判断 CPU 使用率是否超过阈值 if cpu_usage > THRESHOLD: send_alert_email(server, cpu_usage) return False
return True
# 发送邮件通知def send_alert_email(server, cpu_usage): host = server['host']
subject = f'服务器 {host} CPU 使用率过高' content = f'服务器 {host} 的 CPU 使用率为 {cpu_usage:.2f}%,超过阈值 {THRESHOLD}%'
msg = MIMEText(content, 'plain', 'utf-8') msg['Subject'] = Header(subject, 'utf-8') msg['From'] = SENDER msg['To'] = ','.join(RECIPIENTS)
try: with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as smtp: smtp.starttls() smtp.login(SMTP_USERNAME, SMTP_PASSWORD) smtp.sendmail(SENDER, RECIPIENTS, msg.as_string()) print(f'邮件通知已发送:{subject}') except smtplib.SMTPException as e: print(f'发送邮件失败: {e}')
# 主函数def main(): # 读取主机信息 hosts = read_hosts()
while True: for host_info in hosts: if not check_server_status(host_info): continue
time.sleep(CHECK_INTERVAL)
# 获取邮箱密码def get_email_password(): password = getpass.getpass('请输入邮箱密码:') return password
# 执行主函数if __name__ == '__main__': SMTP_PASSWORD = get_email_password()    main()

通过使用"远程服务器健康检查脚本",运维人员可以轻松监控和管理多个远程服务器的健康状态。这有助于及时发现潜在的性能问题并采取必要的措施,从而确保服务器的稳定性和可靠性。此外,脚本的自动化特性提高了运维效率,减少了人工监控的负担。无论是对于小型企业还是大型分布式系统,"远程服务器健康检查脚本"都是一个有用的工具,可以提供实时的服务器监控和维护。

结束!如有不足之处,欢迎指正!

来不及解释了,快上车!(加我微信拉你进群):

欢迎新的小伙伴加入!在这里,我们鼓励大家积极参与群内讨论和交流,分享自己的见解和经验,一起学习和成长。同时,也欢迎大家提出问题和建议,让我们不断改进和完善这个平台。


原文作者:运维book思议;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2022-09-24

  • 博文量
    333
  • 访问量
    215240