技本功丨甲方大人来了之运维数据分析平台搭建实战

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

d3f239125dd405af618082b0331864b7edbdec49

袋鼠云日志团队时常遇到各种各样的甲方大人,毕竟我们是一个非常优秀的企业服务公司(自信满满),当然面对甲方大人的时候要做到处变不惊,临危不乱,镇定自若的接受需求……


甲方大人的常用台词一定要记住:我们很忙,有好几套监控系统,能不能再不砍掉监控系统的情况下,帮助我们搞定日运维需求呢?这样的需求每天通过项目经理→产品经理→研发经理→浣熊(我)。


But,这个需求有点麻烦呀~


1328141b94a52c9bf7c67d573eff70a59ef1e838


我捋过我日渐稀疏的发,只能加油干啦!

2040444c93bef941067e0332b8d71756bf1ba144

先说下甲方大人的需求和痛点,甲方大人说平日的系统运维工作主要围绕应用、主机、数据库和业务四个方面。


(1)应用发布平台是IBM的WebSphereApplicationServer(简称WAS),应用的性能监控基于WAS自带监控模块

(2)主机监控基于IBMTivoliMonitoringSystem,业务监控则通过分析应用日志的方式实现

(3)数据库监控依赖一个古老的oracle性能监控工具

(4)应用日志需要登陆到AIX业务机器上查看


“每当出现一个问题,先登陆was看下业务进程性能趋势,再登陆Tivoli查看主机性能趋势,然后登陆数据库监控查看数据库性能趋势,再然后登陆AIX主机查看日志。一套下来肚子就饿了,到食堂发现好吃的饭菜已经被别人抢光了,希望你们能帮我们改善改善伙食“。嗯,听上去影响蛮大的,不过他们怎么知道我烧菜的手艺的,上周末做的清蒸鲈鱼味道还不错...


四个字,赶紧干活。在了解了甲方大人的需求和痛点后,经过一番苦思冥想,设计了下面的看上去有点复杂的架构图。大道至简,借鉴老子的一段话附和一下这张图,“人法地、地法天、天法道、道法自然”,老子用了十三个字,将天、地、人乃至整个宇宙的生命规律精辟涵括、阐述出来。


dbd164a080320a44fedab3f8fd63e7994c859fac


菜谱准备好了,小葱拌豆腐,开始下锅。


数据采集上,针对WAS、Tivoli、Oracle和AIX应用主机的采集需求,需要coding了(没有什么需求是一坨代码解决不了的,如果有那就两坨),前方高能,请做好笔记:

(1)开发一个WAS进程性能采集器,参考https://github.com/alexivkin/WebSphere-Performance-Monitor,万能的python,哦no,这个是Jython,看起来跟python一样嘛,无非就是python里面用java,java里面跑python。由于是三年前的版本,加上没有IBM WAS的测试环境,花掉一个上午时间脑补调试,什么是脑补调试法,答按行过目代码、眼睛输入,大脑跑跑(非专业人士请勿模仿);

(2)开发一个Tivoli数据收集器,又花掉一个晚上,Tivoli支持Soap方式拉取新能数据,我不会告诉你可以用一个CURL拉取所有主机性能所有数据的,想知道的留言处扣666;

