之前在项目中做了一个监控swift各个服务运行情况的模块,swift中的服务包括:container-updater , account-auditor, object-replicator, proxy-server, container-replicator, object-auditor, object-expirer, container-auditor, container-server, account-server, account-reaper, container-sync, account-replicator, object-updater, object-server共15个,其中proxy-server, account-server, container-server, object-server这四个服务是需要监控的重中之重,它们不工作意味着swift集群就不能对外提供服务了,因此在集群故障处理中,监控这些服务状态就显得尤为重要。
前段时间监控模块在运行时产生了一些问题让发现了swift的一些小Bug,其中就有当加入到swift中的硬盘损害时导致container-sync服务停止的问题。该Bug的具体log表现如下:
Apr 15 10:07:24 0d7d51e8-024e-3a94-a310-46cf5426b3f9 container-sync UNCAUGHT EXCEPTION#012Traceback (most recent call last):#012 File "/usr/bin/swift-container-sync", line 23, in <module>#012 run_daemon(ContainerSync,