【发布时间】:2021-04-24 03:07:12
【问题描述】:
我正在尝试读取位于 /var/log/mongodb 的 MongoDB 日志文件,其内容如下:
2019-11-04T05:04:00.390-0800 I COMMAND [conn38649] command loldb.$cmd command: update { update: "SUBSCRIPTION", ordered: true, writeConcern: { w: 1 }, $db: " loldb" } numYields:0 reslen:295 locks:{ Global: { acquireCount: { r: 460, w: 460 } }, Database: { acquireCount: { w: 460 } }, Collection: { acquireCount: { w: 459 } }, oplog: { acquireCount: { w: 1 } } } 协议:op_query 568ms
2019-11-04T05:04:00.396-0800 I COMMAND [conn38657] command loldb.SUBSCRIPTION command: find { find: "SUBSCRIPTION", filter: { customerID: 75824180, policeDepartmentID: 1 }, projection: {}, $readPreference: { mode: "secondaryPreferred" }, $db: "loldb" } planSummary: COLLSCAN keysExamined:0 docsExamined:69998 cursorExhausted:1 numYields:550 nreturned:1 reslen:430 locks:{ Global: { acquireCount: { r: 1102 } },数据库:{ acquireCount: { r: 551 } },集合:{ acquireCount: { r: 551 } } } 协议:op_query 424ms
2019-11-04T05:04:00.402-0800 I COMMAND [conn38735] command loldb.SUBSCRIPTION command: find { find: "SUBSCRIPTION", filter: { customerID: 75824164 }, projection: {}, $readPreference: { mode: "secondaryPreferred" }, $db: "loldb" } planSummary: COLLSCAN keysExamined:0 docsExamined:58142 cursorExhausted:1 numYields:456 nreturned:1 reslen:417 locks:{ Global: { acquireCount: { r: 914 } },数据库:{ acquireCount: { r: 457 } },集合:{ acquireCount: { r: 457 } } } 协议:op_query 374ms
每个块引用是一个单行条目
文件的内容每秒更新一次我需要读取文件,如果查询时间protocol:op_query 385ms 超过 300 毫秒,我需要将整个日志/行保存到另一个文本文件 slow_queries.text。
我正在读取的文件是.log文件,但内容似乎是JSON格式(如果我错了,请纠正我)前面有时间戳和命令类型,有没有有效的方法来读取这种格式的数据?我只是逐字逐句阅读。
另外,我该怎么做才能自动读取对.log 文件所做的更改,而无需每次都运行脚本?
【问题讨论】:
标签: mongodb bash shell cron cron-task