免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3533 | 回复: 19

[文本处理] 监控数据表的变化 然后提取数据? [复制链接]

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2018-07-16 22:13 |显示全部楼层
本帖最后由 zl624867243 于 2018-09-20 17:14 编辑

已解决。。。。。。。。。。。。。。。。。

论坛徽章:
0
发表于 2018-07-17 11:30 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2018-07-17 13:58 |显示全部楼层
本帖最后由 zl624867243 于 2018-07-17 14:04 编辑

回复 2# 本友会机友会摄友会

这个表就是通过触发器 筛选zabbix表来的触发器如下:
  1. DELIMITER $

  2. USE `zabbix`$

  3. DROP TRIGGER /*!50032 IF EXISTS */ `tr_alerts_insert_other`$

  4. CREATE
  5.     /*!50017 DEFINER = 'xxoo'@'%' */
  6.     TRIGGER `tr_alerts_insert_other` AFTER INSERT ON `alerts`
  7.     FOR EACH ROW BEGIN
  8.    
  9.     IF NEW.sendto="xxoo@qq.com" THEN
  10.     INSERT INTO agg_zabbix.agg_alerts()
  11.     SELECT alertid,actionid,clock,sendto,message FROM alerts WHERE clock=new.clock AND sendto="xxoo@qq.com";
  12.         
  13.       
  14.    
  15.     END IF;
  16.    
  17. END;
  18. $

  19. DELIMITER ;
复制代码



我本想通过触发器然后执行shell 发行触发器无法支持。我想通过触发器into oufile 到文件,文件名以时间作为文件名,但是又无法传入变量,操作系统无法感知表的变化,所以就有上面的提问了

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2018-07-17 13:59 |显示全部楼层
本帖最后由 zl624867243 于 2018-07-17 14:08 编辑

回复 2# 本友会机友会摄友会

我最终是要让操作系统能感知表有变化 然后提取表的内容处理发出邮件出来,现在的难点就是不知道如何让系统感知表的变化

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
发表于 2018-07-17 15:33 |显示全部楼层
回复 1# zl624867243


监控数据库的这张表,如果有新的插入,就把新插入的内容过滤出来

创建插入触发器,当表1有新的插入就把该内容插入表2

重定向到文本文件,然后对文本文件进行处理,我想要的结果如下:(对host,ip,info进行聚合操作)
  1. #!/bin/bash
  2. # 脚本每分钟执行1次

  3. # 把表2数据导出到1.txt,并删除表2数据
  4. mysql -uxx -pyy ... <<EOF>1.txt
  5. use <库名>;
  6. select * from <表2>;
  7. delete from <表2>;
  8. EOF

  9. # 如果1.txt有数据,则聚合处理
  10. if [[ -s 1.txt ]];then
  11.     awk 'NR>1{sub("([^ ]+ +){4}","");split($0,t,",");a[2]=a[2]?a[2]~t[1]"-"t[2]?a[2]:a[2]","t[1]"-"t[2]:t[1]"-"t[2];for(i=3;i<=6;i++){a[i]=a[i]?a[i]~t[i]?a[i]:a[i]","t[i]:t[i]}}END{printf("host:\t%s\nip:\t%s\ntime:\t%s\ninfo:\t%s\nstatus:\t%s\n",a[4],a[5],a[2],a[3],a[6])}' 1.txt
  12. fi
复制代码

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2018-07-17 16:30 |显示全部楼层
本帖最后由 zl624867243 于 2018-07-17 16:38 编辑

回复 5# wh7211

通过跑定时任务每分钟执行然后清空数据表的方案可行,但是我要的结果是这样按info相同的进行归类,按你的方式我把脚本和sql语句做了如下更改,
  1. mysql -uxx -poo<<EOF>1.txt
  2. use agg_zabbix;
  3. SELECT message FROM agg_zabbix.agg_alerts WHERE sendto='123@qq.com'  AND  message LIKE '%PROBLEM' OR  message LIKE '%ok' ORDER BY clock;
  4. EOF
