当前位置:首页>Linux>Linux监控平台演进:利用Python构建企业级智能监控平台

Linux监控平台演进:利用Python构建企业级智能监控平台

  • 2026-08-18 23:11:32
Linux监控平台演进:利用Python构建企业级智能监控平台
Linux监控平台演进:利用Python构建企业级智能监控平台

摘要:针对传统运维中被动响应与现有监控工具部署繁重的痛点,本文提出一种轻量级企业智能监控平台的演进方案。文章遵循“Shell脚本优化 -> Python逻辑封装 -> Flask集中管控”的技术路径,系统阐述了从单机自动化到集群可视化的构建过程。通过引入动态阈值、服务自愈机制及Agent-Server架构,实现了监控系统的低耦合与高扩展。

本方案旨在为运维人员提供一套高效、可控的自动化运维实践指南,以替代复杂的传统监控体系。助力运维工作从重复性劳动中解放,聚焦于更高价值的架构优化与业务支撑。

详细内容请查阅下文。

一、基石构建:Shell脚本的“生产级”改造

在生产环境中,高效的Shell脚本必须引入动态阈值、防抖动和自愈机制。

1. 报警服务:拒绝重复造轮子

优化方案设计:采用配置与逻辑解耦的架构重构思路,将报警功能抽离为可复用的公共组件。

l功能封装层(公共库),将邮件发送、告警格式化、重试策略等核心逻辑封装为独立的告警公共库(Alerting Library),以模块或服务接口形式对外提供标准化的报警调用能力。该库内部统一管理SMTP连接、认证、异常处理等底层细节。

l配置集中化管理,将SMTP参数、凭据等环境敏感信息移入集中配置中心(如配置文件、环境变量或K/V存储系统),由公共库统一读取。不同环境(开发/测试/生产)可通过配置文件切换,避免硬编码泄露风险。

# send_alert.shMAIL_TO="17587257@qq.com"send_alert() {local subject=$1local message=$2 # 生产环境建议配置s-nail 或sendmail 以提高成功率echo "$message" | mail -s "$subject" "$MAIL_TO"}

2. 负载监控:引入动态阈值与防抖动机制

优化方案设计:基于上述痛点,构建资源自适应、时序平滑化的智能告警策略。

  • 动态阈值机制,废除静态绝对值阈值,采用硬件规格自适应阈值。具体地,将告警触发基准与主机CPU核心数($n_cores)线性关联,设定阈值为1.5 × $n_cores(亦可依据业务特征调整系数)。该策略确保告警灵敏度随硬件能力动态缩放,消除资源配置差异带来的误判,使告警条件在各规格主机上具有可比性与物理含义一致性(即阈值正比于系统并行处理能力)。

  • 抖动抑制机制(防抖动),引入时间窗口与连续判异规则,降低瞬时噪声干扰。具体地,告警触发条件设定为:系统指标(如负载)在连续3个检测周期(检测间隔建议为10~30秒)内均超过动态阈值时,方才触发告警事件。该设计基于统计学中的滑动窗口多数判决原理,可有效滤除高频瞬态尖峰,确保告警反映负载持续性超限的稳态异常,显著提升告警系统的召回率,同时降低运维人员的告警疲劳。

# check_load_pro.shCORES=$(grep -c 'model name' /proc/cpuinfo)THRESHOLD=$(echo "$CORES * 1.5" | bc)LOAD=$(uptime | awk -F'load average:' '{print $2}' | awk '{print $1}' | tr -d ',')# 使用 bc 进行浮点数比较IS_HIGH=$(echo "$LOAD > $THRESHOLD" | bc)if [ "$IS_HIGH" -eq 1 ]; thensend_alert"【严重】系统负载过高" "当前: $LOAD (阈值: $THRESHOLD)"fi

3. 服务监控:从“发现”到“自愈”

