Coding

网络监控免费版

Try it

面向个人开发者与小团队的网站可用性监控工具. 核心能力: ICMP Ping、HTTP 检测、邮件告警、可用性统计、基础可视化 适用场景: 个人博客监控、API 健康检查、家庭网络监控、小团队项目 差异化: 免费版聚焦个人监控需求,轻量部署,适合个人开发者 适用关键词: 网站监控, Ping检测, HTTP健康检查, 可用性监控, 告警通知

What it does

面向个人开发者与小团队的网站可用性监控工具. 核心能力: ICMP Ping、HTTP 检测、邮件告警、可用性统计、基础可视化 适用场景: 个人博客监控、API 健康检查、家庭网络监控、小团队项目 差异化: 免费版聚焦个人监控需求,轻量部署,适合个人开发者 适用关键词: 网站监控, Ping检测, HTTP健康检查, 可用性监控, 告警通知

The skill document

网络监控 (免费版)

概述

本工具为个人开发者与小团队提供轻量的网站可用性监控能力,支持 ICMP Ping、HTTP 健康检查、邮件告警、可用性统计与基础可视化。轻量部署,几分钟内即可启动监控,适合个人博客、API 服务、家庭网络等场景. 免费版聚焦个人监控需求,适合个人开发者、独立项目维护者使用.

核心能力

能力模块描述免费版支持
ICMP Ping主机可达性检测支持
HTTP 检测网站健康检查支持
TCP 端口检测端口开放检测支持
邮件告警异常邮件通知支持
可用性统计在线率统计支持
基础可视化简单图表支持
多地区监控多地域检测不支持 (升级 PRO)
短信/IM 告警即时通讯通知不支持 (升级 PRO)
历史数据长期数据存储30 天
API 监控接口性能监控不支持 (升级 PRO)
状态页公开状态页不支持 (升级 PRO)
团队协作多人协作不支持 (升级 PRO)

核心功能执行

input_params参数进行配置.

处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

参数配置与调用

config_options参数进行配置.

处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用config_options参数,支持修改/重置/导入操作

结果处理与输出

output_format参数进行配置.

处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用output_format参数,支持导出/保存/转换操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:网站可用性监控、告警通知与基础可、面向个人开发者与、小团队的网站可用、性监控工具、核心能力、适用场景、个人博客监控、家庭网络监控、小团队项目、差异化、免费版聚焦个人监、控需求、轻量部署、适合个人开发者、适用关键词、网站监控、可用性监控、告警通知等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.

使用场景

场景一: 个人博客监控

监控个人博客是否可访问.

import subprocess
import smtplib
from email.mime.text import MIMEText
from datetime import datetime
from pathlib import Path
import json
# ...
class PingMonitor:
    def __init__(self, config_path="~/.ping-monitor/config.json"):
        self.config = self._load_config(config_path)
        self.data_dir = Path("~/.ping-monitor/data").expanduser()
        self.data_dir.mkdir(parents=True, exist_ok=True)
# ...
    def _load_config(self, path):
        default = {
            "targets": [],
            "interval_seconds": 60,
            "timeout_seconds": 5,
            "alert_email": None,
            "smtp": None,
        }
        p = Path(path).expanduser()
        if p.exists():
            return json.loads(p.read_text())
        return default
# ...
    def ping(self, host):
        """ICMP Ping 检测"""
        try:
            result = subprocess.run(
                ["ping", "-c", "1", "-W", str(self.config["timeout_seconds"]), host],
                capture_output=True,
                timeout=self.config["timeout_seconds"] + 5,
            )
            return result.returncode == 0
        except Exception:
            return False
# ...
    def http_check(self, url, expected_status=200):
        """HTTP 健康检查"""
        import requests
        try:
            resp = requests.get(url, timeout=self.config["timeout_seconds"])
            return resp.status_code == expected_status
        except Exception:
            return False
# ...
    def monitor_once(self):
        """执行一次监控"""
        results = []
        for target in self.config["targets"]:
            if target["type"] == "icmp":
                ok = self.ping(target["host"])
            elif target["type"] == "http":
http_check(target["url"])
            else:
                continue
