OpenStack日志合并工具

os-log-merger的Python项目详细描述


操作系统日志合并

https://img.shields.io/pypi/v/os-log-merger.svghttps://img.shields.io/pypi/pyversions/os-log-merger.svghttps://img.shields.io/:许可证apache blue.svg

什么是操作系统日志合并?

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:OVS2
0

会导致:

$ 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
1

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java GWT对话框从不显示帮助   java在简单的MapReduce作业中带来了极大的开销   javacom。mysql。jdbc。例外情况。jdbc4。MySQLIntegrityConstraintViolationException:列不能为null/onetoone映射   如何通过TCP/IP与Java和Labview进行通信,并发送浮点数据缓冲区?   java Apache camel与spring事件基本示例   java如何使我的秒表应用程序在完全关闭后仍能运行?   java Nutch爬网错误输入路径不存在   java是Mapreduce中按值传递还是按引用传递的键?   正则表达式替换java中的特定字符   Java DOM XML解析   java Eclipse未显示服务器的项目   使用Arraylist进行快速排序的排序Java实现疑难解答   java Split text包含字符串列表中的数字   检查Java中的两个lambda是否执行相同的代码?   java为什么dispatchTouchEvent避免在屏幕上单击?