一、业务背景

运满满创立于2013年,致力于为公路运输行业提供高效管理配货的app。在5年时间内从初创型公司发展到独角兽企业,我们经历了很多次的技术架构调整。

今天给大家分享下不同时期,在运维监控方面做的多次架构升级。希望给大家在技术选型阶段,提供一些参考和借鉴。

二、架构演进

运满满监控整体可以分为三个阶段:全家桶套餐时代、DevOps时代、定制AIOps时代

创业期:全家桶套餐

在2015年以前,公司业务发展的不确定性,服务器数量规模较少。大部分都是靠运维人工监控、每日脚本巡检。

和大部分创业公司一样,当时的运维人员控制在3人以下,每天都在处理各类开发需求,完全没有空闲去开发系统,做整体的监控告警。这个阶段,我们急需一款开源的、功能齐全的、入门成本低的监控系统。

Zabbix是我们当时的选择,简单的配置页面,丰富的agent数据采集,支持短信、邮件及微信告警,在一个星期内,我们就完成了全站的基础监控。

Zabbix开箱即用的使用方式,适合初创型公司。即使是现在,Zabbix还在线上运行,监控网络设备的运行状态。

发展期:DevOps时代

到了2016年,随着业务高速发展,研发的需求越来越复杂,同时也暴露出Zabbix的很多缺点。

  1. Zabbix性能瓶颈,监控数据存储在Mysql中,随着监控数据越来越多,Zabbix响应时间变慢。

  2. Zabbix只支持metric类型监控,对于日志类监控,支持并不友好。

  3. Zabbix监控大盘页面不美观,无法满足业务方定制的需求。

基于以上问题,我们开始寻求专业领域内的各类监控。

CAT

CAT(Central Application Tracking)是基于Java开发的实时监控平台,主要包括移动端监控,应用侧监控,核心网络层监控,系统层监控等。

CAT的优点是功能丰富,支持钉钉告警,95线99线计算,可展示代码级别监控,在代码层故障定位提供了强有力的工具。

LEPUS

Lepus(天兔)数据库企业监控系统是一套由专业DBA针对互联网企业开发的一款强大的企业数据库监控管理系统。Lepus后端采用Python语言开发,对于运维非常友好,可以很方便地作出一些个性化的修改。

Lepus的优点是无需安装agent,账号集中管理,适合作为数据库的CMDB使用。

ELK监控生态

ELK(Elasticsearch,Logstash,Kibana)是Elastic公司提供的三个开源组件。在日常工作中,我们需要进行日志分析场景:直接对日志文件进行grep、awk等正则操作,获取我们想要的信息。在大规模的场景中,日志文件分布在不同的服务器上,且文件非常大,逐台操作性能非常低。比如Nginx日志,Mysql慢查询日志,应用log日志等。ELK提供一整套的解决方案,可以帮助我们快速全站查询。

下图是Mysql慢查询的截图,通过python脚本,可以实时读取Mysql慢查询日志,并写入ES,方便查看线上问题。

下图是服务器的dashboard,通过模糊匹配,可以快速查询相关服务器组的性能指标。

Open-Falcon

Open-Falcon是小米开源的监控系统,灵活的数据采集,水平扩展能力以及高效的告警策略帮助我们快速监控servers的信息。在实际的环境中,我们仅采用了falcon-agent、falcon-transfer组件,帮助我们采集数据,具体的存储及展示由更专业的组件处理。

数据存储及展示

随着业务的发展,数据量越来越大,需要一款通用的时序数据库提供数据存储,当时有Prometheus、OpenTSDB、InfluxDB三大选择。

Prometheus提供了丰富的数据模型和查询语句,容易上手,很容易集成到现有的环境中,但是Prometheus的集群和HA架构并不成熟,需要额外的开发,并不适合。

InfluxDB是在Prometheus之后才提出的,并且提供商业的伸缩和集群化服务,相比Prometheus的metrics存储,InfluxDB还能处理事件类型的数据,对于大部分公司而言,商业化基本不会考虑。

OpenTSDB是一个基于Hadoop和Hbase的分布式事件序列数据库,相比Prometheus和InfluxDB,OpenTSDB的横向扩缩容很容易(需要有丰富的Hadoop/HBase维护经验),同时官方Open-falcon支持OpenTSDB,结合公司现有的技术栈,综合考虑后最终选择了OpenTSDB作为我们的存储。

关于数据展示的选型,在没有自研能力的情况下,Grafana是不二选择。Grafana的告警功能强大方便,同时支持钉钉,Webhook等,满足公司所有的需求。与此同时,我们将Grafana和Docker技术结合,实现了Grafana高可用、自愈和无限扩展能力。

数据库监控

Nginx监控

专线监控

Kubernetes监控

独角兽期:定制AIOps时代

在2017年底,运满满与货车帮合并,底层数据量翻倍,人员翻倍。我们碰到了以下几个问题:

  1. 问题排查,需要打开多套监控系统,效率低。

  2. 每套监控都有学习成本,对研发不友好。

  3. 一个故障,多套监控工具同时告警形成短信风暴,扰乱视听。

基于以上问题,我们提出了建设一套大而全的监控理念,主要包括以下几个要素:

  • 同时支持基础监控与业务监控;

  • 事件日志与metric指标关联:

  • 告警接口统一;

  • 支持多种语言接入。

监控架构图如下:

在数据采集阶段,保留了Open-Faclon、CAT、 客户端SDK、Logstash等入口,通过Kafka进行汇聚,引入大数据实时计算平台Flink,提炼metric指标,并最终入库。

