热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mongo日志可视化

原始mongod.log格式:2020-11-26T21:33:45.896+0800INETWORK[listener]connectionacceptedfro

原始mongod.log格式:

2020-11-26T21:33:45.896+0800 I  NETWORK  [listener] connection accepted from 10.10.6.192:52138 #1663452 (121 connections now open)
2020-11-26T21:33:45.896+0800 I  NETWORK  [conn1663452] received client metadata from 10.10.6.192:52138 conn1663452: { driver: { name: "mongo-csharp-driver", version: "2.11.0.0" }, os: { type: "Linux", name: "Linux 5.3.0-1019-aws #21~18.04.1-Ubuntu SMP Mon May 11 12:33:03 UTC 2020", architecture: "x86_64", version: "5.3.0-1019-aws" }, platform: ".NET Core 3.1.4" }
2020-11-26T21:33:45.910+0800 I  ACCESS   [conn1663452] Successfully authenticated as principal push on push from client 10.10.6.192:52138
2020-11-26T21:33:46.325+0800 I  NETWORK  [listener] connection accepted from 10.10.3.144:50170 #1663453 (122 connections now open)
2020-11-26T21:33:46.325+0800 I  NETWORK  [conn1663453] received client metadata from 10.10.3.144:50170 conn1663453: { driver: { name: "PyMongo", version: "3.8.0" }, os: { type: "Linux", name: "Linux", architecture: "x86_64", version: "4.15.0-1054-aws" }, platform: "CPython 3.7.3.final.0" }
2020-11-26T21:33:46.326+0800 I  NETWORK  [listener] connection accepted from 10.10.3.144:50172 #1663454 (123 connections now open)
2020-11-26T21:33:46.326+0800 I  NETWORK  [conn1663454] received client metadata from 10.10.3.144:50172 conn1663454: { driver: { name: "PyMongo", version: "3.8.0" }, os: { type: "Linux", name: "Linux", architecture: "x86_64", version: "4.15.0-1054-aws" }, platform: "CPython 3.7.3.final.0" }
2020-11-26T21:33:46.339+0800 I  ACCESS   [conn1663454] Successfully authenticated as principal crawl on crawl from client 10.10.3.144:50172
2020-11-26T21:33:46.888+0800 I  NETWORK  [conn1663454] end connection 10.10.3.144:50172 (122 connections now open)
2020-11-26T21:33:46.888+0800 I  NETWORK  [conn1663453] end connection 10.10.3.144:50170 (121 connections now open  

这种格式非常不便于阅读,于是各种找寻mongo日志可视化工具,发现一个mtools好工具,能够格式化mongo日志,并且可以直接输出为json格式,于是学习了一下简单的吧日志传到elk里面展示。

(1)首先写一个简单的脚本:

root@pro-cs-mongo-2-74:/fmApplication/mongo-commission/logs# cat /backup_local/dba/scripts/mongo_mfilter.sh
#!/usr/bin/env bash
#取最近1min 执行耗时超过200ms慢日志
logs="/fmApplication/mongo-commission/logs/mongod.log"
start_time=`date -d "1 min ago" "+%b %e %R"`
/usr/local/bin/mlogfilter $logs --slow 200 --from $start_time --to "+1min" --json >> /fmApplication/mongo-commission/logs/mongo.json

 然后加入crontab,每分钟执行一次,取最近一分钟的日志新产生的日志,这样mongod.log就可以实时json化为mongo.json

root@pro-cs-mongo-2-74:/fmApplication/mongo-commission/logs# crontab -l
# *    *    *    *    *
#min hour  day  month  day_of_week
#
* * * * * script -c "/backup_local/dba/scripts/mongo_mfilter.sh >>/tmp/crontab.log

 检查日志输出已经没问题,然后开始接入ELK,我这里直接用阿里云的日志服务。

 (2)安装配置阿里云的logstail,并且接入json文件,接入以后的显示效果为:

看起来还是不够友好,然后再用json函数格式化一下,取关键信息:

*|SELECT replace(substr(datetime,1,19),\'T\',\' \') as datetime,
duration,operation,thread,namespace,concat(json_format(json_array_get(split_tokens,5)),
json_format(json_array_get(split_tokens,6)),
json_format(json_array_get(split_tokens,7)),
json_format(json_array_get(split_tokens,8)),
json_format(json_array_get(split_tokens,9)),
json_format(json_array_get(split_tokens,10)),
json_format(json_array_get(split_tokens,11)),
json_format(json_array_get(split_tokens,12)),
json_format(json_array_get(split_tokens,13)),
json_format(json_array_get(split_tokens,14)),
json_format(json_array_get(split_tokens,15)),
json_format(json_array_get(split_tokens,16)),
json_format(json_array_get(split_tokens,17)),
json_format(json_array_get(split_tokens,18)),
json_format(json_array_get(split_tokens,19)),
json_format(json_array_get(split_tokens,20)),
json_format(json_array_get(split_tokens,21)),
json_format(json_array_get(split_tokens,22)),
json_format(json_array_get(split_tokens,23)),
json_format(json_array_get(split_tokens,24)),
json_format(json_array_get(split_tokens,25)),
json_format(json_array_get(split_tokens,26)),
json_format(json_array_get(split_tokens,27)),
json_format(json_array_get(split_tokens,28)),
json_format(json_array_get(split_tokens,29)),
json_format(json_array_get(split_tokens,30)),
json_format(json_array_get(split_tokens,31)),
json_format(json_array_get(split_tokens,32)),
json_format(json_array_get(split_tokens,33)),
json_format(json_array_get(split_tokens,34)),
json_format(json_array_get(split_tokens,35))) as query_sql where duration>200

这个是日志服务sql语法,最终效果为:

最后再利用日志服务自带的告警功能配好webhook钉钉告警,简单的mongo日志可视化就算是完成了。

 


推荐阅读
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • MongoDB Aggregates.group() 方法详解与编程实例 ... [详细]
  • 如何在Android应用中设计和实现专业的启动欢迎界面(Splash Screen)
    在Android应用开发中,设计与实现一个专业的启动欢迎界面(Splash Screen)至关重要。尽管Android设计指南对使用Splash Screen的态度存在争议,但一个精心设计的启动界面不仅能提升用户体验,还能增强品牌识别度。本文将探讨如何在遵循最佳实践的同时,通过技术手段实现既美观又高效的启动欢迎界面,包括加载动画、过渡效果以及性能优化等方面。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 在Laravel中实现PHP对JSON数据的发布与处理 ... [详细]
  • 本文提供了 RabbitMQ 3.7 的快速上手指南,详细介绍了环境搭建、生产者和消费者的配置与使用。通过官方教程的指引,读者可以轻松完成初步测试和实践,快速掌握 RabbitMQ 的核心功能和基本操作。 ... [详细]
  • 在启用分层编译的情况下,即时编译器(JIT)的触发条件涉及多个因素,包括方法调用频率、代码复杂度和运行时性能数据。本文将详细解析这些条件,并探讨分层编译如何优化JVM的执行效率。 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • 在Python 3环境中,当无法连接互联网时,可以通过下载离线模块包来实现模块的安装。具体步骤包括:首先从PyPI网站下载所需的模块包,然后将其传输到目标环境,并使用`pip install`命令进行本地安装。此方法不仅适用于单个模块,还支持依赖项的批量安装,确保开发环境的完整性和一致性。 ... [详细]
  • ZeroMQ在云计算环境下的高效消息传递库第四章学习心得
    本章节深入探讨了ZeroMQ在云计算环境中的高效消息传递机制,涵盖客户端请求-响应模式、最近最少使用(LRU)队列、心跳检测、面向服务的队列、基于磁盘的离线队列以及主从备份服务等关键技术。此外,还介绍了无中间件的请求-响应架构,强调了这些技术在提升系统性能和可靠性方面的应用价值。个人理解方面,ZeroMQ通过这些机制有效解决了分布式系统中常见的通信延迟和数据一致性问题。 ... [详细]
  • 随着越来越多的应用程序采用JSON格式作为响应数据,基于Spring Framework构建的服务端应用也广泛采用了这一实践。本文将详细介绍如何在Spring 4.x版本的MVC框架中配置和实现HTTP请求返回JSON数据流,涵盖相关配置、依赖管理和代码示例,帮助开发者高效地实现这一功能。 ... [详细]
  • Python,英国发音:ˈpaɪθən,美国发音:ˈpaɪθ��ːn,空耳读法为“ ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • Python语言简介、环境搭建、PyCharm的安装和配置
    一、Python语言简介1.1Python语言的基本概念官方对Python语言的介绍如下:Python是一款易于学习且功能强大的编程语言。它具有高效率的数据结构,能够简单又有效地实 ... [详细]
  • 丛api的python的简单介绍
    本文目录一览:1、如何使用python利用api获取天气预报 ... [详细]
author-avatar
手机用户2502922313
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有