OpenStack日志合并工具
os-log-merger的Python项目详细描述
操作系统日志合并
什么是操作系统日志合并?
OS Log Merger代表OpenStack Log Merger,它是一个用来 跨不同项目的一堆openstack日志,并将它们合并到一个 文件,按时间项排序。
只要日志基于oslo logger输出,它就应该工作。
快速演示:http://mangelajo.github.io/openstack-debugging-presentation/" rel="nofollow">http://mangelajo.github.io/openstack-debugging-presentation/
限制
如果您的服务器 不与公共时间源同步。
如何安装
pip安装操作系统日志合并
基本用法
$ os-log-merger ../bz/1257567/40-os1ctrl01/var/log/neutron/server.log:NS1 \ ../bz/1257567/50-os1ctrl02/var/log/neutron/server.log:NS2 \ ../bz/1257567/40-os1ctrl01/var/log/neutron/openvswitch-agent.log:OVS1 \ ../bz/1257567/50-os1ctrl02/var/log/neutron/openvswitch-agent.log:OVS2
请注意:ns1,:ns2,:ovs1,:ovs2是别名,可以省略, 在这种情况下,用于将日志文件与日志行关联的额外列 将使用原始文件路径而不是[别名]
前面的示例将生成如下内容:
2015-08-25 09:37:15.463 [NS1] 15062 DEBUG neutron.context [req-b751a750-f5d8-4b6e-9af3-82d143ef9416 None] Arguments dropped when creating context: {u'project_name': None, u'tenant': None} __init__ /usr/lib/python2.7/site-packages/neutron/context.py:83 2015-08-25 09:37:15.463 [NS1] 15062 DEBUG neutron.plugins.ml2.db [req-b751a750-f5d8-4b6e-9af3-82d143ef9416 None] get_ports_and_sgs() called for port_ids [u'4136d577-e02f-47c1-b543-f0bfd65ef85e', u'5d5ea109-4807-4df3-bef4-b5d89c3ffebc', u'6adcffbf-09d5-4a85-9339-9d6beb2bf82c', u'6b4d7b51-c87d-483e-9606-0e2a54ad8184', u'743ccaa6-7ed9-4195-aabd-3d55006338e1', u'dc662767-61a5-4807-b2ed-a7c76b541fd6', u'4decdd33-6f13-46df-b2f0-d9ff99878514', u'34b826df-9787-443c-9bef-084374827a85', u'7bbc404b-3df7-498a-b6fb-e81f9370a19f', u'c12e6e06-ff6a-44dc-b75f-78ec55dd3dd3', u'586cd86d-59d0-434b-ab27-76975ce5abc4', u'79b33879-3232-4b3a-a27c-c0a79da10379', u'ba6a28cc-9851-4cd7-acae-40034a19c761', u'05c4115a-da58-41db-b3f7-7326e1a22971'] get_ports_and_sgs /usr/lib/python2.7/site-packages/neutron/plugins/ml2/db.py:224 2015-08-25 09:37:15.463 [OVS1] 12613 DEBUG neutron.agent.linux.utils [req-588c942a-6526-464f-a447-782a5e2d436a None] Command: ['sudo', 'neutron-rootwrap', '/etc/neutron/rootwrap.conf', 'ovs-vsctl', '--timeout=10', 'list-ports', 'br-int'] Exit code: 0 Stdout: 'ha-2cdba01d-e4\nha-44dca3a9-44\nha-499d3db7-97\nha-55a19f5e-ef\nha-b2d04f15-f2\nha-b5b271a1-d8\nha-fa58d644-81\nint-br-enp7s0\nint-br-ex\nqr-34b826df-97\nqr-5d5ea109-48\nqr-6adcffbf-09\nqr-743ccaa6-7e\nqr-79b33879-32\nqr-c12e6e06-ff\nqr-dc662767-61\n'
还支持对http url文件而不是本地文件的引用。文件夹 将在本地缓存,以避免下次运行时重新下载。
公共基础
在许多情况下,我们将有一个日志所在的公共基本目录,它们将 可能共享.log扩展名。所以为了简洁起见os日志合并 允许使用 -b 和 -p 选项( –日志基 和 –日志后缀 长选项)。
煤渣示例:
$ os-log-merger -b /var/log/cinder/ -p .log api:api scheduler:sch volume:vol
/变量/日志/消息
操作系统日志合并还支持/var/log/messages类型的文件,这些文件具有选项 -ml 以及消息日志选项。
因为这些文件的格式缺少年份信息-3月24日14:11:19- 将使用上次文件修改后的年份。
这些文件也可以用globs指定,并且它们支持别名定义 也是。
注意openstack文件应该列在选项文件之前。
煤渣示例:
$ os-log-merger -b /var/log/ cinder/api.log:API -ml messages:MSG *.log
时间戳日志
操作系统日志合并还支持时间戳-[0.003036]-带有选项 -tl 以及时间戳日志选项。
因为时间戳多次不会将epoc时间作为 时间戳但是系统启动的时间,初始日期时间将是 通过从文件修改日期时间减去最后时间戳来计算 在文件中。
这些文件也可以用globs指定,并且它们支持别名定义 也是。
注意openstack文件应该列在选项文件之前。
煤渣示例:
$ os-log-merger -b /var/log/ cinder/api.log:API -tl dmesg:DMSG
自动别名
如上所述,您可以在每个日志之后使用 :alias 轻松设置别名 文件,但由于大多数日志文件的名称和位置是众所周知的, 操作系统日志合并有一个具有不同级别的自动别名功能,以适应 特定需求。
如果在命令行中定义了别名,它将禁用自动别名 在那个文件上。
0级
最基本的自动别名生成级别是级别0,并且是默认级别 上面解释的行为,其中文件路径用作别名。
级别1
由于默认配置将创建相当长的别名,因此可以使用 使用基本目录和日志后缀选项将其从 别名。
然后使用以下命令行:
$ os-log-merger -a1 -b /var/log/cinder/ -p .log api scheduler volume
将使用 api 、 调度程序和 卷 别名:
2016-02-01 12:11:17.573 [api] ... 2016-02-01 12:11:17.701 [scheduler] ... 2016-02-01 11:11:18.667 [volume] ...
第2级
在某些情况下,我们可能希望使用全局模式,而自动别名级别1不是 更有用,因此您希望删除文件扩展名以及 公共路径和减少众所周知的日志文件名。
对于2级操作系统,只要 结果路径仍然可以唯一地标识前缀路径中的文件。
它还将使用c-sch-like重命名诸如cinder/scheduler.log之类的知名文件 在本例中:
$ os-log-merger -a2 node?/var/log/{cinder,nova}/*.log
这将给您:
2016-02-01 10:23:34.680 [node1/C-API] ... 2016-02-01 10:24:34.690 [node1/C-SCH] ... 2016-02-01 10:25:34.700 [node1/C-VOL] ... 2016-02-01 10:26:34.710 [node1/N-API] ... 2016-02-01 10:27:34.680 [node2/N-CPU] ...
第3级
根据日志路径中非公用目录的名称,您可以 想更进一步把它们减少到最小而不是 保持原样。
将前一命令中的级别2自动别名生成替换为 文件:
$ os-log-merger ../bz/1257567/40-os1ctrl01/var/log/neutron/server.log:NS1 \ ../bz/1257567/50-os1ctrl02/var/log/neutron/server.log:NS2 \ ../bz/1257567/40-os1ctrl01/var/log/neutron/openvswitch-agent.log:OVS1 \ ../bz/1257567/50-os1ctrl02/var/log/neutron/openvswitch-agent.log:OVS20
会导致:
$ os-log-merger ../bz/1257567/40-os1ctrl01/var/log/neutron/server.log:NS1 \ ../bz/1257567/50-os1ctrl02/var/log/neutron/server.log:NS2 \ ../bz/1257567/40-os1ctrl01/var/log/neutron/openvswitch-agent.log:OVS1 \ ../bz/1257567/50-os1ctrl02/var/log/neutron/openvswitch-agent.log:OVS21