Giter Club home page Giter Club logo

torns / rigeye Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zgjdzwhy/rigeye

0.0 1.0 0.0 1.75 MB

RigEye实时数据监控系统是一款可视化低代码监控系统。借助本产品,您可以基于前端、应用、业务日志通过可视拖拽搭建积木的方式,对采集到的数据进行实时处理汇总,并将结果保到时序数据库中,最后通过配置方式定义多维度预警指标,迅速便捷地为企业构建实时数据监控能力。

Java 99.34% Shell 0.66%

rigeye's Introduction

实时数据监控预警系统

目录

实时数据监控预警系统 1

目录 1

1、前言 1

1.1、概述 1

1.2、工作流程 1

1.3、适用场景 1

2、功能概述 1

3、技术架构 2

4、快速入门 4

4.1、数据源管理 4

4.2、创建监控任务 5

4.2.1监控任务概述 5

4.3 报警管理 9

4.3.1 报警联系人列表 9

4.3.2 新建报警 9

4.3.3 报警任务管理 10

4.3.4 报警故障统计 10

4.3.5 报警明细 10

4.4.6 报警任务管理 11

4.4 异常管理 11

4.4.1 异常模板管理 11

4.4.2 异常过滤管理 12

4.4.3 异常日志明细 13

4.4.4 异常日志列表 13

4.5可视化清洗 14

4.5.1 自定义洗清 14

4.5.2 内置切分器 16

1、前言

1.1、概述

RigEye实时数据监控系统是一款可视化低代码监控预警管理系统,。借助本产品,您可以基于前端、应用、业务日志通过可视拖拽搭建积木的方式,对采集到的数据进行实时处理汇总,并将结果保到时序数据库中,最后通过配置方式定义多维度预警指标,迅速便捷地为企业构建实时数据监控能力。

1.2、工作流程

  • 数据收集:RigEye 支持通过配置从 KAFKA上抓取日志。

  • 任务定义:

    • 通过任务配置来定义实时处理、数据存储、展示分析、数据 API 和报警等任务,从而定义出自己的应用场景。

    • 通过应用日志监控等预设场景直接进行业务监控。

1.3、适用场景

  • 业务深度定制监控:可按需深度定制具备业务属性的实时监控报警。业务场景包括交易场景、资讯场景、风控场景等。

  • 业务异常监控:对分布式应用进行异常监控。

  • 统一报警和指标监控报表平台:统一报警和指标监控。

2、功能概述

RigEye 产品提供一系列监控定制功能,包括数据接入、数据计算、数据存储、大盘展示和报警,以及下游对接等环节。

各功能描述如下:

  • 灵活的实时计算任务定义

    • 支持拖拽式的实时计算模块化编程,支持绝大多数语言逻辑,如通用数学计算、正则匹配、if/else 等。

    • 丰富的实时计算和存储算子支持,包括 Sum、Count、Max/Min、环比等。

  • 稳定高效的时序和事件存储

  • 在线持续聚合数据,保证数据容量可控。

  • 支持二级的下钻索引。

  • 可定制的报警设置

  • 支持设置任意连续时间的滑动平均、最大值报警。

    • 丰富的报警通道,如邮件、短信、微信等。
  • 灵活的预警大盘定制

  • 丰富的展示控件,如柱线图、热力图、饼图、翻牌器等。

    • 支持大盘共享、全屏展示等。
  • 灵活对接各类下游应用

  • 清洗后的数据可实时回送到kafka供下游业务使用。

3、技术架构

4、快速入门

4.1、数据源管理

日前监控平台所有数据均来源于kafka,所以创建监控任务前必须创建任务数据来源

Type:默认kafka

Topic:输入需要监控的数据来源于哪个topic

Java自研应用日志topic命名规范是:applog-项目模块名

ConsumerID:待创建的监控任务消费组id,命名规范:cid_RigEye_项目名

Servers:kafka集群列表(目前所有日志类数据全在log-kafka集群)

4.2、创建监控任务

本文介绍了创建自定义监控任务的第一个步骤:配置数据源。在准备好数据源后,需要在 RigEye 控制台进行简单的配置。

流程导航

点击以下流程图可跳转至相关步骤的文档。

4.2.1监控任务概述

任务配置流程,包含数据源配置、日志清洗、数据集与报警配置三个步骤。在数据集与报警配置步骤中,您可以根据需要进行不同的配置。

4.2.2 新建任务

在控制台左侧导航栏中选择监控处理任务->新建任务

任务名称:为用户自定义的任务名称,名称必须唯一,建议命名规则:项目名+任务说明。

监控项目名称:显示用户cmdb中归属的项目列表。

下一步:点击下一步自动进入后继配置。

保存:点击保存回到监控任务管理列表。

4.2.3 数据源配置

日志源类型:默认kafka数据源

