0

我正在向 Percona 发送 syslog-ng。我将不同的日志记录源过滤到不同的 MySQL 表中。我正在尝试确定每秒、每分钟和每小时的日志数。

这是创建表的方式:

CREATE TABLE syslog.switchlogs (
  host varchar(40) DEFAULT NULL,
  facility varchar(10) DEFAULT NULL,
  level varchar(10) DEFAULT NULL,
  tag varchar(10) DEFAULT NULL,
  program varchar(50) DEFAULT NULL,
  msg text,
  seq bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  timestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (seq),
  KEY host (host),
  KEY timestamp (timestamp),
  KEY host_timestamp (host,timestamp)
) ENGINE=InnoDB;

大多数表格都得到了我期望的结果:

上一个小时:

SELECT count(seq) as thecount FROM syslog.switchlogs WHERE timestamp>=DATE_SUB(NOW(),INTERVAL 1 HOUR);

最后一分钟:

SELECT count(seq) as thecount FROM syslog.switchlogs WHERE timestamp>=DATE_SUB(NOW(),INTERVAL 1 MINUTE);

最后一秒:

SELECT count(seq) as thecount FROM syslog.switchlogs WHERE timestamp>=DATE_SUB(NOW(),INTERVAL 1 SECOND);

我得到这样的结果:

小时:804
分钟:16
秒:1

我的一张表有 VMware 日志,我从计数中得到奇怪的结果......

小时:30,180
分钟:24,278
秒:24,160

这显然是错误的。如果我查看表中的最后 50 条日志,最后一秒只有 10 条,最后一分钟有 39 条。为什么上面的 SQL 没有按预期工作?

4

0 回答 0