企业级生产监控预警平台(实战简介)

写在前面

学习这个实战项目也已经过去很久了,本来一直也想以文字的方式将项目中的 点 进行记录下来。有什么问题,欢迎大家一起留言讨论。

关于这个系列的 所有文章,有新的想法,我也会及时做更新

项目效果

主要是想监控生产上的实时日志,日志可以是Linux的系统日志,MySQL数据库的日志,也可以是我们生产项目的业务日志,比如:SpringBoot 项目中打的日志。这些日志都可以作为本项目的原始日志。

对一些即将发生的问题 发出预警
-->
这样就可以对一些即将出现的问题可以提前预知,这样我们就可以在问题实际发生前进行解决
--> 
预警目标:将问题 扼杀在发生前

为啥要做预警?可能公司有服务的SLA保障!

    SLA: 99.99%
	sla:允许服务宕机时间 

	9越多代表全年服务可用时间越长服务更可靠,停机时间越短

	全年拿365天做计算吧,看看几个9要停机多久时间做能才能达到!

	1年 = 365天 = 8760小时

	99.9 = 8760 * 0.1% = 8760 * 0.001 = 8.76小时

	99.99 = 8760 * 0.0001 = 0.876小时 = 0.876 * 60 = 52.6分钟

	99.999 = 8760 * 0.00001 = 0.0876小时 = 0.0876 * 60 = 5.26分钟

架构选择

zabbix
elk 都是可以的

本项目选择的架构:
在这里插入图片描述
关于上面的架构,做几点简单说明

  1. 服务器产生的日志 我们需要修改为json格式的日志,默认是string。因为json格式的日志自带schema,方便spark处理。比如SpringBoot项目中的日志就可以通过修改配置文件达到这个目的。
  2. 产生的日志该是位于服务器的某一个文件夹位置。
 场景一:日志名称始终不变,可以使用tail -F /logs/serverA.log
		  当前的一份--> 保留10200M产生一个

 场景二:日志名称是变化的,tail -F 文件夹 spoolDir
  1. 本来,flume exec source 是可以监控某一个文件或文件夹下 的日志的,但是,当我们的 节点+服务 比较多的时候,我们就无法知道改日志是来自于哪一个机器的哪一个服务,所以,我们需要基于Flume源代码做二次开发,改造后能够使得我们的flume将 机器名+服务名 一起打进source ,最后sink 到 kafka中去,
    ps:本来这里我还想说,sink的时候能够按照某一规则sink 到kafka指定分区中。后面再做吧

4.原始日志+机器名+服务名这样的 json 格式的数据已经从 flume 到Kafka 中去。我们需要使用Spark Straeming +Spark SQL 对流日志进行处理,处理后的结果可以存储到InfluxDB(时序数据库),最后通过Grafana 进行可视化

项目概要

基于上面的几点说明,写一下本项目的大致流程:

  1. 基于CDH5 搭建好 各个环境
    版本:
    hadoop-2.6.0-cdh5.7.0
    apache-flume-1.9.0-bin
    kafka_2.11-1.1.0
    scala-2.11.8
    spark-2.4.3-bin-2.6.0-cdh5.7.0
    grafana-4.1.1
    InfluxDB-1.7.0

  2. 基于flume 源码 做二次开发,参考exec sorce --> exec+机器名+服务名 的source

  3. 上一步做好之后,就能将数据采集到kafka中去,并使用kafka-console-consumer.sh 将采集的数据打印到控制台,大致这样:

{"hostname":"host36","servicename":"serverA","time":"2019-07-11 02:10:23,756","logtype":"INFO","loginfo":"org.apache.hadoop.hdfs.server.blockmanagement.CacheReplicationMonitor:Rescanning after 3000 milliseconds"}
  1. 接着,就是开发spark 对接kafka ,进行各种编码,这个过程中,处理结果会实时写到InfluxDB中,然后我们使用Grafana进行展示。Grafana配置告警即可。类似:

在这里插入图片描述

项目收获

大致写一下,本项目能够得到主要技能

  1. Flume: 1.源码二次开发 2. 自定义Interceptor 3.概念 安装 配置文件 与 命令使用
  2. Kafka: 1.多分区全局有序的实现 2.at lease once + offset 自定义管理 3. 概念 安装(分布式) 与 命令使用
  3. Spark 广播变量如何结合业务需要?+ 窗口函数的使用?
  4. Spark Streaming + Kafka 自定义Offset 管理到 MySQL
  5. InfluxDB + Grafana 配合做监控
  6. Spark On Yarn

基于上面的流程,我们由易到难,

现在开始!!!

更多文章:企业级生产监控预警平台:https://blog.csdn.net/liuge36/category_9600405.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值