数据源:选择在4.2中创建的待监控数据所在topic

编码设计:默认UTF-8

日志抓取预览:从选择的数据源topic中抓取一批数据供用户检查配置是否生效

下一步:进入下一步“数据清洗”配置

4.2.4 数据清洗配置

数据清洗配置分三块区域:日志抓取结果区、定义切分规则区、日志切分预览区

日志抓取结果区:存放上一步抓取到的原始日志

定义切分规则区:可视化数据清洗流程编排区,用户可以在该区域进行灵活的数据清洗逻辑编码

导入:可以导入其他相同清洗规则的脚本,节省清洗规则的编排时间

导出:可以导出洗清规则脚本供其他监控任务使用

日志切分预警区:可以根据编排的切分规则进行实时预览切分后的结果,用于对切分规则逻辑正确与否的效验

4.2.5 数据集配置

数据集配置分为五块区域:切分模型区、数据集区、异常检测区、明细数据目标地配置区、设置任务运行资源区

切分模型:显示上一步切分预览中的结果模型

设置数据集:数据集管理区域

设置异常检测:设置异常检测数据集,主要针对日志中的异常关键字做模糊匹配识别,每个监控任务只能添加一个异常检测数据集

设置明细数据目标地:该区别可以设置清洗后的数据输出给下游使用,目前只支持输出到kakfa

设置任务运行资源:如果数据来源量比较大,可以自定义设置任务运行资源来提升任务处理能力

默认资源使用:2个worker 每个worker 1 cores+4G ; driver:1 cores+1G

4.2.5.1设置数据集/异常检测

**数据集名称:**自定定义

筛选:只有满足该筛选条件的数据集会被计算在内。注意: 同时满足下述规则对应且的关系,满足下述一条规则对应或的关系。

指标: 一般为数字类型,是衡量目标的度量。RigEye 的指标对应于实时计算后的 Count、Max、Min、Sum。

**时间字段:**日志切分对应的时间字段,是实时监控的最基础维度。

**维度:**是衡量目标的思维角度。例如按班级统计学生人数,那么班级就是维度。相当于 SQL 语言中的GROUP BY。

4.2.6 监控处理任务管理

监控项目名:监控处理任务监控的cmdb中项目模块名列表

监控状态:对应列表中监控状态列,取值为正常、异常

批量启动:对用户选中的任务批量启动

批量停止:对用户选中的任务批量停止

批量删除:对用户选中的任务批量删除

列表字段说明:

状态:代表任务运行状态

数据集:代表任务需要聚合的数据集个数

监控状态:代表任务运行中是否有异常

浏览:查看任务详细

启动/停止:启动/停止任务

复制任务:当需要复制一个新任务时使用

4.3 报警管理

4.3.1 报警联系人列表

报警联系人列表显示所有项目模块预警联系人,数据是手工点击<信息同步>从cmdb中同步过来的,未来会做成实时同步。该列表数据用于报警任务中的报警通知人。

4.3.2 新建报警

报警名称:自定义报警名称,建议项目名+描述

监控项目名:下拉选择在4.2.2里选择监控的任务

变量定义:支持多个变量定义,用于数据集的筛选

变量:系统自动生成变量标识,生成规则是v_数字,用于区分不同的变量

数据集:选择在4.2.5中创建的数据集(包括异常检测数据集)

维度:数据集筛选条件

报警规则:N=代表分钟,上图规则描述为间隔1分钟系统判断v_1.notice_error_count指标总和大于等1就触发微信报警

报警级别:下拉选择报警级别,默认是L3-警告

生效时间:预警任务生效时间范围,范围外不会发送任务报警消息,但会在<报警故障统计>和<报警历史明细>中显示

说明:目前相同报警消息发送间隔是10分钟,报警恢复间隔1分钟

4.3.3 报警任务管理

显示所有新建的报警任务,新建完成的报警任务需要点击”启动”按钮后报警任务才能生效

4.3.4 报警故障统计

报警故障统计是对报警明细的实时按天统计,使用研发人员更方便了解自己负责项目的报警情况

报警日期:报警产生日期

监控项目名:4.2.2中选中的监控项目模块名

报警等级:4.3.2中新建报警时选择的报警级别

报警任务名称:4.3.2中新建报警时输入的报警任务名称

触发报警规则描述:4.3.2中配置的报警规则

报警数量:略

报警明细:点击查看4.4.5中具体报警明细

监控大盘:点击查看指定报警日期的系统监控图表,包括cpu、内存、磁盘

4.3.5 报警明细

4.4.6 报警任务管理

显示所有新建的报警任务,新建完成的报警任务需要点击”启动”按钮后报警任务才能生效

4.4 异常管理

4.4.1 异常模板管理