# ...
            results.append({
                "target": target,
                "status": "up" if ok else "down",
                "timestamp": datetime.now().isoformat(),
            })
# ...
            if not ok:
                self._alert(target)
# ...
        self._save_results(results)
        return results
# ...
    def _alert(self, target):
        """发送告警"""
        if not self.config.get("alert_email"): return
        subject = f"[告警] {target.get('name', target.get('host', '未知'))} 不可达"
        body = f"""
监控目标: {target}
检测时间: {datetime.now()}
状态: 不可达 (DOWN)
# ...
请检查服务状态.
"""
        self._send_email(subject, body)
# ...
    def _send_email(self, subject, body):
        """发送邮件"""
        smtp_config = self.config.get("smtp")
        if not smtp_config: return
# ...
        msg = MIMEText(body)
        msg["Subject"] = subject
        msg["From"] = smtp_config["from"]
        msg["To"] = self.config["alert_email"]
# ...
        with smtplib.SMTP(smtp_config["host"], smtp_config["port"]) as server:
            server.starttls()
            server.login(smtp_config["user"], smtp_config["password"])
            server.send_message(msg)
# ...
    def _save_results(self, results):
        """保存监控结果"""
        today = datetime.now().strftime("%Y-%m-%d")
        log_file = self.data_dir / f"{today}.jsonl"
        with open(log_file, "a") as f:
            for r in results:
                f.write(json.dumps(r, ensure_ascii=False) + "\n")
# ...
    def availability_stats(self, days=7):
        """可用性统计"""
        from datetime import timedelta
        stats = {}
        for i in range(days):
            date = (datetime.now() - timedelta(days=i)).strftime("%Y-%m-%d")
data_dir / f"{date}.jsonl"
            if not log_file.exists(): continue
# ...
            for line in log_file.read_text().splitlines():
                r = json.loads(line)
                name = r["target"].get("name", r["target"].get("host"))
                if name not in stats:
                    stats[name] = {"total": 0, "up": 0}
                stats[name]["total"] += 1
                if r["status"] == "up":
                    stats[name]["up"] += 1
# ...
        return {
            name: {
                "availability_pct": round(s["up"] / s["total"] * 100, 2),
                "total_checks": s["total"],
                "up_checks": s["up"],
            }
            for name, s in stats.items()
        }
# ...
# 示例
monitor = PingMonitor()
monitor.config["targets"] = [
    {"name": "我的博客", "type": "http", "url": "https://example.com"},
    {"name": "服务器", "type": "icmp", "host": "192.168.1.1"},
]
monitor.config["interval_seconds"] = 60
# ...
# 执行一次监控
results = monitor.monitor_once()
# 查看可用性
stats = monitor.availability_stats(days=7)

场景二: API 健康检查

监控 API 服务是否正常响应.

def check_api_health(url, expected_response=None):
    """检查 API 健康状态"""
    import requests
    try:
get(url, timeout=10)
        if resp.status_code != 200:
            return {"healthy": False, "reason": f"HTTP {resp.status_code}"}
        if expected_response:
            data = resp.json()
            for key, value in expected_response.items():
                if data.get(key) != value:
                    return {"healthy": False, "reason": f"{key} 不匹配"}
        return {"healthy": True, "response_time_ms": round(resp.elapsed.total_seconds() * 1000)}
    except Exception as e:
        return {"healthy": False, "reason": str(e)}

场景三: 定时监控

设置定时任务持续监控.

# Linux/macOS: crontab 配置
crontab -e
# ...
# 添加每分钟监控
* * * * * python ~/.ping-monitor/monitor.py
# ...
# 或使用 systemd timer
cat > ~/.config/systemd/user/ping-monitor.timer << 'EOF'
[Unit]
Description=Ping Monitor
# ...
[Timer]
OnBootSec=1min
OnUnitActiveSec=1min
# ...
[Install]
WantedBy=timers.target
EOF

不适用场景

以下场景网络监控免费版不适合处理:

  • 实时流数据处理
  • 小规模数据手动分析
  • 非结构化文本情感分析

触发条件

需要数据分析、报表生成、统计洞察、数据可视化时使用。不适用于非本工具能力范围的需求.

快速开始

Step 1: 初始化监控配置

