精华内容
下载资源
问答
  • 作用:调试时如果不知道打断点的位置,可以对某个变量的地址进行监控,使用数据断点来监控这个地址内数据变化 使用方法: 1.Ctrl+Alt+B 打开断点窗口,点击左上角New Data BreakPoint添加地址断点 2.如果是全局...

    作用:调试时如果不知道打断点的位置,可以对某个变量的地址进行监控,使用数据断点来监控这个地址内数据变化

    使用方法:

    1.Ctrl+Alt+B 打开断点窗口,点击左上角New Data BreakPoint添加地址断点

    2.如果是全局变量,或者同一类的变量被多次调用,则需要同时打多个数据断点用于监控多端对这个变量修改的行为

    3.如果要监控int m_a变量,则添加的方式是&m_a,或者 直接输入m_a的地址0x12345678;

    4.长度中添加m_a的所占字节数 sizeof(int)即可

    添加完数据断点后,直接F5运行,当监控的地址中内容发生变化时,则vs会自动中断。

     

    展开全文
  • 例如:有个串口工具在和COM3通信,可以用 串口监控软件,监控它们的通信数据。 我用过serialPort试过,但serialPort.Open()打开后,其他串口工具就无法和COM3连接,提示被占用,如何解决即可以监控串口,但又不影响...
  • 数据收集 在flume安装包下创建一...创建文件,并在文件添加数据 vim tmpconf/a1.conf 数据 a1.sources = r1 a1.channels = c1 a1.sinks = k1 a1.sources.r1.type = netcat a1.sources.r1.bind = node01 a1.sou...

    数据收集

    • 在flume安装包下创建一个临时文件tmpconf
    mkdir tmpconf
    
    • 创建文件,并在文件中添加数据
    vim tmpconf/a1.conf
    
    • 数据
    a1.sources = r1
    a1.channels = c1
    a1.sinks = k1
    a1.sources.r1.type = netcat
    a1.sources.r1.bind = node01
    a1.sources.r1.port = 44444 
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100 
    a1.sinks.k1.type  = logger
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    

    执行命令

    bin/flume-ng agent -c conf -f tmpconf/a1.conf -n a1  -Dflume.root.logger=INFO,console
    

    在另一个节点执行

    telnet node01 44444
    

    监控目录

    • 创建一个目录存储数据
    mkdir export/dir
    
    • 创建文件,添加数据
    vim tmpconf/b1.conf
    

    数据

    #Name the components on this agent
    a1.sources=r1
    a1.channels=c1
    a1.sinks=k1
    #Describe/configure the source
    ##注意:不能往监控目中重复丢同名文件
    a1.sources.r1.type=spooldir
    a1.sources.r1.spoolDir=/export/dir
    a1.sources.r1.fileHeader = true
    #Describe the sink
    a1.sinks.k1.type=hdfs
    a1.sinks.k1.hdfs.path=hdfs://node01:8020/spooldir/
    #Describe the channel
    a1.channels.c1.type=memory
    a1.channels.c1.capacity=1000
    a1.channels.c1.transactionCapacity=100
    #Bind the source and sink to the channel
    a1.sources.r1.channels=c1
    a1.sinks.k1.channel=c1
    
    • 执行命令
    bin/flume-ng agent -c conf -f tmpconf/b1.conf -n a1  -Dflume.root.logger=INFO,console
    
    • 在创建好的文件中上传txt文件

    11.txt

    • 执行完变成

    11.txt.COMPLETED

    监控某个文件的最新目录

    • 创建文件,添加数据
    vim tmpconf/c1.conf
    

    数据

    a1.sources=r1
    a1.channels=c1
    a1.sinks=k1
    #Describe/configure tail -F source1
    a1.sources.r1.type=exec
    a1.sources.r1.command =tail -F /export/taillogs/access_log
    #Describe sink1
    a1.sinks.k1.type=hdfs
    a1.sinks.k1.hdfs.path=hdfs://node01:8020/spooldir/
    #Use a channel which buffers events in memory
    a1.channels.c1.type=memory
    a1.channels.c1.capacity=1000
    a1.channels.c1.transactionCapacity=100
    #Bind the source and sink to the channel
    a1.sources.r1.channels=c1
    a1.sinks.k1.channel=c1
    
    • 执行命令
    bin/flume-ng agent -c conf -f tmpconf/c1.conf -n a1  -Dflume.root.logger=INFO,console 
    
    • 创建脚本

    mkdir /export/taillogs

    touch /export/taillogs/access_log

    脚本数据

    #!/bin/bash
    while true
    do
     date >> /export/servers/taillogs/access_log;
      sleep 0.5;
    done
    

    查看效果
    tail -f /export/taillogs/access_log

    两个agent级联

    • node01 :
    • 创建文件,添加数据
    vim tmpconf/d1.conf
    

    数据

    #Name the components on this agent
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    #Describe/configure the source
    a1.sources.r1.type = exec
    a1.sources.r1.command = tail -F /export/taillogs/access_log
    
    #Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    
    ##sink端的avro是一个数据发送者
    a1.sinks.k1.type = avro
    a1.sinks.k1.hostname = node02
    a1.sinks.k1.port = 4141
    
    #Bind the source and sink to the channel
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    
    • node02 :
    • 创建文件,添加数据
    vim tmpconf/d2.conf
    

    数据

    #Name the components on this agent
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    ##source中的avro组件是一个接收者服务
    a1.sources.r1.type = avro
    a1.sources.r1.bind = node02
    a1.sources.r1.port = 4141
    
    #Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    
    #Describe the sink
    a1.sinks.k1.type = hdfs
    a1.sinks.k1.hdfs.path = hdfs://node01:8020/avro
    
    #Bind the source and sink to the channel
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    

    执行

    bin/flume-ng agent -c conf -f tmpconf/d2.conf -n a1  -Dflume.root.logger=INFO,console 
    bin/flume-ng agent -c conf -f tmpconf/d1.conf -n a1  -Dflume.root.logger=INFO,console 
    

    执行顺序不能乱

    故障转移

    • node01 :
    • 创建文件,添加数据
     vim tmpconf/e1.conf
    

    数据

    #agent1 name
    agent1.channels = c1
    agent1.sources = r1
    agent1.sinks = k1 k2
    ##set gruop
    agent1.sinkgroups = g1
    ##set sink group
    agent1.sinkgroups.g1.sinks = k1 k2
    agent1.sources.r1.type = exec
    agent1.sources.r1.command = tail -F /export/taillogs/access_log
    ##set channel
    agent1.channels.c1.type = memory
    agent1.channels.c1.capacity = 1000
    agent1.channels.c1.transactionCapacity = 100
    ##set sink1
    agent1.sinks.k1.type = avro
    agent1.sinks.k1.hostname = node02
    agent1.sinks.k1.port = 52020
    ##set sink2
    agent1.sinks.k2.type = avro
    agent1.sinks.k2.hostname = node03
    agent1.sinks.k2.port = 52020
    ##set failover
    agent1.sinkgroups.g1.processor.type = failover
    agent1.sinkgroups.g1.processor.priority.k1 = 2
    agent1.sinkgroups.g1.processor.priority.k2 = 1
    agent1.sinkgroups.g1.processor.maxpenalty = 10000
    agent1.sources.r1.channels = c1
    agent1.sinks.k1.channel = c1
    agent1.sinks.k2.channel = c1
    
    • node02:
    • 创建文件,添加数据
     vim tmpconf/e2.conf
    

    数据

    #set Agent name
    a1.sources = r1
    a1.channels = c1
    a1.sinks = k1
    ## other node,nna to nns
    a1.sources.r1.type = avro
    a1.sources.r1.bind = node02
    a1.sources.r1.port = 52020
    ##set channel
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    ##set sink to hdfs
    a1.sinks.k1.type=hdfs
    a1.sinks.k1.hdfs.path= hdfs://node01:8020/flume/failover/
    a1.sources.r1.channels=c1
    a1.sinks.k1.channel=c1
    
    • node03:
    • 创建文件,添加数据
     vim tmpconf/e3.conf
    

    数据

    #set Agent name
    a1.sources = r1
    a1.channels = c1
    a1.sinks = k1
    ## other node,nna to nns
    a1.sources.r1.type = avro
    a1.sources.r1.bind = node03
    a1.sources.r1.port = 52020
    ##set channel
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    ##set sink to hdfs
    a1.sinks.k1.type=hdfs
    a1.sinks.k1.hdfs.path= hdfs://node01:8020/flume/failover/
    a1.sources.r1.channels=c1
    a1.sinks.k1.channel=c1
    
    • 执行
    bin/flume-ng agent -c conf -f tmpconf/e3.conf -n a1  -Dflume.root.logger=INFO,console 
    bin/flume-ng agent -c conf -f tmpconf/e2.conf -n a1  -Dflume.root.logger=INFO,console 
    bin/flume-ng agent -c conf -f tmpconf/e1.conf -n a1  -Dflume.root.logger=INFO,console 
    

    负载均衡

    • node01:
    • 创建文件,添加数据
     vim tmpconf/f1.conf
    

    数据:

    #agent name
    a1.channels = c1
    a1.sources = r1
    a1.sinks = k1 k2
    
    #set gruop
    a1.sinkgroups = g1
    #set sink group
    a1.sinkgroups.g1.sinks = k1 k2
    
    #set sources
    a1.sources.r1.type = exec
    a1.sources.r1.command = tail -F /export/taillogs/access_log
    
    #set channel
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    
    # set sink1
    a1.sinks.k1.type = avro
    a1.sinks.k1.hostname = node02
    a1.sinks.k1.port = 52021
    
    # set sink2
    a1.sinks.k2.type = avro
    a1.sinks.k2.hostname = node03
    a1.sinks.k2.port = 52021
    
    #set failover
    a1.sinkgroups.g1.processor.type = load_balance
    a1.sinkgroups.g1.processor.backoff = true
    a1.sinkgroups.g1.processor.selector = round_robin
    a1.sinkgroups.g1.processor.selector.maxTimeOut=10000
    
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    a1.sinks.k2.channel = c1
    
    • node02:
    • 创建文件,添加数据
     vim tmpconf/f2.conf
    

    数据

    # Name the components on this agent
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    # Describe/configure the source
    a1.sources.r1.type = avro
    a1.sources.r1.bind = node02
    a1.sources.r1.port = 52021
    
    # Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    
    # Describe the sink
    a1.sinks.k1.type = logger
    
    # Bind the source and sink to the channel 
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    
    • node03:
    • 创建文件,添加数据
    vim tmpconf/f3.conf
    

    数据

    # Name the components on this agent
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    # Describe/configure the source
    a1.sources.r1.type = avro
    a1.sources.r1.bind = node03
    a1.sources.r1.port = 52021
    
    # Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 1000
    a1.channels.c1.transactionCapacity = 100
    
    # Describe the sink
    a1.sinks.k1.type = logger
    
    # Bind the source and sink to the channel
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    
    • 执行
    bin/flume-ng agent -c conf -f tmpconf/f3.conf -n a1  -Dflume.root.logger=INFO,console
    bin/flume-ng agent -c conf -f tmpconf/f2.conf -n a1  -Dflume.root.logger=INFO,console
    bin/flume-ng agent -c conf -f tmpconf/f1.conf -n a1  -Dflume.root.logger=INFO,console
    

    过滤器

    • node01
    • node02
    • 创建文件,添加数据
     vim tmpconf/g1.conf
    

    数据

    # Name the components on this agent
    a1.sources = r1 r2 r3
    a1.sinks = k1
    a1.channels = c1
    
    # Describe/configure the source
    a1.sources.r1.type = exec
    a1.sources.r1.command = tail -F /export/taillogs/access.log
    a1.sources.r1.interceptors = i1
    a1.sources.r1.interceptors.i1.type = static
    ##  static拦截器的功能就是往采集到的数据的header中插入自己定## 义的key-value对
    a1.sources.r1.interceptors.i1.key = type
    a1.sources.r1.interceptors.i1.value = access
    
    a1.sources.r2.type = exec
    a1.sources.r2.command = tail -F /export/taillogs/nginx.log
    a1.sources.r2.interceptors = i2
    a1.sources.r2.interceptors.i2.type = static
    a1.sources.r2.interceptors.i2.key = type
    a1.sources.r2.interceptors.i2.value = nginx
    
    a1.sources.r3.type = exec
    a1.sources.r3.command = tail -F /export/taillogs/web.log
    a1.sources.r3.interceptors = i3
    a1.sources.r3.interceptors.i3.type = static
    a1.sources.r3.interceptors.i3.key = type
    a1.sources.r3.interceptors.i3.value = web
    
    # Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 20000
    a1.channels.c1.transactionCapacity = 10000
    
    # Describe the sink
    a1.sinks.k1.type = avro
    a1.sinks.k1.hostname = node03
    a1.sinks.k1.port = 41414
    
    # Bind the source and sink to the channel
    a1.sources.r1.channels = c1
    a1.sources.r2.channels = c1
    a1.sources.r3.channels = c1
    a1.sinks.k1.channel = c1
    
    • node03:
    • 创建问价,添加数据
     vim tmpconf/g1.conf
    

    数据

    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    #定义source
    a1.sources.r1.type = avro
    a1.sources.r1.bind = 192.168.52.120
    a1.sources.r1.port =41414
    
    #添加时间拦截器
    a1.sources.r1.interceptors = i1
    a1.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.TimestampInterceptor$Builder
    
    #定义channels
    a1.channels.c1.type = memory
    a1.channels.c1.capacity = 20000
    a1.channels.c1.transactionCapacity = 10000
    
    #定义sink
    a1.sinks.k1.type = hdfs
    a1.sinks.k1.hdfs.path=hdfs://192.168.52.100:8020/source/logs/%{type}/%Y%m%d
     
    #组装source、channel、sink
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    

    创建文件添加脚本

    vim mkdata2.sh
    

    脚本数据

    #!/bin/bash
    while true
    do  
     date >> /export/taillogs/access.log; 
     date >> /export/taillogs/web.log;
     date >> /export/taillogs/nginx.log;
      sleep 0.5;
    done
    

    执行

    bin/flume-ng agent -c conf -f tmpconf/g3.conf -n a1  -Dflume.root.logger=INFO,console 
    bin/flume-ng agent -c conf -f tmpconf/g1.conf -n a1  -Dflume.root.logger=INFO,console
    bin/flume-ng agent -c conf -f tmpconf/g2.conf -n a1  -Dflume.root.logger=INFO,console
    
    展开全文
  • 浅谈数据监控&数据分析

    千次阅读 2019-07-12 17:21:06
    数据监控是及时、有效的反馈出数据异常的一种手段,通过对数据监控去观察是否异常,进而分析数据。 什么是数据分析? 数据分析是以业务场景和业务目标为思考起点,业务决策作为终点,按照业务场景和业务目标分解为...

    在这里插入图片描述
    从广义来讲,数据是反映产品和用户状态最真实的一种方式,通过数据指导运营决策、驱动业务增长。数据可分为2种情况:数据监控和数据分析。

    什么是数据监控?
    数据监控是及时、有效的反馈出数据异常的一种手段,通过对数据的监控去观察是否异常,进而分析数据。

    什么是数据分析?
    数据分析是以业务场景和业务目标为思考起点,业务决策作为终点,按照业务场景和业务目标分解为若干影响的因子和子项目,围绕子项目做基于数据现状分析,知道改善现状的方法。

    数据是产品和运营人员工作中重要的一部分,运营人员常说的一句话是“数据在手,天下我有”,任何事情都要以数据来说事。作为一名运营人员,我们在做运营策略的同时,需要分析大量用户数据,去观测用户行为和用户画像。同时我们应该要关心每个数据指标的增长,防止产品出现BUG,影响到我们的最终数据指标。那么我们要怎么及时发现数据异常呢?

    以现金贷为例,每天我们都有大量的用户在进行交易行为,如果是有一个小时突然没有用户的交易数据,很少人会随时发觉,往往都是用户打电话询问客服“为什么APP登录不上”“为什么我提交不了资料”等等,这时大家才会发觉APP出现故障。

    所以我们要做数据监控。

    对于数据监控首先我们要明确几个点

    明确监控目标
    监控哪些数据
    监控这些数据每个背后的意义是什么
    数据预警

    现在让我们来讲下:

    1.监控哪些方面的数据?
    首先关注每个环节的基础数据指标(以现金贷的基础数据来举例)

    注册用户数
    填写基础资料用户数
    授信获得额度
    发起提现用户数和发起提现金额
    成功提现用户数和成功提现金额
    监控这些数据每个背后的意义是什么?
    通过监控每个业务环节的基础数据,如果数据异常,可以快速定位哪个环节出了问题,进而进一步的分析。

    2.数据预警
    数据预警是通过各种数据维度的比对发现数据异常。

    预警即通过数据采集、数据挖掘、数据分析,对已经存在的风险发出预报与警示

    当数据出现问题时迅速作出反应,可第一时间通知到所有人,这样就能快速发现问题。

    数据预警有5个点需要明确:

    ①量级指标与转化指标的确定

    量级指标即每个环节的数据指标,量级指标存在的意义是可以通过我们的加工成为我们想要的数据。

    转化指标即每个环节的转化,通过观测转化指标可以快速定位出哪个环节出了问题。

    ②每个指标正常波动范围的确定

    每个指标要根据历史的数据设定一个正常浮动范围。可以从以下4种数据维度去确认正常波动范围。

    同比数据(与上周同一天同时段进行对比)
    环比数据(与前三天同一时段的平均值进行对比)
    每个环节的转化(与前N天每个环节的转化进行对比)
    每个小时增幅(与前N天每个小时增幅进行对比)

    举个例子,根据数据分析得出,注册用户量环比前3天的平均值的正常浮动范围是±20%。

    ③触发条件的确定

    数据预警的触发条件要确定,通常是低于正常浮动范围就会发出预警

    ④预警周期与频次的确定

    预警的周期通常是一天,频次半个小时一次或一个小时一次。

    ⑤预警方式

    一般预警方式有三种

    i短信通知
    ii钉钉群通知并@所有人
    Iii Email通知

    监控数据只能快速的发现数据出现异常的大概范围,不能精确地定位到具体的问题上。有人会说,那我把所有的环节都拆分为细小化颗粒,做好监控自动触发,

    其实这个不是不行,这样的话一旦你一个细小化的环节出现异常而发出报警,关联到的其他细小化的指标都会受到影响从而也发出报警,这样的话太多指标发出报警,会造成你的干扰。

    这是数据有效监控的一个流程,当有数据异常的时候,系统就会触发条件快速通知你,这时候你要做的就是看哪个环节出了问题。这个时候就要进行数据分析。

    3.数据分析有4种方法
    (1)单项分析

    趋势洞察、渠道归因、链接标记、漏斗分析、热图分析、分群分析、A/B分析、留存分析

    (2)组合分析

    针对某个细分点,进行多维度组合分析。

    (3)用户场景分析

    时间、地点、需求。

    举例:用户早上注册时间点

    (4)建模分析

    流失预警分析、用户激活分析、付费决策分析

    举个例子,注册用户数急剧下降的原因,我们用组合分析,针对注册用户数这个细分点,进行几个维度的分析并得出原因。

    APP网络是否正常
    推广注册页是否有异常
    获取短信验证码是否有异常
    设置手势密码是否有异常
    分析哪个渠道的注册用户数下降并得出原因

    5.分析数据要用什么去展现呢?
    有2种方法:

    (1)自动图表化:可以从数据后台刷选出我们想要看的数据,并且每个版块都制成图表,便于我们快速查看。举例:把用户每个触发行为都加上埋点,按时间维度去查询我们想要的数据。
    在这里插入图片描述
    (2)手动图标化

    最常用的有以下几种图表:

    (1)柱状图
    柱状图通常描述的是分类数据,用于显示一段时间内的数据变化或显示各项之间的比较情况。
    在这里插入图片描述
    (2)折线图
    折线图可以显示随时间(根据常用比例设置)而变化的连续数据。
    在这里插入图片描述
    (3)饼图
    饼图以二维或三维格式显示每一数值相对于总数值的大小。
    在这里插入图片描述
    (4)条形图
    条形图显示各个项目之间的比较情况。
    在这里插入图片描述
    (5)散点图
    散点图也叫 X-Y 图,它将所有的数据以点的形式展现在直角坐标系上,以显示变量之间的相互影响程度,点的位置由变量的数值决定。
    在这里插入图片描述
    (6)漏斗图
    漏斗图适用于业务流程比较规范、周期长、环节多的单流程单向分析,通过漏斗各环节业务数据的比较,能够直观地发现和说明问题所在,为决策者提供一定的参考。
    在这里插入图片描述
    (7)面积图
    面积图又叫区域图,面积图强调数量随时间而变化的程度, 它是在折线图的基础之上形成的, 它将折线图中折线与自变量坐标轴之间的区域使用颜色或者纹理填充,颜色的填充可以更好的突出趋势信息。
    在这里插入图片描述
    以上7种图表都是在分析数据中经常使用的,可以根据分析数据的展示去选择不同的图表。

    总结
    数据监控和数据分析对于运营来说是非常重要的,做好数据监控,减少产品出现bug,影响用户的体验,减少重大事故的发生。

    对于监控数据笔者仍在学习阶段,以上是最近工作中的心得分享,希望能给大家带来一些思路!

    本文由 @Crystal 原创

    释放数据价值,人人都是数据分析师,更多精彩信息可以点击:
    https://www.yonghongtech.com/webbbs/portal.php

    展开全文
  • 需求:管理员想要监控在一段时间里,用户DB2TEST跑过哪些SQL语句,这个在DB2如何做到? 答: 可以采用事情监控器: 测试过程: 1.) 管理员用户连库、创建事情监控器,并运行,下面的事情监控器专为用户DB2...

    需求:管理员想要监控在一段时间里,用户DB2TEST跑过哪些SQL语句,这个在DB2中如何做到?


    答: 可以采用STATEMENT类型的事件监控器:


    测试过程:

    1.) 管理员用户连库、创建事件监控器,并运行,下面的事件监控器专为用户DB2TEST的执行的STATEMENT,并将STMT evm group写入到表T1中,表T1会被在表空间USERSPACE1中创建:

    db2 "connect to sample"
    db2 "create EVENT MONITOR evmonSQLforUser for STATEMENTS where AUTH_ID = 'DB2TEST' write to table STMT(table t1 in userspace1)"
    db2 "set event monitor evmonSQLforUser state=1"

    2.) 用户DB2TEST连接到数据库后执行SQL语句:

    $ db2 "select ID from testdb1"
    ID
    -----------
            111
            911
      2 record(s) selected.
    
    $ db2 "insert into test db1 values(100)"
    DB21034E  The command was processed as an SQL statement because it was not a
    valid Command Line Processor command.  During SQL processing it returned:
    SQL0104N  An unexpected token "db1 values" was found following "insert into
    TEST ".  Expected tokens may include:  "<values>".  SQLSTATE=42601
    
    $ db2 "insert into testdb1 values(100)"
    DB20000I  The SQL command completed successfully.
    
    $ db2 "create table testdb2(id int, name char(20)"
    DB21034E  The command was processed as an SQL statement because it was not a
    valid Command Line Processor command.  During SQL processing it returned:
    SQL0104N  An unexpected token "END-OF-STATEMENT" was found following "d int,
    name char(20)".  Expected tokens may include:  ")".  SQLSTATE=42601
    
    $ db2 "create table testdb2(id int, name char(20))"
    DB20000I  The SQL command completed successfully.

    3.)管理员用户关闭事件监控器 ,并查看监控结果,可以看到无论是正确的SQL语句,还是错误的SQL语句,只要是用户DB2TEST发出的,都有记录(不知道为啥,每个select语句要记录4次,请自动忽略掉后面3个,还有一些的STMT_TEXT结果是空的,也请忽略):

    db2 "set event monitor evmonSQLforUser state=0"
    
    C:\windows\system32>db2 "select START_TIME, substr(APPL_ID,1,40) as APPL_ID, substr(STMT_TEXT,1,80) as STMT_TEXT from t1"
    
    START_TIME                 APPL_ID                                  STMT_TEXT
    -------------------------- ---------------------------------------- ------------------------------------------------------
    2016-05-26-12.50.34.077069 *LOCAL.DB2INST1.160526031015             select ID from testdb1
    2016-05-26-12.50.34.078434 *LOCAL.DB2INST1.160526031015             select ID from testdb1
    2016-05-26-12.50.34.078434 *LOCAL.DB2INST1.160526031015             select ID from testdb1
    2016-05-26-12.50.34.078434 *LOCAL.DB2INST1.160526031015             select ID from testdb1
    2016-05-26-12.50.34.122445 *LOCAL.DB2INST1.160526031015
    2016-05-26-12.50.43.366093 *LOCAL.DB2INST1.160526031015             insert into test db1 values(100)
    2016-05-26-12.50.43.381406 *LOCAL.DB2INST1.160526031015
    2016-05-26-12.50.50.586494 *LOCAL.DB2INST1.160526031015             insert into testdb1 values(100)
    2016-05-26-12.50.50.587564 *LOCAL.DB2INST1.160526031015
    2016-05-26-12.51.20.025009 *LOCAL.DB2INST1.160526031015             create table testdb2(id int, name char(20)
    2016-05-26-12.51.20.025477 *LOCAL.DB2INST1.160526031015
    2016-05-26-12.51.22.823535 *LOCAL.DB2INST1.160526031015             create table testdb2(id int, name char(20))
    2016-05-26-12.51.22.962340 *LOCAL.DB2INST1.160526031015
    
      13 record(s) selected.


    补充说明:

    1.) 如果使用db2 "describe table t1"去查看,会发现T1有很多字段,会占用表空间,如果觉得不需要,可以在创建事件监控器的时候使用INCLUDE仅指定所需要的字段:

    db2 "create EVENT MONITOR evmonSQLforUser for STATEMENTS where AUTH_ID = 'DB2TEST' write to table STMT(table t1 in userspace1 INCLUDES(START_TIME,APPL_ID,STMT_TEXT))"


    2.)T1中每个字段的含义,可以参考下面的链接:

    https://ibm.biz/Bd49yY

    3.)创建事件监控器的完整语法可以参考下面的链接:

    https://ibm.biz/Bd49yq

    展开全文
  • 监控IP和端口数据

    千次阅读 2019-03-20 11:51:07
    #region 无连接给本机端口发送消息 public void local() { byte[] data = new byte[1024];//定义一个数组用来做数据的缓冲区 string stringData; IPEndPoint ipep = new IPEndPoint(IPAdd...
  • 漫谈数据质量监控

    万次阅读 2017-06-17 21:50:36
    数据质量监控是一个在快速发展的业务最容易被牺牲和忽略的功能,但是它确实至关重要的。 假设你做了100个业务,一旦有其中一个业务在某个时间段出现了数据异常,这个异常还是由业务方发现的而不是你,根据我的经验...
  • 数据质量监控

    千次阅读 2019-04-20 22:10:03
    数据质量监控 原创: 木东居士 木东居士 4天前 0x00 概述 随着大数据时代的带来,数据的应用也日趋繁茂,越来越多的应用和服务都基于数据而建立,数据的重要性不言而喻。而且,数据质量是数据分析和数据挖掘结论有效...
  • 本人想实现在javaweb项目,进入某个jsp页面,将这个jsp页面加载的情况保存到excel,加载情况就浏览器自带的网络数据监控功能一致,包含具体资源,加载时间等,如下图。 有没有办法在js或者java直接调用火狐...
  • 将es集群中某个节点设置为数据节点

    千次阅读 2019-01-23 10:15:08
    独立的客户端节点在一个比较大的集群是非常有用的,他协调主节点和数据节点,客户端节点加入集群可以得到集群的状态,根据集群的状态可以直接路由请求。 2. 数据节点  数据节点主要是存储索引数据的节点,主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 245,893
精华内容 98,357
关键字:

如何监控网站中某个数据