网站监控源码

网站监控源码

凌晨三点,网站我盯着终端里滚动的监控日志,一个404状态码跳了出来。源码那是网站我自己的服务器,某个爬虫正试图访问一个不存在的监控路径。没人会在这个点手动敲URL,源码除非是网站脚本在扫描漏洞。监控源码的监控价值,在这一刻变得具体——它让你看见那些看不见的源码访问者。

写监控系统,网站核心就一句话:定时请求,监控记录响应,源码异常告警。网站但真做起来,监控坑比想象多。源码第一版我用了Python的requests库,每五分钟GET一次首页,检查状态码是不是200。简单粗暴,跑了一周,发现服务器宕机两小时都没察觉——因为那两小时里,网站恰好返回200(缓存页面)。你看,监控本身也会骗人。

后来改成检查页面里的关键字符,比如标签内容。要是返回的HTML里没有“我的博客”四个字,就算HTTP 200也当故障处理。这个改动救了两次命,一次是数据库连接池耗尽导致页面白屏,一次是CDN回源失败返回了默认欢迎页。监控要监控“业务成功”,不是“请求成功”。</p> <p>代码结构其实很朴素。一个主循环,里面塞三个函数:<code>fetch_url()</code>负责请求,设置10秒超时;<code>parse_response()</code>提取状态码、响应时间、页面大小;<code>compare_with_threshold()</code>把结果和预设规则比对。规则存在JSON文件里,比如<code>{ "url": "https://example.com", "max_response_time": 2000, "expected_string": "欢迎"}</code>。改规则不用动代码,改配置就行。</p> <p>告警部分最折腾。邮件太慢,短信要钱,最后选了Telegram Bot——免费,推送快,还能带截图。代码里就几行:<code>requests.post(f"https://api.telegram.org/bot{ token}/sendMessage", data={ "chat_id": chat_id, "text": message})</code>。但有个坑:Telegram在某些网络环境下会被墙,所以告警通道本身也得监控,不然服务器挂了,告警也发不出去,等于白搭。</p> <p>存储这块,我没用数据库,直接写JSON文件。每天一个文件,按时间戳命名,记录每次检查的结果。文件大小一天也就几百KB,攒一年才几百MB,硬盘完全扛得住。真出了事,用grep搜时间戳,比查数据库还快。有人觉得这不够“工程化”,可个人站长要的是实用,不是架构评审。</p> <p>还有个细节容易被忽略——<strong>监控脚本本身会崩</strong>。Python进程被OOM killer干掉,或者服务器重启后没设开机自启,监控就静默失效了。我的解决办法是crontab里写两行:一行跑监控,一行检查监控进程是否活着,死了就重启。虽然笨,但管用。</p> <p>现在这套源码跑在树莓派上,功耗五瓦,已经连续运行了214天。偶尔半夜收到告警,爬起来看,多数是某个外部API超时,不是自己网站的问题。但那种“知道发生了什么”的感觉,比睡个安稳觉踏实。监控源码的价值不在于代码多漂亮,而在于它把不确定性变成了可处理的日志。</p> <p>说到底,写监控就是写一种对失控的恐惧。你越清楚系统会怎么挂,就越能在它挂之前做点什么。源码里没有魔法,只有对HTTP协议的敬畏,和对“一切都会出问题”这个事实的坦然接受。</p> </article> </div> <div class="bba"> <div class="share bbm"> <div class="mip-share-container "> <mip-share></mip-share> </div> </div> </div> <div class="post-navigation"> <a href="http://www.79wt.cn/zhishi/" class="backtolist" title="知识" data-title="知识">知识</a> <div class="post-previous"> <span>上一篇:</span><a href="http://www.79wt.cn/news/1351e099864.html">为什么男朋友喜欢看我洞洞</a> </div> <div class="post-previous"> <span>下一篇:</span><a href="http://www.79wt.cn/news/771f899220.html">齐鲁银行金融诈骗案</a> </div> <div class="post-next"></div> </div> <div id="related-posts" class="related-posts"> <h3> <span class="h3line">相关文章</span> </h3> <ul class="widget-content">、 <li class="related-item post-thumbnail"><a data-type="mip" class="item-link" href="http://www.79wt.cn/news/724e799268.html" data-title="php获取网页源码" title="php获取网页源码"> <mip-img layout="container" width="192" height="116" src="http://n.sinaimg.cn/translate/698/w899h599/20181003/TX0p-hkvrhps2624694.jpg"></mip-img> <span>php获取网页源码</span> </a></li> <li class="related-item post-thumbnail"><a data-type="mip" class="item-link" href="http://www.79wt.cn/news/736f1299251.html" data-title="2024网络流行语热词" title="2024网络流行语热词"> <mip-img layout="container" width="192" height="116" src="http://n.sinaimg.cn/news/1_img/vcg/2b0c102b/107/w1024h683/20181109/iNxJ-hnprhzw6750458.jpg"></mip-img> <span>2024网络流行语热词</span> </a></li> <li class="related-item post-thumbnail"><a data-type="mip" class="item-link" href="http://www.79wt.cn/news/776c1299211.html" data-title="免费招聘软件哪个比较靠谱" title="免费招聘软件哪个比较靠谱"> <mip-img layout="container" width="192" height="116" src="http://n.sinaimg.cn/news/transform/200/w600h400/20180508/yUeg-hacuuvu7983514.jpg"></mip-img> <span>免费招聘软件哪个比较靠谱</span> </a></li> <li class="related-item post-thumbnail"><a data-type="mip" class="item-link" href="http://www.79wt.cn/news/1246b1299863.html" data-title="沈阳华泰安培培训中心" title="沈阳华泰安培培训中心"> <mip-img layout="container" width="192" height="116" src="http://n.sinaimg.cn/news/1_img/vcg/72f96829/107/w1024h683/20181226/3gBt-hqtwzec4406975.jpg"></mip-img> <span>沈阳华泰安培培训中心</span> </a></li> </ul> </div> </article> </div> </div> <aside class="sidebar-right"> <div class="widget-box widget wow fadeInDown" id="tabcelan"> <h3 class="widget-title"> <i class="fa fa-th"></i>最新文章 </h3> <ul class="widget-content tabcelan"> <li id="con_one" class="con_one_list"> <ul id="con_one_1"> <li><span class="li-icon li-icon-1">1</span> <a href="http://www.79wt.cn/news/1613d099838.html" data-type="mip" data-title="吉林技术有限公司ICP备" title='吉林技术有限公司ICP备'>吉林技术有限公司ICP备</a> </li> <li><span class="li-icon li-icon-2">2</span> <a href="http://www.79wt.cn/news/057b1299930.html" data-type="mip" data-title="seo是什么职位的简称" title='seo是什么职位的简称'>seo是什么职位的简称</a> </li> <li><span class="li-icon li-icon-3">3</span> <a href="http://www.79wt.cn/news/029c1299958.html" data-type="mip" data-title="动漫素材视频网站" title='动漫素材视频网站'>动漫素材视频网站</a> </li> <li><span class="li-icon li-icon-4">4</span> <a href="http://www.79wt.cn/news/929a1299058.html" data-type="mip" data-title="burpsuite2023使用教程" title='burpsuite2023使用教程'>burpsuite2023使用教程</a> </li> <li><span class="li-icon li-icon-5">5</span> <a href="http://www.79wt.cn/news/343e199655.html" data-type="mip" data-title="举报网站" title='举报网站'>举报网站</a> </li> <li><span class="li-icon li-icon-6">6</span> <a href="http://www.79wt.cn/news/936c1299051.html" data-type="mip" data-title="重庆建委检测公司电话" title='重庆建委检测公司电话'>重庆建委检测公司电话</a> </li> <li><span class="li-icon li-icon-7">7</span> <a href="http://www.79wt.cn/news/465a1299522.html" data-type="mip" data-title="临夏检测机构" title='临夏检测机构'>临夏检测机构</a> </li> <li><span class="li-icon li-icon-8">8</span> <a href="http://www.79wt.cn/news/839d1299148.html" data-type="mip" data-title="腾讯围棋注册名字显示非法调用" title='腾讯围棋注册名字显示非法调用'>腾讯围棋注册名字显示非法调用</a> </li> <li><span class="li-icon li-icon-9">9</span> <a href="http://www.79wt.cn/news/588c099411.html" data-type="mip" data-title="莆田學院官網" title='莆田學院官網'>莆田學院官網</a> </li> </ul> </li> </ul> </div> <div class="widget-box widget wow lanmu"> <h3 class="widget-title"> <i class="fa fa-th"></i>分类栏目 </h3> <ul> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/xiuxian/" rel="bookmark" data-type="mip" data-title="休闲" title="休闲">休闲</a></li> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/yule/" rel="bookmark" data-type="mip" data-title="娱乐" title="娱乐">娱乐</a></li> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/zhishi/" rel="bookmark" data-type="mip" data-title="知识" title="知识">知识</a></li> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/jiaodian/" rel="bookmark" data-type="mip" data-title="焦点" title="焦点">焦点</a></li> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/shishang/" rel="bookmark" data-type="mip" data-title="时尚" title="时尚">时尚</a></li> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/redian/" rel="bookmark" data-type="mip" data-title="热点" title="热点">热点</a></li> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/tansuo/" rel="bookmark" data-type="mip" data-title="探索" title="探索">探索</a></li> <li class="cat-item cat-item-107"><a href="http://www.79wt.cn/zonghe/" rel="bookmark" data-type="mip" data-title="综合" title="综合">综合</a></li> </ul> </div> <div class="widget-box widget wow"> <h3 class="widget-title"> <i class="fa fa-th"></i>最新推荐 </h3> <ul class="widget-content tabcelan"> <li id="con_one" class="con_one_list"> <ul id="con_one_1"> <li><span class="li-icon li-icon-1">1</span> <a href="http://www.79wt.cn/news/539d799453.html" data-type="mip" data-title="合肥黑老大" title='合肥黑老大'>合肥黑老大</a> </li> <li><span class="li-icon li-icon-2">2</span> <a href="http://www.79wt.cn/news/1172c1299870.html" data-type="mip" data-title="渗透电视剧全集免费观看完整版" title='渗透电视剧全集免费观看完整版'>渗透电视剧全集免费观看完整版</a> </li> <li><span class="li-icon li-icon-3">3</span> <a href="http://www.79wt.cn/news/648f1299339.html" data-type="mip" data-title="模拟黑客网站代码" title='模拟黑客网站代码'>模拟黑客网站代码</a> </li> <li><span class="li-icon li-icon-4">4</span> <a href="http://www.79wt.cn/news/108a1299879.html" data-type="mip" data-title="网站关停后域名不注销被网安部门处罚" title='网站关停后域名不注销被网安部门处罚'>网站关停后域名不注销被网安部门处罚</a> </li> <li><span class="li-icon li-icon-5">5</span> <a href="http://www.79wt.cn/news/110d999880.html" data-type="mip" data-title="快递漏单" title='快递漏单'>快递漏单</a> </li> <li><span class="li-icon li-icon-6">6</span> <a href="http://www.79wt.cn/news/708e1299279.html" data-type="mip" data-title="湖南湘菜品牌加盟" title='湖南湘菜品牌加盟'>湖南湘菜品牌加盟</a> </li> <li><span class="li-icon li-icon-7">7</span> <a href="http://www.79wt.cn/news/1757f1299812.html" data-type="mip" data-title="网站根目录怎么打开" title='网站根目录怎么打开'>网站根目录怎么打开</a> </li> <li><span class="li-icon li-icon-8">8</span> <a href="http://www.79wt.cn/news/1944f1299793.html" data-type="mip" data-title="渗透率查询" title='渗透率查询'>渗透率查询</a> </li> <li><span class="li-icon li-icon-9">9</span> <a href="http://www.79wt.cn/news/1893d899802.html" data-type="mip" data-title="cvss漏洞评分官网" title='cvss漏洞评分官网'>cvss漏洞评分官网</a> </li> </ul> </li> </ul> </div> </aside> </div> <div class="clear"></div> </div> <div class="container-fluid links wow fadeInDown"> <div class="links-box"> <ul> </ul> <div class="clear"></div> </div> </div> </main> <div class="clear"></div> <footer class="footer"> <div class="footer_container"> <div class="clearfix"> <div class="footer-col footer-col-logo"></div> <div class="footer-col footer-col-copy"> <ul class="footer-nav hidden-xs"> <li class="menu-item"><a href="http://www.miitbeian.gov.cn/" rel="nofollow" target="_blank" class="beian-ico" title=""></a></li> </ul> <div class="copyright"> Copyright <i class="fa fa-copyright"></i>2026 Powered By <a data-type="mip" href="http://www.79wt.cn/" target="_blank">力不从心网</a> </div> </div> <div class="footer-col footer-col-sns"> <div class="footer-sns"> <a class="sns-wx" target="_blank" title="网站地图" href="/sitemap.xml"><i class="fa fa-envelope"></i></a> </a> </div> </div> </div> </div> </footer><mip-fixed type="gototop"><mip-gototop></mip-gototop></mip-fixed> <script src="https://c.mipcdn.com/static/v2/mip.js"></script> <script src="https://c.mipcdn.com/static/v2/mip-stats-baidu/mip-stats-baidu.js"></script> <script src="https://c.mipcdn.com/static/v2/mip-sidebar/mip-sidebar.js"></script> <script src="https://c.mipcdn.com/static/v2/mip-gototop/mip-gototop.js" type="text/javascript" charset="utf-8"></script> <script src="https://c.mipcdn.com/static/v2/mip-history/mip-history.js" type="text/javascript" charset="utf-8"></script> <script src="https://c.mipcdn.com/static/v2/mip-fixed/mip-fixed.js" type="text/javascript" charset="utf-8"></script> <script src="https://c.mipcdn.com/static/v2/mip-share/mip-share.js" type="text/javascript" charset="utf-8"></script> <script src="https://c.mipcdn.com/static/v2/mip-form/mip-form.js" type="text/javascript" charset="utf-8"></script> <script src="https://c.mipcdn.com/extensions/platform/v2/mip-cambrian/mip-cambrian.js"></script> <script src="https://mipcache.bdstatic.com/static/v2/mip-changyan/mip-changyan.js"></script> <script src="https://c.mipcdn.com/static/v2/mip-lightbox/mip-lightbox.js"></script> <script src="https://c.mipcdn.com/static/v2/mip-semi-fixed/mip-semi-fixed.js"></script> </body> </html>