ceph的一些浅见——关于日志(1)

来源:互联网 发布:网络聊天用语段子 编辑:程序博客网 时间:2024/04/27 23:47

日志是研究代码的第一步。

ceph的日志默认输入到/var/log/ceph目录下,可以进入到该目录下,查找相应信息。

总共有20个等级的日志输出,从1~20。

例如我要调整osd.0的日志输出等级为15/15,使用下面的命令设置输出等级

#ceph tell osd.0 injectargs --debug-osd 15/15


或者

#ceph daemon /var/run/ceph/ceph-osd.0.asok congfig set debug_osd 15/15

这个命令要在osd.0所在主机上才能生效。

两个命令功能都是一样的,个人比较习惯使用第二个命令。


#ceph daemon /var/run/ceph/ceph-osd.0.asok help

通过这个,能看到更多功能,包括读写操作在某些流程中,总共延时,平均延时,osd使用情况等。


15/15的设定值,左边的15代表打印到log文件中的日志等级,右边的15在一般情况下无用,它设定诸如assert等原因引起的程序崩溃后,记录程序内存信息等级,可以称为in-memory log。


另外ceph的日志被划分成很多块,举个例子说。

我想要通过日志了解MON的线程运行情况,但调整debug_mon 为20/20后,打印出来的日志太多了,很多信息是我不想要的。那么就可以不改变debug_mon ,而是改变debug_tp为20/20(tp即threadpool)。


通过

#ceph daemon /var/run/ceph/ceph-osd.0.asok congfig show | grep debug

来查看全部的日志等级。


ceph源码中,比如下面

ldout(cct, 1) << "tear_down_cache forcing close of dir " << dendl;

ldout是一个宏,括弧中的1为日志等级,当你设定日志输出为10/5, 因为10 > 1 , 所以它就会输出到日志文件中。

cct是一个全局对象,用了单例模型,它记录了进程诸多信息,比如配置文件中的信息。debug_osd,debug_mon等等,这些都是配置文件中的配置参数。




0 0
原创粉丝点击