1.如何在prometheus产生告警时自动执行某个脚本文件
2.基于Fuse的源码最简单的文件系统
3.BlueStore源码分析之Cache
4.äºè®¡å课ç¨
如何在prometheus产生告警时自动执行某个脚本文件
在使用prometheus进行监控时,为了在产生告警时实现自动化操作,编译如执行特定脚本文件,源码可以结合webhook功能实现这一需求。编译webhook提供了一种将告警事件转换为可执行操作的源码机制,本文将详细介绍如何配置webhook,编译php RSS解析源码以及如何通过执行脚本文件自动处理告警信息。源码
在prometheus和alertmanager的编译体系中,告警机制主要通过规则配置文件(rule.yaml)来定义告警条件。源码当监控到指标值异常时,编译alertmanager将向指定的源码webhook发送告警信息。通过配置webhook,编译我们可以在接收到告警信息的源码同时,触发自定义脚本执行,编译实现更精细化的源码告警处理。
为了搭建webhook服务,可以访问其官方GitHub仓库(github.com/adnanh/webhook)获取相关文档。对于Ubuntu系列的环境,可以通过apt命令轻松安装webhook服务;其他操作系统环境下,gilde源码需要通过编译源码的方式安装webhook,并确保服务在端口监听。
搭建webhook服务后,通过编辑配置文件,配置webhook的访问路径和相关参数。在配置完成后,重启服务以确保配置生效。通过访问http://{ webhook_ip}:{ port}/hooks/{ webhook_id}(默认端口为)的URL,可以验证webhook是否正常工作。在接收到告警信息后,webhook将执行预先配置的脚本文件(如/root/test.sh),并记录执行结果,确保脚本执行的可靠性和可追踪性。
为了扩展webhook的功能,可以修改其默认端口以适应不同环境需求。通过调整webhook服务的配置文件,添加端口参数,例如将端口更改为,云表 源码确保服务重启后端口变更生效。
为了实现特定告警内容的自动化处理,如将Ceph状态异常时的健康详细信息发送到企业微信机器人,可以整合prometheus、alertmanager和webhook。在配置prometheus告警规则和alertmanager告警接收时,确保两者能够无缝对接。通过编写自定义脚本(如/root/trigger.sh),在接收到告警信息时执行特定操作,例如执行命令获取详细信息并发送至企业微信机器人。
在执行过程中,模拟业务故障(如停止Ceph的osd服务)可以验证告警机制的正确性和脚本执行的有效性。通过检查企业微信机器人收到的消息,确保告警内容准确无误,并且在故障恢复时也能收到相应的恢复告警。
通过上述配置和实践,webhook不仅简化了告警处理流程,还提供了高度定制化的golang 源码解决方案,使得在接收到告警时可以执行一系列自动化操作。这不仅提高了问题响应的效率,还增强了监控系统的灵活性和实用性。
基于Fuse的最简单的文件系统
从今天开始,我将在我的公众号“数据存储张”中创建一个合集,旨在从零开始,教大家如何开发一个文件系统。开发工作基于Ubuntu .,其他Linux版本亦可。通常,我们认为文件系统是内核模块,但实际情况并非如此,EMC的UFS就是一个用户态文件系统示例。开源分布式文件系统也多是用户态。
鉴于内核态开发难度较高,我决定采用FUSE来开发一个用户态文件系统。通过实践本合集的内容,希望能加深大家对《文件系统技术内幕》一书的zidoo 源码理解。无论是内核态还是用户态,文件系统的原理基本一致。
若后续大家对Linux内核文件系统实现感兴趣,我也会继续基于内核开发功能,让大家全面了解内核文件系统。
回到文章主题,接下来我们将深入文件系统的概念。文件系统是将硬盘线性地址转换为层级结构的软件系统,核心是呈现目录树。文件系统中,文件与目录是两大关键概念:目录是容器,用于存储文件和子目录;文件则是数据存储实体,形式多样,如视频、音频、Word文档及文本文件等。
从普通用户角度看,文件系统提供层级式的文件组织方式,而程序开发视角下,文件系统提供API以访问文件和目录,如打开、关闭、读取和写入数据,以及目录的打开、遍历和关闭等操作。这些API在内核态有对应实现。
FUSE提供在用户态开发文件系统的框架,大大降低了开发门槛,无需了解Linux内核内容。FUSE由用户态库和内核模块组成,内核态模块与VFS和其他文件系统关系密切,可理解为内核态文件系统,其功能是转发文件系统访问请求至用户态。
FUSE用户态库提供一套API和接口规范,实现这些函数集合即完成文件系统开发。通过FUSE注册函数到内核模块后,内核态请求将调用用户态函数。例如,ceph_fuse就是基于FUSE实现的用户态文件系统,用于访问CephFS。
接下来,我们将开发一个最简单的文件系统,严格意义上并非真正文件系统。该系统仅模拟层级结构,包含“dir”目录和“helloworld”文件,以及“.”和“..”目录。实现中,我们仅关注“getattr”和“readdir”两个函数,分别用于获取文件或目录详细属性及读取目录项。
在头文件中,我们定义了文件系统类HelloWorldFS,并实现了上述两个函数。主函数文件简单实例化了HelloWorldFS类,并调用run函数完成文件系统挂载和注册等任务。
cmake工程文件用于管理整个项目。通过cmake生成Makefile,并使用make编译,得到可执行程序helloworld。通过挂载到/mnt/test目录,我们验证了系统功能。
本文实现的文件系统仅模拟层级结构,不具备创建、删除或读取文件内容功能。通过本教程,大家对文件系统概念和FUSE用法有了基础了解。后续,我们将基于当前实现,开发一个基于内存、可读写文件系统。
相关源代码可在GitHub的SunnyZhang-IT/fs-from-zero库中找到。
BlueStore源码分析之Cache
BlueStore通过DIO和Libaio直接操作裸设备,放弃了PageCache,为优化读取性能,它自定义了Cache管理。核心内容包括元数据和数据的Cache,以及两种Cache策略,即LRU和2Q,2Q是默认选择。
2Q算法在BlueStore中主要负责缓存元数据(Onode)和数据(Buffer),为提高性能,Cache被进一步划分为多个片,HDD默认5片,SSD则默认8片。
BlueStore的元数据管理复杂,主要分为Collection和Onode两种类型。Collection存储在内存中,Onode则对应对象,便于对PG的操作。启动时,会初始化Collection,将其信息持久化到RocksDB,并为PG分配Cache。
由于每个BlueStore承载的Collection数量有限(Ceph建议每个OSD为个PG),Collection结构设计为常驻内存,而海量的Onode则仅尽可能地缓存在内存中。
对象的数据通过BufferSpace进行管理,写入和读取完成后,会根据特定标记决定是否缓存。同时,内存池机制监控和管理元数据和数据,一旦内存使用超出限制,会执行trim操作,丢弃部分缓存。
深入了解BlueStore的Cache机制,可以参考以下资源:
äºè®¡å课ç¨
ã壹ã äºè®¡ç®éè¦å¦ä»ä¹è¯¾ç¨ææ¨èå
æ¨èä¸åéçäºè®¡ç®è¯¾ç¨ï¼å¦åéäºè®¡ç®æç¨åºæ¥çå¦åé½è¯´æ¾å·¥ä½å¾å®¹æã
ãè´°ã Linuxäºè®¡ç®è¯¾ç¨å¹è®é½æåªäºå 容
linuxäºè®¡ç®å¤å¹è®è¯¾ç¨
第1é¶æ®µå¶ é¶åºç¡å ¥é¨
第2é¶æ®µ Linuxç³»ç»ç®¡ç&shellç¼ç¨
第3é¶æ®µ ç¾ä¸çº§è®¿é®éé群å®æ
第4é¶æ®µ åä¸çº§è®¿é®éæ ¸å¿é群å®æ
第5é¶æ®µ ä¸åæ ¸å¿ææ¯çåºå±æ¯æï¼äºè®¡ç®é群
第6é¶æ®µ å°ç¡ è°·ä¸æ课ç¨ï¼å¤§æ°æ®è¿ç»´
第7é¶æ®µ Pythonèªå¨ååæ¯ä¸æ导
linuxäºè®¡ç®å¹è®è·¯çº¿
ãåã äºè®¡ç®çåºç¡è¯¾ç¨
äºè®¡ç®æ¯ä¸å¥ç³»ç»ç解å³æ¹æ¡ãéè¦ä»å®è§çºµåå»çï¼åå°å¾®è§å ·ä½çæ个äºè®¡ç®çå项æä¸æ¯ãå®å±å为åºç¡æ¶æå±ï¼IaaSï¼ï¼å¹³å°æ¶æå±ï¼PaaSï¼ï¼è½¯ä»¶æ¶æå±ï¼SaaSï¼ï¼æå¡æ¶æå±ï¼BPaaSï¼ãæ¯ä¸ªå±é¢ç建设å®æ½è¿ç¨åå¯ä»¥ç¬ç«åå¨ï¼å¹¶æ²¡æå ååªåï¼å建åªåçå å顺åºãå ¶ä¸IaaSæ¯å¿ ç»ä¹è·¯ã纵åææ¡ä½äºï¼å横åç»åå»çãæ¯å¦ï¼IaaSå为åå¨æ± ï¼è´è½½åè¡¡æ± ï¼èç¹è®¡ç®æ± ï¼å ¶ä¸ååç»å为å°åæºè®¡ç®æ± ï¼æå¡å¨è®¡ç®æ± çãåææä½ç³»ç»çæ¬çä¸ååç»åï¼çã
ãèã ç°å¨å¦ä¹ äºè®¡ç®è¯¾ç¨é½éè¦å¦ä»ä¹å 容ï¼ä»¥åæ¾ä»ä¹å·¥ä½å
ä½ å¥½ï¼äºè®¡ç®æ¯æªæ¥äºèç½çåå±è¶å¿ï¼ç°å¨å ¥è¡äºè®¡ç®è¡ä¸ï¼å°±æå³çæªæ¥çé«èªåå©ï¼ä¸ºæ¤å¾å¤äººä¼éæ©åå ä¸ä¸çå¦ä¹ å¿«éå ¥è¡ãäºè®¡ç®æ¶µççç¥è¯ç¹å¾å¤ï¼åºç¨é¢åä¹æ¯è¾å¹¿æ³ï¼æ¯ä¸ä¸ªé常好çéæ©ãåªè¦ææ¡çæ£çæè½ï¼äºè®¡ç®å°±ä¸èªç¶ä¸æé®é¢ã
å¦æä½ æ³è¦ä¸ä¸çå¦ä¹ äºè®¡ç®ï¼æ´å¤éè¦çæ¯ä»åºæ¶é´åç²¾åï¼ä¸è¬å¨2Wå·¦å³ï¼4-6个ææ¶é´ä¸çãåéç课ç¨å¾ä¸éï¼ä½ å¯ä»¥æ ¹æ®èªå·±çå®é éæ±å»å®å°çä¸ä¸ï¼å 好好è¯å¬ä¹åï¼åéæ©éåèªå·±çãåªè¦åªåå¦å°çä¸è¥¿ï¼åéèªç¶ä¸ä¼å·®ã
ãä¼ã äºè®¡ç®æ¶æå¸è¯¾ç¨è¦æä¹å¦ä¹
ï¼1ï¼Linuxä¹ç¾è¯¾æ¶
æ¬é¶æ®µè¯¾ç¨ä¼å¸¦é¢å¦åè¿å ¥Linuxçä¸çï¼æ·±å ¥å¦ä¹ 强大çLinuxæä½ç³»ç»ï¼å»ºç«æå¡å¨æä½æç»´ï¼å¹å »è¯å¥½çè¿ç»´ææ³ã
ï¼2ï¼å¼ºå¤§çLinuxæå¡å¨è¯¾æ¶
æ¬é¶æ®µè¯¾ç¨æ£å¼å¦ä¹ Linuxä¸åç§ç½ç»æå¡ï¼å½åäºèç½ä¸ç»å¤§å¤æ°çåºç¨åè½ï¼å¦ç½ç«ãè§é¢ã游æãè´ç©ãé®ä»¶ãä¸è½½çï¼é½éè¦ä¸åçLinuxæå¡æ¯æã
ï¼3ï¼ç©è½¬é群ä¸äºè®¡ç®ææ¯è¯¾æ¶
æ¬é¶æ®µè¯¾ç¨è®²æé群æ¶æãè´è½½åè¡¡ã代çæå¡ãåå¸å¼åå¨ã主ä»å¤ä»½ãäºè®¡ç®ãèæåãHadoopçåç§é«å¤§ä¸çç¥è¯ï¼å 容涵çäºäºè®¡ç®æ¶æå¸å·¥ä½ä¸æéçææææ¯
ï¼4ï¼ç½ç»å®å ¨ææ¯ä¸é¡¹ç®å®è·µè¯¾æ¶
æ¬é¶æ®µè¯¾ç¨æä½ ä¸ä¸çç½ç»å®å ¨ææ¯ï¼å®å ¨é²æ¤å·¥å ·ãé²ç«å¢ãå ¥ä¾µæ£æµçã
å¦ä¹ äºè®¡ç®ï¼è¿æ¯å å¼è¿å¥½
ãéã äºè®¡ç®ä¸»è¦å¦åªäºè¯¾ç¨
äºè®¡ç®æ¯åºäºäºèç½çç¸å ³æå¡çå¢å ã使ç¨å交ä»æ¨¡å¼ï¼é常æ¶åéè¿äºèç½æ¥æä¾å¨æææ©å±ä¸ç»å¸¸æ¯èæåçèµæºãäºæ¯ç½ç»ãäºèç½çä¸ç§æ¯å»è¯´æ³ãè¿å»å¨å¾ä¸å¾å¾ç¨äºæ¥è¡¨ç¤ºçµä¿¡ç½ï¼åæ¥ä¹ç¨æ¥è¡¨ç¤ºäºèç½ååºå±åºç¡è®¾æ½çæ½è±¡ãå æ¤ï¼äºè®¡ç®çè³å¯ä»¥è®©ä½ ä½éªæ¯ç§ä¸äº¿æ¬¡çè¿ç®è½åï¼æ¥æè¿ä¹å¼ºå¤§ç计ç®è½åå¯ä»¥æ¨¡ææ ¸çç¸ãé¢æµæ°ååååå¸åºåå±è¶å¿ãç¨æ·éè¿çµèãç¬è®°æ¬ãææºçæ¹å¼æ¥å ¥æ°æ®ä¸å¿ï¼æèªå·±çéæ±è¿è¡è¿ç®ã
ç®åæ们çäºè®¡ç®ç课ç¨ä¸ºç±æµ å ¥æ·±ã循åºæ¸è¿çå®æ´è¯¾ç¨ä½ç³»ï¼å æ¬ç»åLinuxçç½ç»åºç¡å®æãLinuxç³»ç»é ç½®åæå¡æ·±åº¦è§£æãShellèæ¬èªå¨åè¿ç»´é¡¹ç®å¼åãå¼æºæ°æ®åºMySQL DBAæ¶æåä¼åã主æµWeb æå¡å¨Nginxæ¶æä¼åã大åç½ç«é«å¹¶å项ç®LVSå®ææ¹æ¡ãé«å¯ç¨é群ææ¯ãåå¸å¼åå¨ææ¯Cephãå®å ¨é²å¾¡ææ¯ãæ§è½ä¼åæ¹æ¡ãPythonèªå¨åè¿ç»´å¼åææ¯ãç§æäºå¹³å°ææ¯KVM ãOpenstackã容å¨ææ¯Dockerçã
äºè®¡ç®å¦ä¹ 课ç¨å¤§çº²å¦ä¸ï¼
1. Linuxäºè®¡ç®ç½ç»ç®¡çå®æ
2. Linuxç³»ç»ç®¡çåæå¡é ç½®å®æ
3. Linux Shellèªå¨åè¿ç»´ç¼ç¨å®æ
4. å¼æºæ°æ®åºSQL/NOSQLè¿ç»´å®æ
5. 大åç½ç«é«å¹¶åæ¶æåèªå¨åè¿ç»´é¡¹ç®
6. ç½ç«å®å ¨æ¸éæµè¯åæ§è½è°ä¼é¡¹ç®å®æ
7. å ¬æäºè¿ç»´ææ¯é¡¹ç®å®æ
8. ä¼ä¸ç§æäºæ¶æåè¿ç»´å®æ
9. Pythonèªå¨åè¿ç»´å¼ååºç¡
. Pythonèªå¨åè¿ç»´å¼å项ç®å®æ
ãæã äºè®¡ç®éä¿è§£éï¼äºè®¡ç®éè¦å¦ä»ä¹è¯¾ç¨
äºè®¡ç®éä¿ç讲ï¼äºç«¯æ¶è®¾ä¸å°æ§è½å¼ºå²çæå¡å¨ï¼æ¯å¦ï¼æ ¸çCPU ãG çå åï¼N个T çåå¨çãå¨è¿æ ·æçé ç½®å¾å¯ä½çæå¡å¨ä¸éè¿èææºææ¯ï¼å建å å个èææºï¼ä»å®¿ä¸»æå¡å¨ç¡¬ä»¶é ç½®ä¸åååºèµæºé é¢ï¼ï¼å®¢æ·æºéè¿âè¿ç¨æ¡é¢åè®®âæâè¿ç¨æ§å¶åè®®âè¿æ¥å°èææºï¼è¿æ ·ä½ å°±å¯ä»¥å¨æ¬å°å®¢æ·æºä½¿ç¨è¿å°è¿ç¨çèææºã æ以çè¿ç®(计ç®)é½æ¯å¨è¿å°èææºä¸å®æçï¼æ¬å°å®¢æ·æºåªæ¯è¾å ¥ä¸è¾åºï¼éæ¬å°è®¡ç®ï¼ãå¦ä¹ äºè®¡ç®å¯ä»¥å»ççopenstack ,å¤äºè§£KVM çã
ãæã Linuxäºè®¡ç®è¯¾ç¨å ·ä½å¦ä»ä¹
ä¼å°±ä¸linuxäºè®¡ç®å¹è®å¦é¢çåäºå¹å »å¤æ¹ä½åå±çäºè®¡ç®äººæï¼è¯¾ç¨è®¾ç½®ç§å¦åçï¼é¢å0åºç¡äººåï¼æå¦å 容涵çåå广æ³ï¼å¤§å项ç®å®è®ï¼å®ææ§æ´å¼ºã
ä¼å°±ä¸Linuxäºè®¡ç®çå¹è®è¯¾ç¨å 容ä¸è¬å为å 个é¶æ®µï¼ç¬¬ä¸é¶æ®µä¸»è¦å¦ä¹ ç½ç»åºç¡ï¼å æ¬è®¡ç®æºç½ç»(以太ç½ãTCP/IPç½ç»æ¨¡å)ãäºè®¡ç®ç½ç»(ç½ç»QoSã交æ¢æºä¸è·¯ç±å¨)ï¼é å¤æä¼ä¸çº§é¡¹ç®å®æï¼IPå°åé ç½®ä¸DNS解æã
第äºé¶æ®µå°å¦ä¹ Linuxåºç¡ï¼å æ¬Linuxæä½ç³»ç»(æ件æéãä½ä¸æ§å¶ä¸è¿ç¨ç®¡ç)以åLinuxé«çº§ç®¡ç(SedãAwkå·¥å ·ãæºç ç¼è¯)ãä¼ä¸çº§é¡¹ç®å®æ为ï¼äºæ°æ®ä¸å¿ä¸»æºCPUèµæºå©ç¨çå®æ¶ç»è®¡ãåæç³»ç»ã
第ä¸é¶æ®µå¦ä¹ Linuxè¿ç»´èªå¨åï¼ä¼ä¸çº§é¡¹ç®å®æ为Python+Shellå®ç°ä¼ä¸çº§FTPæ件ç»ä¸ç®¡çã
第åé¶æ®µæ¯æ°æ®åºè¿ç»´ç®¡ççå¦ä¹ ï¼ä¼ä¸çº§é¡¹ç®å®æï¼MySQL Galeraé«å¯ç¨é群ç¯å¢é¨ç½²ãå¼æ¥æ¶æ¯éåé群RabbitMQé¨ç½²ä¸è¿ç»´ã
第äºé¶æ®µçå¹è®å 容为ä¼ä¸çº§äºæ¶æ管çä¸ç»¼åå®æ(PaaS+TaaS)ï¼é¡¹ç®è®ç»çæ¯åºäºLAMPæ¶æå®ç°äºè®¡ç®PaaSå¹³å°å ¸ååºç¨é¨ç½²ä¸è¿ç»´ï¼éè¿Nginxå®ç°åä¸çº§å¹¶å访é®å¤çã
æåä¸ä¸ªé¶æ®µå°±æ¯å°±ä¸æ导ï¼ä»ç®åãé¢è¯æå·§çå±é¢å©å¦åæåï¼å¹å »å¦åæ²é表达è½åï¼è®©å¦åæ¸ æ°äºè§£èä¸åå±è§åï¼æç¡®èªèº«å®ä½ï¼æ¾å°éåèªèº«åå±çå·¥ä½ã
ãçã 大æ°æ®äºè®¡ç®è¯¾ç¨è§é¢æç¨
ä¼ä¸ä¸é½ä½¿ç¨Linuxæ¥æ建é¨ç½²å¤§æ°æ®é¡¹ç®ãå¦ä¹ çæå ³ç³»åæ°æ®åºçMysql以åOracle,äºè§£å¤§æ°æ®çæºå¤´ï¼æ°æ®ä»æä½èæ¥ï¼å¦ä½éææ´å大æ°æ®,æè½æ´å¥½çäºè§£å¤§æ°æ®ãæ£ä¸å¹³å°å¤§æ°æ®å¼å课ç¨äºè§£hadoopçç¨éï¼å¿«éæ建hadoopå®éªç¯å¢ï¼ä¸ºä»¥åå¦ä¹ åæ建大æ°æ®é¡¹ç®æä¸åå®åºç¡ã
ãæ¾ã äºè®¡ç®ä¸å¤§æ°æ®ä¸ä¸ç主è¦è¯¾ç¨æ¯ä»ä¹
大æ°æ®çåºç¡ç¥è¯ï¼ç§æ®ç±»çï¼ä¸ªäººå»ä¹°æ¬ä¹¦å°±è¡äºï¼å¤§æ°æ®æ¶ä»£è¿æ ·ç书å¾å¤ä»ç»ç大æ°æ®çã
å¦å¤å¤§æ°æ®çææ¯ï¼å¦æ°æ®ééï¼æ°æ®ååï¼åºç¡æ¶æï¼æ°æ®å¤çï¼ç»è®¡åæï¼æ°æ®ææï¼æ¨¡åé¢æµï¼ç»æåç°ã
大æ°æ®åæææä¸å¤çã移å¨å¼åä¸æ¶æã软件å¼åãäºè®¡ç®çå沿ææ¯çã
主修课ç¨ï¼é¢å对象ç¨åºè®¾è®¡ãHadoopå®ç¨ææ¯ãæ°æ®ææãæºå¨å¦ä¹ ãæ°æ®ç»è®¡åæãé«çæ°å¦ãPythonç¼ç¨ãJAVAç¼ç¨ãæ°æ®åºææ¯ãWebå¼åãLinuxæä½ç³»ç»ã大æ°æ®å¹³å°æ建åè¿ç»´ã大æ°æ®åºç¨å¼åãå¯è§å设计ä¸å¼åçã
æ¨å¨å¹å »å¦çç³»ç»ææ¡æ°æ®ç®¡çåæ°æ®æææ¹æ³ï¼æä¸ºå ·å¤å¤§æ°æ®åæå¤çãæ°æ®ä»åºç®¡çã大æ°æ®å¹³å°ç»¼åé¨ç½²ã大æ°æ®å¹³å°åºç¨è½¯ä»¶å¼ååæ°æ®äº§åçå¯è§åå±ç°ä¸åæè½åçé«çº§ä¸ä¸å¤§æ°æ®ææ¯äººæã
()äºè®¡å课ç¨æ©å±é 读ï¼
åºç¨é¢å
大æ°æ®ææ¯è¢«æ¸éå°ç¤¾ä¼çæ¹æ¹é¢é¢ï¼å»çå«çãåä¸åæãå½å®¶å®å ¨ãé£åå®å ¨ãéèå®å ¨çæ¹é¢ãå¹´ï¼ä»å¤§æ°æ®ä½ä¸ºå½å®¶éè¦çæç¥èµæºåå å¿«å®ç°åæ°åå±çé«åº¦ï¼å¨å ¨ç¤¾ä¼å½¢æâç¨æ°æ®æ¥è¯´è¯ãç¨æ°æ®æ¥ç®¡çãç¨æ°æ®æ¥å³çãç¨æ°æ®æ¥åæ°âçæåæ°å´ä¸æ¶ä»£ç¹å¾ã
大æ°æ®ç§å¦å°æ为计ç®æºç§å¦ã人工æºè½ææ¯ï¼èæç°å®ãåä¸æºå¨äººãèªå¨é©¾é©¶ãå ¨è½çèªç¶è¯è¨å¤çï¼ãæ°åç»æµååä¸ãç©èç½åºç¨ãè¿æå个人æ社ç§é¢ååå±çæ ¸å¿ã
2024-11-30 12:07
2024-11-30 11:31
2024-11-30 10:50
2024-11-30 10:40
2024-11-30 10:27
2024-11-30 09:50