LTTng: (Linux Trace Toolkit Next Generation),它是用于跟踪 Linux 内核、应用程序以及库的系统软件包.LTTng 主要由内核模块和动态链接库(用于应用程序和动态链接库的跟踪)组成。它由一个会话守护进程控制,该守护进程接受来自命令行接口的命令。babeltrace 项目允许将追踪信息翻译成用户可读的日志,并提供一个读追踪库,即 libbabletrace。 ceph代码中大量嵌入了tracepoint ,使用lttng进行跟踪。
配置开启tracing 功能
首先linux 使用 apt 或者 yum 安装 lttng
apt方式
$ sudo apt-get update
$ sudo apt-get install lttng-tools lttng-modules-dkms babeltrace
yum方式
$ sudo yum install lttng-tools lttng-ust // 查看 trace 结果的工具 # yum install babeltrace
命令行输入 ceph daemon /var/run/ceph/ceph-osd.0.asok config show 可以从中得知traceing 对应的模块 , 以librbd为例子展开
"event_tracing": "false"
"osd_function_tracing": "false"
"osd_objectstore_tracing": "false"
"osd_tracing": "false"
"rados_tracing": "false"
"rbd_tracing": "false"
修改默认ceph.conf配置,把rbd_tracing 设置成true
~# vim /etc/ceph/ceph.conf
[global]
fsid = xxxxxxxx
public_network = xxxxxx/24
cluster_network = xxxxx/24
mon_initial_members = xxxxxxx, xxxxxx, xxxxxxx
mon_host = xxxxxx,xxxxxx,xxxxxx
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size=3
osd_pool_default_min_size=2
osd_journal_size=100
filestore_xattr_use_omap=true
osd_pool_default_pg_num=128
osd_pool_default_pgp_num=128
osd crush_chooseleaf_type=0
rbd_cache=false
rbd_tracing=true ##------- 设置成true
注意:使用ceph tell mon.* injectargs “—rbd_tracing false” 方式无法修改到配置的,必须修改配置重启集群
lttng 展示可跟踪位置
lttng 跟踪必定是需要进程一直在运行状态,像mon、osd的自不必多说,如果跟踪是librbd就必须保证加载 librbd.so进程是在运行。
./rbd_example ##一直在跑
lttng list -u
UST events:
-------------
PID: 12039 - Name: ./rbd_example
lttng_ust_tracelog:TRACE_DEBUG (loglevel: TRACE_DEBUG (14)) (type: tracepoint)
lttng_ust_tracelog:TRACE_DEBUG_LINE (loglevel: TRACE_DEBUG_LINE (13)) (type: tracepoint)
lttng_ust_tracelog:TRACE_DEBUG_FUNCT