异常模板管理功能主要是配合4.2.5.1节添加的“设置异常检测”服务的,异常检测会基于在此处添加的异常关键字(正则)对日志进行模糊匹配,匹配中了会将异常模板名称插入4.2.3节数据洗清出来的系统字段_error_key字段中,这样在4.2.5.1中的“设置异常检测”数据集时,就可以基于_error_key字段做异常统计,同时将匹配中的日志插入<异常日志明细表>供后继分析

4.4.1.1添加异常模板

下图配置说明:对所有监控项目日志中null关键字做检测

监控项目名称:4.2.2中选择的项目模块名列表

异常模板类型:异常模板分关键字和正则匹配两类

异常模板名称:用于描述异常模板的名称

异常模板内容:用于异常检测的内容,包括关键字或正则匹配,大小写敏感

说明:

  1. exception和error系统默认异常关键字,忽略大小写,并对所有项目生效

    2、异常模板新增/修改后需要重启4.2.6列表中的监控任务才能生效

4.4.2 异常过滤管理

异常过滤管理主要用于对添加的全局异常模板做过滤

4.4.2.1添加异常过滤模板

下图说明:忽略bd-hgla-manage中null异常关键字,当bd-hgla-manage日志中出现null关键字时不记录到_error_key异常统计

监控项目名称:在4.2.2中添加的监控项目模块名称

过滤模板名称:在4.4.1.1中添加的异常异常模板名称

说明:异常过滤模板新增/修改后需要重启4.2.6列表中的监控任务才能生效

4.4.3 异常日志明细

异常日志明细数据来源于4.2创建的监控任务,监控任务一旦发现项目日志中存在4.4.1.1中添加的相关项目关键字,则插入一条记录到异常日志明细

Esid:明细日志在es中的id

项目名:监控的项目模板名

日志等级:4.2.4中数据清洗配置中从日志切分出来的日志等级,如果为空则代表没有切分该字段

日志内容:从kafka消费出来的原始日志供问题分析用

异常模板名:为匹配上的异常模板名

日志产生时间:为4.2.4中切分出来的 @timestamp时间

添加异常关键字:当发现日志内容中有需要新增的异常关键字时,可以点击此快捷按钮添加

4.4.4 异常日志列表

异常日志列表是对上面异常日志明细的按天聚合统计

4.5可视化清洗

4.5.1 自定义洗清

数据清洗界面分三块区域:原始日志区、可视化清洗流程编排区、清洗结果预览区

在可视化清洗流程编排区(以下简称“编排区”),支持使用一个或多个“积木”拼装出日志清洗的逻辑,将原始日志区中的日志“清洗”成结构化的键值对(Key-Value Pair)。

在编排区编辑的过程中,支持随时单击清洗结果预览区域上方的日志切分预览按钮,预览每一行原始日志通过当前编排区的流程清洗后的键值对结果。

说明:为配合系统后续查询,切分规则中请配置一个@timestamp的时间戳字段,否则后续查询功能将不能使用。另外,切分结果中内置了下划线开头的字段:_sysTime、_error_key、_appName、_line,所以配置key时请不要使用这些内置key名称。

系统字段名
_sysTime 系统时间
_error_key 异常模板名称(不是异常模板值)
_appName 项目名称
_line 一条日志

示例一

本示例演示如何配置一个简单的日志清洗流程。

假如某系统的交易日志如下:

2018-10-08 11:00:01|evan|170794|登录

2018-10-08 11:00:02|evan|170794|发贴

2018-10-08 11:10:01|evan|170794|回贴

以第一行数据为例,假设目标切分结果为如下几个键值对:

Key 类型 Key Value
Date @timestamp 2018-10-08 11:00:01
String username evan
Long userid 170794
String event 登录

通过观察发现,键值对之间均使用竖线(|)进行分隔,因此可以使用单分隔符切分器来切分键值对。

  1. 在编辑区左侧的工具栏中,将单分隔符切分器拖拽至编辑区,如下图所示。

    注意:切分器必须连接在开始清洗模块下才能生效。

    s1

    配置切分说明:

    l 以“|”为分隔符,“_line”作为入参(_line 代表原始日志行本身)。

    l 切分后,0 号位置的字符串按照 yyyy-MM-dd HH:mm:ss 的格式转为 date。

    l 1 号位置的字符串转为 key 为 username 的 String。

    l 2 号位置转为 key 为 userid 的 Long。

    l 3 号位置保存为 key 为 event 的 String。

  2. 点击日志切分预览,可以观察到每行日志的切分结果如下:

    s2

    最终生成的切分模型如下所示:

    444

  3. 单击保存下一步,清洗流程生效。

    到此为止,一个简单日志切分就完成了。

4.5.2 内置切分器

4.5.2.1 单分隔符切分器

说明

将单一字符串作为输入,当匹配到用户指定的分隔字符串时进行切分,切分结果为多个键值对(Key-Value)。

示例

样例日志:

2018-10-08 11:00:01|evan |170794|买入