优化方案设计:引入本地自愈机制(看门狗,Watchdog),重构故障恢复流程。

  • 自动化故障判定:监控探针持续检测Nginx服务健康状态(如TCP端口连通性、HTTP返回码或进程存活性)。

  • 即时自愈尝试:当检测到服务异常时,系统优先执行本地重启操作(如调用系统服务管理命令),不等待人工介入。

  • 分级告警策略:仅当自动重启失败(如连续重试指定次数后仍不可用)时,再触发上层告警(可升级为电话、短信等实时通道),通知运维人员介入进行深度排查。

该方案可将常见临时性故障(如进程崩溃、内存溢出)的恢复时间压缩至秒级,同时减少无效告警对运维人员的干扰,提升整体系统的可观测性与自愈能力。

# check_service_pro.shSERVICES=("nginx" "mysqld")for SERVICE in "${SERVICES[@]}"doif! systemctl is-active --quiet "$SERVICE"thensystemctlrestart "$SERVICE"sleep3#二次检查,若仍失败则报警if! systemctl is-active --quiet "$SERVICE"thensend_alert"【紧急】自愈失败" "服务 $SERVICE 重启失败,请人工介入!"fifidone

二、架构演进:基于 Flask 构建集中式监控平台

当服务器规模扩展至数十至上百台时,传统逐台登录查看日志的运维方式已无法满足生产环境要求,其人力成本随节点数量呈线性增长、故障排查时效性严重不足、日志数据分散形成信息孤岛、以及频繁SSH操作引入额外安全风险。

为此,需构建一套去中心化采集、中心化汇聚的分布式日志与状态管理架构,即 Agent + Server 模式。该架构中,Agent部署于各业务节点,负责采集与上报;Server端负责统一存储、检索与告警触发。

1. Agent端:让服务器“开口说话”

Agent端本质上是让每台服务器具备主动上报自身状态的能力,即实现服务器“开口说话”。具体方案为:在被监控节点上部署轻量级HTTP服务(如基于Flask框架),暴露标准化API接口供Server端或调度系统调用,用于查询系统负载、服务状态、日志摘要或执行预设运维指令。

关键优化点:

  • IP获取:socket.gethostbyname 常返回 127.0.0.1,需通过 UDP 连接获取真实出口 IP。

  • 安全性:增加 API Key 鉴权,防止任意重启服务;增加命令注入过滤。

# agent.py -统一监控仪表盘Agent端from flask import Flask, jsonify, requestimport psutil, socket, subprocessapp = Flask(__name__)API_KEY = "your-secret-key-here"# 生产环境请使用环境变量def get_local_ip():s= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try:s.connect(("8.8.8.8",80))ip= s.getsockname()[0]exceptException:ip= "127.0.0.1"finally:s.close()returnip@app.route('/api/status')def api_status():returnjsonify({"hostname":socket.gethostname(),"ip":get_local_ip(),"cpu_load":psutil.getloadavg()[0],"memory":psutil.virtual_memory().percent})@app.route('/api/restart_service/', methods=['POST'])def api_restart_service(service_name):#1. 鉴权ifrequest.headers.get('X-API-Key') != API_KEY:returnjsonify({"status""error""msg""未授权"}), 403#2. 防注入ifnot service_name.isalnum():returnjsonify({"status""error""msg""非法字符"}), 400#3. 执行subprocess.run(["sudo","systemctl""restart", service_name], timeout=10)returnjsonify({"status""success"})

2. Server端:打造统一仪表盘

Server端作为监控体系的核心汇聚与展示层,负责定时轮询所有已注册Agent节点,拉取系统指标(如CPU/内存使用率、服务状态、日志摘要等),汇总处理后以可视化仪表盘形式集中呈现。其设计需在采集效率、系统稳定性与可观测性之间取得平衡。

关键优化点:

  • 并发采集:使用多线程防止某个节点超时卡死主程序。

  • 容错处理:节点离线时显示“离线”状态,而非报错。