(3)开发一个Oracle数据库性能采集器,还好elastic 大佬开源了beats(https://github.com/elastic/beats),坑爹的是竟然不支持oracle,莫非oracle大佬的开发人员都休眠了么;花了两个晚上捣鼓捣鼓,支持个tps、qps、物理读、逻辑度、吞吐量还是可以的,小算一下支持200多个指标吧,oracle采集beat依赖oracle client不是一般的麻烦;

https://www.oracle.com/technetwork/topics/intel-macsoft-096467.html

(4)开发一个AIX日志文件采集器,袋鼠云有技术大牛开发了一个,拿过来直接集成;

https://github.com/DTStack/jfilebeat


数据接收和解析组件,袋鼠云自研了java版本的logstash,参考:

https://github.com/DTStack/jlogstash

日志接收和解析性能是ruby版本性能5倍以上,关键是配置简单,分钟内上手smiley_0.png?tp=webp&wxfrom=5&wx_lazy=1&

数据存储方面,最近一周的日志数据全部投递到elasticsearch里,以防哪天甲方大人心血来潮想搜个日志啥的;结构化的应用进程数据、主机性能数据、数据库性能数据和业务日志数据投递到clickhouse里,通过clickhouse强大的聚合计算能力(多表数据关联,sum/avg等聚合计算),计算出同一时间线上的业务和进程、主机以及数据库性能的关联趋势图。

一句话总结下ck吧,在sql里计算我只服ck!

链接:

https://clickhouse-docs.readthedocs.io/en/latest/functions/

源码请见:

https://github.com/yandex/ClickHouse

坚持看到这里就是真爱了,贴上一张系统架构图,图中左方是数据采集层,easymanager是公司自研的自动部署神器(不用想了,没有开源),右边是数据展示端,把应用、主机、数据库、日志数据统一展示在一张大屏上,废话不说了,上菜!


3a74015fb6a2d64f80c1607203548750151269a4

目录
相关文章
|
1月前
|
运维 监控 关系型数据库
运维实战:Windows服务挂掉了怎么办,通过Bat脚本实现自动重启
本文介绍了如何使用Bat脚本自动监控并重启Windows服务器上的挂掉服务,例如MySQL,以避免在假期等情况下需要紧急处理问题。首先,创建一个Bat脚本,设定每小时检查一次服务状态,如果服务停止则自动重启。脚本内容包括检查服务是否运行并根据状态执行相应操作。同时,脚本中包含了确保以管理员权限运行的代码。 脚本需设置为ANSI编码以防止乱码。推荐将Bat脚本封装为Windows服务以保证稳定运行,提供了使用NSSM工具、Windows服务程序和开源的Java工具winsw将批处理脚本转化为服务的方法。这些方法可以确保服务在后台可靠运行,即使在服务意外停止时也能自动恢复。
|
12天前
|
存储 Java 数据挖掘
构建基于Spring Boot的数据分析平台
构建基于Spring Boot的数据分析平台
|
17天前
|
运维 知识图谱 Python
专为运维工程师设计!阿里藏经阁出品的Python实战手册被我搞来了
Python 可能是极少数既简单又强大的编程语言中的一种。更重要的是,用它来编程是非常快乐的事。 今天给小伙伴们分享的是阿里“藏经阁”出品的专门给运维工程师设计的Python实战手册
|
19天前
|
存储 NoSQL Java
使用Java实现高效的数据分析平台
使用Java实现高效的数据分析平台
|
19天前
|
存储 分布式计算 NoSQL
Java中的高效数据分析与处理平台实现
Java中的高效数据分析与处理平台实现
|
20天前
|
存储 数据可视化 Java
使用Java实现可视化数据分析平台
使用Java实现可视化数据分析平台
|
1月前
|
数据采集 数据可视化 数据挖掘
数据挖掘实战:使用Python进行数据分析与可视化
在大数据时代,Python因其强大库支持和易学性成为数据挖掘的首选语言。本文通过一个电商销售数据案例,演示如何使用Python进行数据预处理(如处理缺失值)、分析(如销售额时间趋势)和可视化(如商品类别销售条形图),揭示数据背后的模式。安装`pandas`, `numpy`, `matplotlib`, `seaborn`后,可以按照提供的代码步骤,从读取CSV到数据探索,体验Python在数据分析中的威力。这只是数据科学的入门,更多高级技术等待发掘。【6月更文挑战第14天】
71 11
|
1月前
|
数据采集 机器学习/深度学习 数据可视化
数据挖掘实战:Python在金融数据分析中的应用案例
Python在金融数据分析中扮演关键角色,用于预测市场趋势和风险管理。本文通过案例展示了使用Python库(如pandas、numpy、matplotlib等)进行数据获取、清洗、分析和建立预测模型,例如计算苹果公司(AAPL)股票的简单移动平均线,以展示基本流程。此示例为更复杂的金融建模奠定了基础。【6月更文挑战第13天】
227 3
|
1月前
|
JSON 数据挖掘 API
数据分析实战丨基于pygal与requests分析GitHub最受欢迎的Python库
数据分析实战丨基于pygal与requests分析GitHub最受欢迎的Python库
29 2
|
18天前
|
存储 数据采集 数据挖掘
Java中的高效数据分析与处理平台设计
Java中的高效数据分析与处理平台设计