mkdir -p ~/.ping-monitor/data
cat > ~/.ping-monitor/config.json << 'EOF'
{
  "targets": [
    {"name": "博客", "type": "http", "url": "https://example.com"},
  ],
  "interval_seconds": 60,
  "timeout_seconds": 5
}
EOF

Step 2: 测试监控

python -c "
from monitor import PingMonitor
m = PingMonitor()
results = m.monitor_once()
for r in results:
    print(f'{r[\"target\"][\"name\"]}: {r[\"status\"]}')"

Step 3: 配置定时任务

# 每分钟执行监控
crontab -e
# 添加: * * * * * python ~/.py

Step 4: 配置告警 (可选)

{
  "alert_email": "you@example.com",
  "smtp": {
    "host": "smtp.gmail.com",
    "port": 587,
    "user": "you@gmail.com",
    "password": "app_password",
    "from": "you@gmail.com"
  }
}

配置示例

监控配置

# ~/.ping-monitor/config.yaml
targets:
  - name: 个人博客
    type: http
    url: https://myblog.com
    expected_status: 200
    timeout: 10
# ...
  - name: API 服务
    type: http
    url: https://api.myservice.com/health
    expected_response:
      status: ok
    timeout: 5
# ...
  - name: 数据库服务器
    type: icmp
    host: 192.168.1.100
    timeout: 5
# ...
  - name: SSH 端口
    type: tcp
    host: 192.168.1.100
    port: 22
    timeout: 5
# ...
settings:
  interval_seconds: 60
  timeout_seconds: 10
  retry_on_failure: 3
  alert_cooldown_minutes: 30  # 避免告警风暴
# ...
alerting:
  email:
    enabled: true
    address: alerts@example.com
    smtp:
      host: smtp.gmail.com
      port: 587
# ...
storage:
  data_dir: ~/.ping-monitor/data
  retention_days: 30
  format: jsonl

可用性报告模板

def generate_report(stats):
    """生成可用性报告"""
    report = "网站可用性报告\n"
    report += "=" * 40 + "\n"
        status = "正常" if s["availability_pct"] >= 99.9 else "异常"
        report += f"\n{name}:\n"
        report += f"  可用率: {s['availability_pct']}%\n"
        report += f"  检测次数: {s['total_checks']}\n"
        report += f"  正常次数: {s['up_checks']}\n"
        report += f"  状态: {status}\n"
    return report

最佳实践

1. 监控频率

监控频率建议:
- 关键服务: 1 分钟
- 一般服务: 5 分钟
- 个人项目: 10 分钟
# ...
注意: 过于频繁可能造成服务器压力.

2. 告警策略

def smart_alert(target, failure_count, cooldown):
    """智能告警策略"""
    # 连续失败 3 次才告警,避免误报
    if failure_count < 3:
        return None
    # 告警冷却,避免告警风暴
    if cooldown.active:
        return None
    return f"目标 {target} 连续 {failure_count} 次检测失败"

3. 数据保留

def cleanup_old_data(data_dir, retention_days=30):
    """清理过期数据"""
    from datetime import timedelta
    cutoff = datetime.now() - timedelta(days=retention_days)
    for f in Path(data_dir).glob("*.jsonl"):
        date_str = f.stem
        try:
            file_date = datetime.strptime(date_str, "%Y-%m-%d")
            if file_date < cutoff:
                f.unlink()
        except ValueError:
            continue

常见问题

Q1: 免费版能监控多少目标?

无硬性上限,但建议不超过 20 个目标,以保证性能.

Q2: 数据保留多久?

免费版保留 30 天。长期数据存储需要 PRO 版本.

Q3: 支持哪些告警渠道?

免费版支持邮件告警。短信、IM (Slack、钉钉、飞书) 需要 PRO 版本.

Q4: 部署在哪里?

部署在任意可访问目标的服务器或本地机器。建议部署在云服务器以保证持续运行.

Q5: 误报如何处理?

设置连续失败阈值 (如 3 次) 与告警冷却 (如 30 分钟),减少误报.

依赖说明

运行环境

  • Agent 平台: 支持 SKILL.md 规范的任意 AI Agent (Claude Code、Cursor、Codex、Gemini CLI 等)
  • 操作系统: Windows / macOS / Linux
  • 网络: 需访问监控目标