# dashboard.py -统一监控仪表盘Server端from flask import Flask, render_template_string, jsonifyimport requestsimport threadingimport timeimport loggingfrom concurrent.futures import ThreadPoolExecutor, as_completedfrom datetime import datetimefrom typing import DictListAnyapp = Flask(__name__)==================== 配置区 ====================建议通过环境变量或配置文件注入,避免硬编码TARGET_SERVERS = ["http://172.16.27.204:5000/api/status",#可扩展更多节点]##采集参数配置POLL_INTERVAL = 10##采集周期(秒)REQUEST_TIMEOUT = 5##单次请求超时(秒)MAX_WORKERS = 10##并发采集线程数API_KEY = "your-secret-key-here"##与Agent端保持一致,建议从环境变量读取日志配置logging.basicConfig(level=logging.INFO,format='[%(asctime)s]%(levelname)s - %(message)s')logger = logging.getLogger(__name__)==================== 全局状态容器 ====================使用字典结构存储节点状态,保留历史信息node_status: Dict[strDict[strAny]] = {}status_lock = threading.Lock()保证数据写入的线程安全==================== 核心采集逻辑 ====================def fetch_single_node(url: str) -> Dict[strAny]:"""采集单个节点的状态数据(线程安全)返回结构:-成功:包含 hostname、ip、cpu_load、memory、last_seen、status='online'-失败:包含 hostname(从URL提取)、status='offline'、error、last_seen"""result= {"url":url,"last_seen":datetime.now().isoformat(),"status":"offline"}try:#发起HTTP请求,携带API Key鉴权headers= {"X-API-Key": API_KEY} if API_KEY else {}resp= requests.get(url, timeout=REQUEST_TIMEOUT, headers=headers)resp.raise_for_status()#非200状态码触发异常data= resp.json()result.update({"hostname":data.get("hostname""unknown"),"ip":data.get("ip""0.0.0.0"),"cpu_load":data.get("cpu_load", -1),"memory":data.get("memory", -1),"status":"online"})logger.debug(f"节点采集成功:{result['hostname']} ({result['ip']})")exceptrequests.exceptions.Timeout:result["error"]= "请求超时"logger.warning(f"节点超时:{url}")exceptrequests.exceptions.ConnectionError:result["error"]= "网络连接失败"logger.warning(f"节点不可达:{url}")exceptrequests.exceptions.HTTPError as e:result["error"]= f"HTTP错误: {e.response.status_code}"logger.warning(f"节点HTTP异常:{url} - {e}")exceptException as e:result["error"]= f"未知异常: {str(e)}"logger.error(f"节点采集异常:{url} - {e}")returnresultdef collect_all_nodes() -> None:"""并发采集所有节点状态,更新全局数据容器使用线程池实现并发,避免单节点阻塞整体采集"""globalnode_statuscollected= {}withThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:#提交所有采集任务future_to_url= {executor.submit(fetch_single_node,url): urlforurl in TARGET_SERVERS}#收集完成结果(按完成顺序)forfuture in as_completed(future_to_url):url= future_to_url[future]try:result= future.result(timeout=REQUEST_TIMEOUT + 1)#使用IP或hostname作为主键,降级使用URLkey= result.get("ip"or result.get("hostname"or urlcollected[key]= resultexceptException as e:logger.error(f"采集任务异常[{url}]: {e}")collected[url]= {"url":url,"status":"offline","error":"采集任务失败","last_seen":datetime.now().isoformat()}#线程安全更新全局状态withstatus_lock:node_status.clear()node_status.update(collected)online_count= sum(1 for v in node_status.values() if v.get("status") == "online")logger.info(f"采集完成:在线 {online_count}/{len(TARGET_SERVERS)} 节点")def background_collector() -> None:"""后台守护线程:周期性执行数据采集"""logger.info("后台采集线程已启动,周期:{}秒".format(POLL_INTERVAL))whileTrue:try:collect_all_nodes()exceptException as e:logger.error(f"采集循环异常:{e}")time.sleep(POLL_INTERVAL)==================== Web路由 ====================@app.route('/')其他文件HTML模板(略去具体样式,聚焦数据结构展示)==================== 启动入口 ====================if __name__ == '__main__':#启动后台采集线程(daemon=True确保主程序退出时自动终止)collector_thread= threading.Thread(target=background_collector,daemon=True,name="NodeCollector")collector_thread.start()#启动Flask Web服务logger.info("Dashboard服务启动,监听端口:443")app.run(host='0.0.0.0',port=443, debug=False, threaded=True)