在告警方面,开发了Alert Manager组件,对接多种告警渠道:钉钉、短信、微信等,并且自动创建Jira,告警闭环。

我们的最终目标是实现AI自愈的功能,比如自动降级、限流、流量切换等,目前该部分的功能还在探索中。


作者简介

叶圣贤,满帮集团运满满公司技术保障部负责人。长期关注运维、DB、容器等领域,推崇DevOps理念,善于开发工具解决日常运维工作,提高运维效率。

从初创型到独角兽企业,监控架构演进的那些事儿相关推荐

  1. 企业服务架构演进-走上造轮子之路

    本篇是企业服务架构演进系列的第六篇,本篇我打算从另外一个角度去说一下企业服务架构演进的过程中我个人的一些积累.我从正式工作的第二年开始有造轮子的想法,然后从最简单最基础的方式去做,慢慢的可以做一些复杂 ...

  2. 企业服务架构演进-第三方系统与自研之道

    本篇是企业服务架构演进系列的第五篇,本篇主要讨论的内容是在进行企业信息系统建设的过程中我们如何针对当前业务背景,部门需求选择合适的企业信息系统.是招人搭建企业信息部门建设还是购买第三方软件服务,或者基 ...

  3. 【云驻共创】云原生应用架构之企业核心业务未来架构演进路线及华为云方案

    文章目录 前言 一.企业核心业务架构演进 1.企业核心业务应用架构和集成架构发展历程 1.1 企业核心业务应用架构发展历程 1.1.1 单体架构 1.1.1.1 特点 1.1.1.2 优点 1.1.1 ...

  4. 从太平洋保险DCOS实践看企业IT架构演变

    ZD至顶网服务器频道 03月23日 新闻消息: 随着云计算的快速普及,传统企业越来越关注基于云计算的下一代IT架构变革了.回顾企业IT架构演进历史,主要经历了"传统孤岛".&quo ...

  5. 初创企业股权架构_初创企业如何以每月不到200美元的价格利用生产级基础架构...

    初创企业股权架构 Before you can launch a new service, you need infrastructure. You want reliability, scalabi ...

  6. 云时代,租电脑还是初创型企业最好的选择吗?

    创业了才知道,哪里都需要用钱,比如企业注册.办公室租金.设备购买--一切我们看得见看不见的地方.为了保证企业的长期生存,如何节流是创业公司不得不考虑的事. 今天我们来讲讲大家经常会忽略的,办公设备. ...

  7. 针对初创型企业的高新企业认定知识及建议!

    大家都知道申报高新技术企业需要一定条件,那初创企业申报高新技术企业能通过吗?这其实就是考验大家对<高新技术企业认定管理办法>中的企业成立时间问题熟不熟悉了,下面,高企在线小编将为大家简单分 ...

  8. 赋能制造业 思科助力“独角兽”企业构建信息化基础架构

    大家都知道,我国是制造大国,"Made in China"可以说是遍布全球随处可见.而近年来国家也在大力扶持制造业,诸如智能制造.中国制造2025等战略相继实施,且制造业业务也在不 ...

  9. Java B2B2C o2o多用户商城 springcloud架-企业云架构common-service代码结构分析

    2019独角兽企业重金招聘Python工程师标准>>> 当前的分布式微服务云架构平台使用Maven构建,所以common-service的通用服务按照maven构建独立的系统服务,结 ...

最新文章

  1. [转]EOS智能合约 私链激活 基本操作
  2. java_ant详解(转载)
  3. 日本CG大神又整活了!3D建模软件拿来搞面部实时捕捉,网友:效果好得有点吓人...
  4. 代码即财富之我学Java对象序列化与反序列化(2)
  5. libc-glibc
  6. 记录一个layui框架之自定义模块出现的问题
  7. NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨
  8. QT 的基础调试技巧 -- 未完 -- 更新中
  9. php给一个参数布尔值,php – 布尔值和字符串条件
  10. python新建文件夹口令_Python脚本破解压缩文件口令实例教程(zipfile)
  11. 使用Python对Syslog信息进行分析并绘图
  12. 拆分工作簿为多个文件_能不能将总表快速拆分为多个工作簿?当然!
  13. 二叉树遍历的几种常见方法
  14. 生存分析原理简明教程 单因素生存分析 Kaplan-Meier、LogRank 只能针对单一的变量进行 多因素cox回归分析
  15. Visual FoxPro正式版
  16. 面向服务通信与面向信号通信
  17. THUSC2018滚粗记
  18. Linux如何用link命令停网卡,如何使用 ethtool 命令管理以太网卡 | Linux 中国
  19. 今天不谈技术,分享一个引起业内轩然大波的月饼事件。
  20. 香港理工大学,新设“元宇宙科技”专业

热门文章

  1. 处理有外键约束的数据
  2. 窗口尺寸,文档高,元素宽高的获取方式
  3. IOS-NSDateFormatter使用介绍
  4. JQuery合并表格单元格
  5. 添加时,时间格式明明和数据库格式一样,却一直在报错,存不进去
  6. MathSystem
  7. oracle查询并列,【问】oracle-查询各门课程的前2名和后2名
  8. 查看Linux服务器运行级别命令,linux命令1、如何查看当前的Linux服务器的运行级别?...
  9. springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理
  10. linux之间安全传输文件,使用SCP安全地传输文件[Linux] | MOS86