2019-11-04-Linux监控和警报简介
2019-11-04-Linux监控和警报简介 Linux Monitoring 【翻译】Linux监视和警报简介 您是否曾经想设置一个过程监视器来在离线时向您发出警报,而无需花费数千美元的预算呢?每个系统管理员都有,这是执行的方法。 有些系统管理员喜欢自己写监控告警的东西,然而我们当中有些人必须去做这些事,因为没有充足的预算投入到监控告警上。企业级别的监控告警组件适用于有较多预算的公司,或者需要 100% 在线(运行)的重要任务、系统或服务。 有一些开源的监控告警组件,但是它们只运行在指定的操作系统上以及需要大量的时间去配置。大多数还要求将监控程序安装在受监控的端点上,这需要批准和部署的时间。更快、更轻松的方法就是自己写监控告警脚本,然后通过cron计划运行。本地化(每台服务器)监控警报的好处是,你可以单独设置告警阈值,而不必使用无法满足需求的全剧配置。 本文将引导你完成创建脚本的过程,该脚本每五分钟检查一次 Apache Web 服务器进程,如果它关闭了,则尝试重新启动它,如果它关闭了 30 秒以上且无法重新启动,则通过电子邮件发出告警。 大多数进程在运行时在 /run 目录下有一个进程 ID 文件(*.pid),其中很多进程都有自己的单独目录,其中包含各自的 PID 文件。在此示例中,Apache Web 服务器(httpd)具有一个 PID 文件:/run/httpd/httpd.pid。 我将此脚本命名为 apache.sh,并将其放置在根目录的主目录中。请确保该文件的权限为 rwxr-x---,以便其他用户无法执行或修改该文件。 $sudo chmod 750 apache.sh 注意:如果您没有安装 Apache,那么没关系,因为您可以将脚本中指向的 httpd.pid 文件替换成适用于系统的任何其他 PID 文件。 创建此类脚本的方法有很多,但这就是我的方法,并且可以正常工作。我用变量 FILE 标示了 PID 文件。我决定不是让 Apache Web 服务器宕机发送警报,而是让脚本尝试重新启动服务,然后再次检查。我又重复了两次,等待两次检查之间的间隔为 10 秒。如果 Apache 服务仍然关闭并且 30 秒后无法重新启动,则脚本向系统管理员团队发送电子邮件: #!/bin/bash FILE=/run/httpd/httpd.pid if ! [ -f "$FILE" ]; then systemctl start httpd.service fi sleep 10s if ! [ -f "$FILE" ]; then systemctl start httpd.service fi sleep 10s if ! [ -f "$FILE" ]; then systemctl start httpd.service fi sleep 10s if ! [ -f "$FILE" ]; then mail -s 'Apache is down' sysadmins@mydomain.com <<< 'Apache is down on SERVER1 and cannot be restarted' fi 你可以轻松的将 SMS 消息发送到团队通话手机。该脚本检查是否存在 httpd.pid 文件,如果未找到,则采取措施。 如果文件存在,则不执行任何操作。 没有人愿意每隔五分钟收到一封电子邮件或注意到服务已启动。 ...