2018-10-08 11:10:01|evan|170794|卖出

自定义切分逻辑:

http://aliware-images.oss-cn-hangzhou.aliyuncs.com/arms/ex_preset_splitter_single_separator.png

切分逻辑说明:

  • 以竖线(|)为分隔符,以 _line 作为入参(_line 代表原始日志行本身)。

  • 切分后 0 号位置的字符串按照 yyyy-MM-dd HH:mm:ss 的格式转为 date (内部实际将以 Long 型保存)。

  • 1 号位置的字符串转为以 username 为 Key 的字符串。

  • 号位置转为以 userid 为 Key 的 Long。

  • 号位置转为以 event 为 Key 的字符串。

    注意:

  • 多字符分隔符:本切分器分隔符可以是多字符。例如以 a:🅱️:c 为输入,以 :: 为分隔符切分。

4.5.2.2 多分隔符切分器

说明

将单一字符串作为输入,当匹配到用户指定的任意一个分隔字符串时进行切分,切分结果为多个键值对(Key-Value)。

示例

样例日志:

2018-07-25 17:25:00,aaa|b~1

2018-07-25 17:26:00,aaa|b~1

自定义切分逻辑:

http://aliware-images.oss-cn-hangzhou.aliyuncs.com/arms/ex_preset_splitter_multi_separator.png

切分结果:

4.5.2.3 顺序分隔符切分器

说明

对于较复杂的切分场景(例如 accesslog),可以使用 RigEye 的顺序分隔符切分器,以 O(n) 的复杂度切分日志。

示例

样例日志:

117.xx.xx.xx 835158 - [26 May 2014:14:05:28 +0800] "GET http://www.xxxxxx.com/trade/detail/trade_snap.htm?spm=a1z0f.2.100003.9.8BpicQ&trade_id=664793864233811" 302 0

117.xx.xx.xx 835158 - [26 May 2014:14:05:28 +0800] "GET http://www.xxxxxx.com/trade/detail/trade_snap.htm?spm=a1z0f.2.100003.9.8BpicQ&trade_id=664793864233811" 302 0

需要切分出的字段有:

4.5.2.4 KV 切分器

说明

如果需要切分含有多组 KV 的日志,且各个 KV 的位置不固定时,可以使用 KV 切分器。

示例 1

样例日志:

key1=aaaa;key2=bbbb;key3=cccc;key4=dddd;....

key1=aaaa;key2=bbbb;key3=cccc;key4=dddd;....

切分逻辑:

http://aliware-images.oss-cn-hangzhou.aliyuncs.com/arms/ex_preset_splitter_kv1.png

注意:

  • 如果没有配置文本字符与 Key 的映射,KV 切分器将视所有 Key 为“未定义 key”,所有 Key 对应的 Value 将被切分为 StringKey 类型。

  • 如果选择取消勾选是否切分未定义的 Key,那么未定义 Key 将不会被切分。换言之,如果没有配置文本字符与 Key 的映射,并且未勾选是否切分未定义的 Key,则 KV 切分器将不做任何处理。

    示例 2

    以下是一个需要将指定 Key 转换成对应类型的示例:

    样例日志:

    name=abc;item=iphone6;quantity=15;date=2014-07-25 17:25:00;....

    name=abc;item=iphone6;quantity=15;date=2014-07-25 17:25:00;....

    目标是将 quantity 变为 LongKey,date 变为 DateKey。切分逻辑:

    http://aliware-images.oss-cn-hangzhou.aliyuncs.com/arms/ex_preset_splitter_kv2.png

4.5.2.5 JSON 切分器

说明

如果日志中包含 JSON 字符串,使用 JSON 切分器可以快速切分出该 JSON 中的叶子节点。

示例 1:全自动切分

样例日志:

{"@timestamp":"2018-10-19T05:30:14.892Z","@metadata":{"beat":"filebeat","type":"doc","version":"6.1.0","topic":"applog-bd-notice-server"},"source":"/opt/app/logs/bd-notice-server/bd-notice-server.log","offset":1514761,"message":"2018-10-19 13:30:12.153 [bd-notice-server] [INFO ] [http-apr-10.205.101.63-8000-exec-19] com.xxxxxx.utils.WeiXinUtil - 平台回传参数:{\"errcode\":0,\"errmsg\":\"ok\",\"invaliduser\":\"\"}","prospector":{"type":"log"},"project":"bd-notice-server","beat":{"name":"zp-prd-app-101-63","hostname":"zp-prd-app-101-63","version":"6.1.0"}}

将该 JSON 放在一行文本中,使用 JSON 切分器进行切分。切分逻辑:

http://aliware-images.oss-cn-hangzhou.aliyuncs.com/arms/ex_preset_splitter_json1.png

切分结果:

rigeye's People

Contributors

zgjdzwhy avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.