复制代码
1.txt 文件如下:

  1. message
  2. ALY-HN1_Black-web-PRD-2,10.18.25.169,2018.07.16,16:54:06,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  3. ALY-HN1_Black-web-PRD-4,10.18.25.184,2018.07.16,16:54:08,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  4. ALY-HN1_Black-web-PRD-1,10.18.1.234,2018.07.16,16:54:14,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  5. ALY-HN1_Black-web-PRD-3,10.18.1.248,2018.07.16,16:54:15,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  6. ALY-HN1_Black-web-PRD-2,10.18.25.169,2018.07.16,16:59:08,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  7. ALY-HN1_Black-web-PRD-4,10.18.25.184,2018.07.16,16:59:10,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  8. ALY-HN1_Black-web-PRD-1,10.18.1.234,2018.07.16,16:59:14,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  9. ALY-HN1_Black-web-PRD-3,10.18.1.248,2018.07.16,16:59:16,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  10. 2018.07.16,17:00:08,black request time avg above 3000ms,ALY-HN1_Black-web-PRD-2,10.18.25.169,OK
  11. 2018.07.16,17:00:11,black request time avg above 3000ms,ALY-HN1_Black-web-PRD-4,10.18.25.184,OK
  12. 2018.07.16,17:00:16,black request time avg above 3000ms,ALY-HN1_Black-web-PRD-3,10.18.1.248,OK
  13. ALY-HN1_Black-web-PRD-1,10.18.1.234,2018.07.16,17:37:18,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  14. ALY-HN1_Black-web-PRD-3,10.18.1.248,2018.07.16,17:37:20,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  15. ALY-HN1_Black-web-PRD-2,10.18.25.169,2018.07.16,17:38:10,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  16. ALY-HN1_Black-web-PRD-4,10.18.25.184,2018.07.16,17:38:11,Warning,black request time avg above 3000ms,site_huolala_time_avg[black],black avg  time per min,PROBLEM
  17. 2018.07.16,17:39:18,black request time avg above 3000ms,ALY-HN1_Black-web-PRD-1,10.18.1.234,OK
  18. 2018.07.16,17:39:21,black request time avg above 3000ms,ALY-HN1_Black-web-PRD-3,10.18.1.248,OK
  19. 2018.07.16,17:40:10,black request time avg above 3000ms,ALY-HN1_Black-web-PRD-2,10.18.25.169,OK
  20. 2018.07.17,15:48:38,Cpu idle time  le 50 percent,ALY-HN1_das_daemon-vpc,10.18.25.220,OK
复制代码
按你的awk脚本格式不对,(对host,ip,time 进行聚合操作),聚合的原则是info和status 相同的归为一类 ,我想要的结果如下:
  1. host:  ALY-HN1_Black-web-PRD-1,ALY-HN1_Black-web-PRD-2,ALY-HN1_Black-web-PRD-3
  2. ip:  10.18.1.234,10.18.25.169,10.18.1.248
  3. time:  2018.07.16-14:32:38,2018.07.16-14:32:39,2018.07.16-14:32:40
  4. info:  black request time avg above 3000ms
  5. status:  PROBLEM
复制代码






论坛徽章:
0
发表于 2018-07-17 17:36 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2018-07-17 18:26 |显示全部楼层
回复 7# 本友会机友会摄友会

触发器钟
sql中调用system()函数

试过了 触发器不支持 system()函数

论坛徽章:
0
发表于 2018-07-18 12:45 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
24
申猴
日期:2014-10-10 15:56:39射手座
日期:2014-10-10 15:57:18黑曼巴
日期:2018-05-14 11:05:122016科比退役纪念章
日期:2018-05-14 11:05:0715-16赛季CBA联赛之北控
日期:2018-05-14 11:05:0015-16赛季CBA联赛之江苏
日期:2017-02-27 18:11:0715-16赛季CBA联赛之上海
日期:2018-08-15 09:48:5415-16赛季CBA联赛之佛山
日期:2018-07-20 17:14:2315-16赛季CBA联赛之佛山
日期:2019-09-10 18:08:4615-16赛季CBA联赛之山西
日期:2020-03-26 09:40:5115-16赛季CBA联赛之佛山
日期:2020-05-08 09:03:54
发表于 2018-07-18 13:54 |显示全部楼层
本帖最后由 chengchow 于 2018-07-18 14:03 编辑

其实就是一个mysql分组联合查询的问题,直接让DBA去处理就可以了

SELECT     
    group_concat(host) as host,
    group_concat(ip) as ip,
    group_concat(time) as time,
    info,status
FROM
    DBNAME.TABLENAME
                                  ##如果需要过滤START
WHERE                       
    status='PROBLEM'  
AND   
    timestamp > XXXXX
AND
    timestamp < XXXXX
                                  ##如果需要过滤END
GROUP BY
     info,status


目测你的第一列就是时间戳值timestamp



您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP