mloginfo
mloginfo获取一个日志文件并报告有关该日志文件的Default Information。 The script also has some options for additional Sections.
Usage
mloginfo [-h] logfile
[--clients]
[--connections]
[--cursors]
[--distinct]
[--queries]
[--rounding {0,1,2,3,4}]
[--sort {namespace,pattern,count,min,max,mean,95%,sum}]
[--restarts]
[--rsstate]
[--storagestats]
[--transactions]
[--tsort {duration}]
[--verbose]
[--version]
General Parameters
Help
-
-h, --help
显示帮助文本并退出.
Version
-
--version
显示版本号并退出.
Verbosity
-
--verbose
这将打印其他信息,具体取决于每个sections.
Default Information
默认情况下,mloginfo将输出关于日志文件的一般信息,包括文件的开始和结束以及行数。如果在文件中发现重启,它还将输出二进制文件(mongod
或mongos
)和版本历史。
Example:
source: mongod.log
host: enter.local:27019
start: 2017 Dec 14 05:56:48.578
end: 2017 Dec 14 05:57:55.965
date format: iso8601-local
length: 190
binary: mongod
version: 3.4.9
storage: wiredTiger
Sections
除了一般信息之外,mloginfo还支持不同的信息sections,可以使用附加参数调用这些信息sections。根据不同的sections,收集信息可能需要一些时间。下文将对各sections进行描述。
Queries (--queries
)
查询section将遍历日志文件并找到所有查询(包括来自更新的查询),并为每个查询模式收集一些统计信息。 查询模式是查询的形状或签名(类似于索引定义),而没有每个字段的实际查询值。
本节显示一个带有名称空间的表(使用通常的database.collection语法),查询模式和各种统计信息,例如查询该查询模式的频率(计数),最小和最大执行时间,均值和总和。 它还会告知执行的操作类型。 该列表按总和排序,这反映了数据库对于每个查询模式必须执行的总体工作。 allowDiskUsage
(最后一列)参数提供有关名称空间的磁盘使用情况的信息。 如果使用了磁盘,则慢速查询日志条目将显示值“ True”或“ False”,如果日志中没有此信息,则显示“ None”。
该概述对于了解要创建哪些索引以使MongoDB环境获得最佳性能非常有用。 优化工作应该从列表的顶部开始,然后向下进行,以在不创建索引的情况下获得最高的总体改进。
例如:
mloginfo mongod.log --queries
除默认信息外,该命令还将输出QUERIES
section:
QUERIES
namespace operations pattern count min (ms) max (ms) mean (ms) 95%-ile (ms) sum (ms) allowDiskUse
serverside.scrum_master update {"datetime_used": {"$ne": 1}} 20 15753 17083 16434 1.8 328692 True
serverside.django_session find {"_id": 1} 562 101 1512 317 2.0 178168 False
serverside.user find {"_types": 1, "emails.email": 1} 804 101 1262 201 1.0 162311 False
local.slaves find {"_id": 1, "host": 1, "ns": 1} 131 101 1048 310 0.0 40738 True
serverside.email_alerts update {"_types": 1, "email": 1, "pp_user_id": 1} 13 153 11639 2465 0.0 32053 None
serverside.sign_up update {"_id": 1} 77 103 843 269 1.8 20761 None
serverside.user_credits remove {"_id": 1} 6 204 900 369 1.3 2218 None
serverside.counters remove {"_id": 1, "_types": 1} 8 121 500 263 2.1 2111 True
serverside.auth_sessions update {"session_key": 1} 7 111 684 277 1.0 1940 True
serverside.credit_card update {"_id": 1} 5 145 764 368 0.0 1840 True
serverside.email_alerts remove {"_types": 1, "request_code": 1} 6 143 459 277 1.3 1663 False
serverside.user find {"_id": 1, "_types": 1} 5 153 427 320 1.9 1601 False
serverside.user update {"emails.email": 1} 2 218 422 320 0.7 640 True
serverside.user update {"_id": 1} 2 139 278 208 0.4 417 True
serverside.auth_sessions update {"session_endtime": 1, "session_userid": 1} 1 244 244 244 0.2 244 False
serverside.game_level find {"_id": 1} 1 104 104 104 0.1 104 None
--rounding
此选项调整计算统计数据(如平均值和95%-ile)的舍入。
例如:
mloginfo mongod.log --queries --rounding 2
除非还指定了--queries
,否则此选项无效。
有效的舍入值是从0到4位小数。默认值是1。
--sort
mloginfo mongod.log --queries --sort count
mloginfo mongod.log --queries --sort sum
除非还指定了--queries
,否则此选项无效。
有效排序参数值是namespace
, pattern
, count
, min
, max
, mean
, 95%
,和 sum
.
默认按sum
排序
Restarts (--restarts
)
重新启动部分将遍历日志文件并查找所有服务器重新启动。它将为每个找到的重新启动输出一行,包括日期、时间和版本。
例如:
mloginfo mongod.log --restarts
除了默认信息外,该命令还将输出RESTART
部分:
RESTARTS
Jul 17 09:11:37 version 2.2.2
Jul 18 09:14:21 version 2.2.2
Jul 18 15:53:51 version 2.4.6
Jul 18 13:46:39 version 2.4.6
Jul 19 18:30:04 version 2.4.6
Distinct (--distinct
)
distinct部分遍历日志文件,并根据消息类型将所有行分组在一起(它使用“log2code”匹配器)。然后,它将为每个组输出一行,按降序排列的最大组排序。这将返回日志文件中出现的行类型的良好概述。
如果日志文件很大,则此操作可能需要一些时间。
例如:
mloginfo mongod.log --distinct
除了默认信息外,此命令还输出按消息类型分组的不同消息列表,按匹配行数排序,如下所示。
DISTINCT
776367 connection accepted from ... # ... ( ... now open)
776316 end connection ... ( ... now open)
25526 info DFM::findAll(): extent ... was empty, skipping ahead. ns:
9402 ERROR: key too large len: ... max:
93 Btree::insert: key too large to index, skipping
6 unindex failed (key too big?) ... key:
5 old journal file will be removed:
1 ClientCursor::yield can't unlock b/c of recursive lock ... ns: ... top:
1 key seems to have moved in the index, refinding.
distinct couldn't match 6 lines
to show non-matched lines, run with --verbose.
如果某些行不能与log2code
matcher匹配,则在最后打印未匹配的行数。要显示无法匹配的所有行,请使用附加的--verbose
命令运行mloginfo。
Connections (--connections
)
connections部分返回日志文件中打开和关闭连接的一般信息,以及每个惟一IP地址的打开和关闭连接的统计信息。
例如:
mloginfo mongod.log --connections
除了默认信息外,此命令还输出连接信息,如下所示。
CONNECTIONS
total opened: 156765
total closed: 155183
no unique IPs: 4
socket exceptions: 915
192.168.0.15 opened: 39758 closed: 39356
192.168.0.17 opened: 39606 closed: 39207
192.168.0.21 opened: 39176 closed: 38779
192.168.0.24 opened: 38225 closed: 37841
Replica Set State Changes (--rsstate
)
输出关于每个检测到的复制集状态变化的信息。
例如:
mloginfo mongod.log --rsstate
除了默认信息外,此命令还输出复制集状态更改。
RSSTATE
date host state/message
Oct 07 23:22:20 example.com:27017 (self) replSet info electSelf 0
Oct 07 23:22:21 example.com:27017 (self) PRIMARY
Oct 07 23:23:14 example.com:27017 (self) replSet total number of votes is even - add arbiter or give one member an extra vote
Oct 07 23:23:16 example.com:27018 STARTUP2
Oct 07 23:23:32 example.com:27018 RECOVERING
Oct 07 23:23:34 example.com:27018 SECONDARY
Transactions (--transactions
)
事务部分将解析日志文件以查找与事务相关的信息(MongoDB 4.0+)。自动提交指示是否为事务启用了自动提交。readConcern
信息可以从OperationContext
或_txnResourceStash
获取。TimeActiveMicros
和TimeInactiveMicros
表示在事务期间活动和不活动的微处理器数量。duration
字段包含以毫秒为单位的值,并指示每个事务所花费的时间量。
例如:
mloginfo mongod.log --transactions
除了默认信息外,该命令还将输出TRANSACTIONS
部分:
TRANSACTION
DATETIME TXNNUMBER AUTOCOMMIT READCONCERN TIMEACTIVEMICROS TIMEINACTIVEMICROS DURATION
2019-06-18T12:31:03.180+0100 1 false "snapshot" 11142 3 7
2019-03-18T12:31:03.180+0100 2 false "snapshot" 11143 4 6
2019-07-18T12:31:03.180+0100 3 false "snapshot" 11144 3 4
2019-08-18T12:31:03.180+0100 4 false "snapshot" 11145 4 7
2019-06-18T12:31:03.180+0100 5 false "snapshot" 11146 3 3
--tsort
此选项可用于对--transaction
表的结果以及“duration”关键字进行排序。
例如:
mloginfo mongod.log --transaction --tsort duration
除非在--transaction
和duration
之间指定,否则此选项无效。
Cursors (--cursors
)
如果游标因超过事务超时而被捕获,则输出信息。事务的时间戳、游标ID以及从日志中捕获游标的时间。
例如:
mloginfo mongod.log --cursors
DATETIME CURSORID REAPEDTIME
2019-06-14 12:31:04.180000+01:00 abc1 2019-06-18 12:31:04.180000+01:00
2019-06-14 12:31:04.180000+01:00 abc2 2019-06-18 12:31:06.180000+01:00
2019-06-14 12:31:04.180000+01:00 abc3 2019-06-18 12:31:08.180000+01:00
Storage Stats (--storagestats
)
输出慢事务的存储统计信息。
例如:
mloginfo mongod.log --storagestats
namespace operation bytesRead bytesWritten timeReadingMicros timeWritingMicros
config.system.sessions update None None None None
local.myCollection insert None None None None
local.myCollection update None None None None
local1.myCollection insert None None None None
invoice-prod.invoices insert 12768411 22233323 86313 12344
invoice-prod.invoices insert 12868411 22233323 86313 12344