用 Apache2 内置模块监控服务器状态
一 启用并配置 mod_status
<Location "/server-status">
SetHandler server-status
Require local
Require ip 203.0.113.10 198.51.100.20
</Location>
二 访问状态页面与解读
三 安全与排错要点
RewriteEngine On
RewriteBase /
RewriteRule ^server-status$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
四 进阶 外部监控与告警
import requests, time, smtplib
from email.mime.text import MIMEText
URL = "http://localhost/server-status?auto"
SMTP = ("smtp.example.com", 587)
CRED = ("you@example.com", "password")
FROM, TO = "you@example.com", "ops@example.com"
def alert(subj, msg):
m = MIMEText(msg)
m["Subject"], m["From"], m["To"] = subj, FROM, TO
with smtplib.SMTP(*SMTP) as s:
s.starttls()
s.login(*CRED)
s.sendmail(FROM, [TO], m.as_string())
while True:
try:
r = requests.get(URL, timeout=5)
if r.status_code != 200:
alert("Apache状态页异常", f"HTTP {r.status_code}\n{r.text[:200]}")
except Exception as e:
alert("Apache状态页不可达", str(e))
time.sleep(60)