关键结论:通过 Agent + Server 架构,我们实现了从“单机脚本”到“集群管控”的跨越。新增服务器只需部署 Agent,无需修改中心代码,扩展性极强。

三、系统的启动与使用

1.启动系统

第一步:在被监控的服务器运行Agent.py程序

  • 在被监控服务器上执行:python3 agent.py --host 0.0.0.0 --port 5000

  • 或指定 API Key:python3 agent.py --host 0.0.0.0 --port 5000 --api-key sysmon-api-key-2026

启动成功后应看到监听地址为 http://0.0.0.0:5000

第二步:在Server端执行指令

python3 app.py启动系统

2.使用系统

第一步:通过浏览器访问https://172.16.27.49/统一监控平台,首页展示集群整体健康度,包括服务器总数、在线/离线状态、CPU/内存/磁盘的集群均值及趋势图(通过选择服务器列表查看该服务器的指标)。如下图

第二步:切换【服务器管理】页面,查看已经添加的服务器列表。该页面支持动态添加、编辑、删除被监控服务器节点。新增节点后,无需重启Server端,系统会自动发现并纳入监控。如下图

添加监控服务器节点(PLServer服务器)。如下图

保存后回到监控服务器列表(这里已经有四台监控节点主机)。如下图

保存后返回监控平台首页。如下图

第三步:切换【日志告警】页面,目前没有服务器的日志告警信息,说明服务器的运行状态非常好。如下图

第四步:切换【AI智能体】页面,该页面使用本得的千问大模型进行AI问答及分析服务。如下图

第五步:切换【帮助中心】页面查看系统的帮助信息。如下图

四、避坑指南与经验总结

在实施上述方案时,请务必注意以下生产环境细节:

1.权限管理

Agent 执行 systemctl restart 需要 root 权限。建议根据实际需要配置/etc/sudoers 文件,仅允许特定用户无密码重启特定服务,避免赋予脚本过高的系统权限。

2.HTTPS加密

Python程序涉及敏感数据,建议在生产环境务必配置 SSL 证书(ssl_context),防止数据明文传输。

📢知识分享

纸上得来终觉浅,绝知此事要躬行。Shell 是 Linux 的敲门砖,而 Python 则是赋予其智能的翅膀。希望大家在掌握这些基础指令后,能着手去设计属于自己的监控平台,在一次次的调试与优化中,体会驾驭 Linux 系统的真正乐趣与成就感。

如果本文对您有帮助,欢迎:

1.👍点赞,鼓励更多Python实战内容。

2.💬留言,交流你在系统运维中遇到的痛点。

3.🔄转发,希望大家都能够在Linux系统中打造属于自己的企业级的智能化监控平台,以提高团队的工作效率。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 18:02:40 HTTP/2.0 GET : https://f.mffb.com.cn/a/507959.html
  2. 运行时间 : 0.384413s [ 吞吐率:2.60req/s ] 内存消耗:4,622.05kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1673b5fb790c9661c47fcee11606c3a1
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001040s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001693s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.060118s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.024017s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001324s ]
  6. SELECT * FROM `set` [ RunTime:0.002312s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001265s ]
  8. SELECT * FROM `article` WHERE `id` = 507959 LIMIT 1 [ RunTime:0.046801s ]
  9. UPDATE `article` SET `lasttime` = 1787306560 WHERE `id` = 507959 [ RunTime:0.028700s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.014610s ]
  11. SELECT * FROM `article` WHERE `id` < 507959 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001176s ]
  12. SELECT * FROM `article` WHERE `id` > 507959 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.014279s ]
  13. SELECT * FROM `article` WHERE `id` < 507959 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008495s ]
  14. SELECT * FROM `article` WHERE `id` < 507959 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008871s ]
  15. SELECT * FROM `article` WHERE `id` < 507959 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002846s ]
0.387766s