依赖详情

依赖项类型是否必需获取方式
LLM API推理服务必需由 Agent 内置 LLM 提供
Python 3.8+运行时推荐python.org 下载
requestsPython 库HTTP 检测pip install requests
ping系统工具ICMP 检测系统自带
cron / systemd定时任务推荐系统自带

API Key 配置

# 免费版无需外部 API Key
# ...
# 可选: SMTP 配置 (邮件告警)
export SMTP_HOST="smtp.gmail.com"
export SMTP_USER="you@gmail.com"
export SMTP_PASSWORD="app_password"
export ALERT_EMAIL="you@example.com"

可用性分类

  • 分类: MD+EXEC (Markdown 指令 + 命令行执行)
  • 说明: 本 Skill 通过自然语言指令驱动 Agent 执行网络监控,数据本地存储
  • 免费版限制: 单用户、30 天数据、邮件告警、单地区检测、无 API 性能监控

错误处理

错误场景原因处理方式
配置错误参数缺失或格式错误检查依赖说明中的配置要求
运行时错误运行环境不满足确认运行环境符合依赖说明
网络错误连接超时或不可达执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案

已知限制

  • 免费版不支持HTTPS证书过期监控和内容变化检测,仅支持基础ICMP/HTTP状态码检测
  • 告警通知仅支持邮件渠道,短信/Webhook/即时通讯通知需升级到付费版
  • 监控频率最低为5分钟,不适合需要秒级响应的高可用性场景

示例

基本用法

输出:返回执行结果,包含操作状态和输出数据

用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功

输出格式

{
  "success": true,
  "data": {
    "result": "网络监控免费版处理结果",
    "execution_time": "0.5s",
    "metadata": {
      "version": "1.0",
      "processor": "ping monitor"
    }
  },
  "execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
  "error": null
}

Related skills

个人服务器监控工具,支持CPU/内存/磁盘基础指标与简单告警通知。Use when 需要系统监控、日志分析、运维告警、部署管理时使用。不适用于物理硬件维修。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。

1 installs

网络连通性诊断工具免费版,面向个人开发者的轻量级网络排障工具。核心能力: 网络连通性检测(ping/traceroute)、端口开放性扫描、DNS解析诊断、路由追踪分析。适用场景: 开发者排查API连接超时、DNS解析异常、端口不通等网络问题。差异化: 免费版聚焦核心诊断功能,去除所有外部平台引用,强化中文本地化,适合个人用户零成本上手

1 installs

屏幕监控工具免费版,面向个人用户的屏幕共享与分析. 核心能力: - 单次屏幕截图 - 定时自动截图(间隔可调) - 截图本地保存与管理 - 屏幕内容基础分析 - 双模式运行(主动/被动) 适用场景: - 远程协助截图 - 工作进度记录 - 屏幕内容存档 差异化:免费版提供基础截图能力。PRO版扩展实时流共享、多屏支持、AI 分析与企业级监控. 适用关键词: screenshot, 屏幕截图, screen capture, 监控, screen share, 定时截图

轻量级服务监控工具免费版,面向个人开发者与小型项目。核心能力:. 适用于需要monitor toolkit相关能力的开发场景,包含结构化的工作流程和可复用的模板,帮助用户快速完成任务并保持代码质量. 适用于需要monitor toolkit相关能力的开发场景,包含结构化的工作流程和配置指引. 该工具经过深度差异化处置,针对用户反馈和使用痛点进行了调优改进,提升了实用性和可操作性.

1 installs

全平台状态监控助手。监控AI平台可达性、关键词变化、响应时间、竞品动态,支持飞书/微信/钉钉通知、定时巡检、健康度评分。触发词:"监控XX平台"、"检查XX状态"、"XX是不是挂了"、"每天9点帮我检查"、"有没有新公告"、"竞品有什么变化"。

3 installs

AI生成内容验证与策略检查工具,支持黑白名单管理、内容分类与基础策略执行,适合个人开发者内容审核。Use when 需要代码生成、编程辅助、调试测试、开发部署时使用。不适用于无明确技术栈的模糊需求。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。