我有一个日志管理系统,其中使用了 Clickhouse 数据库metrico/qryn,rsyslog
在所有服务器(Debian 11)上将系统和应用程序收集的日志发送到promtail
进行标记,然后promtail
将它们发送到qryn
,qryn
然后将日志插入 Clickhouse DB 并具有与 LogQL 兼容的 API。
我正在尝试找到 Clickhouse 系统利用率与发送到 Clickhouse 和从 Clickhouse 接收的数据之间的关系,因此,我需要计算log per second
以估算每个系统利用率log per second
,所以如果我有一个更大的环境,我已经知道应该为 Clickhouse RAM 和 CPU 使用率设置多少限制。
我的问题是如何计算这个log per second
我只有一个 Clickhouse 实例但我不知道如何计算它。
方法并不重要,我只需要知道它log per second
可以在系统级别、数据库级别、使用第三方应用程序等。
如有任何帮助我将不胜感激,先行致谢。
答案1
awk
您可以使用和的组合uniq
来计算每秒的记录数:
awk '{print $1" "$2" "$3}' /var/log/syslog|uniq -c
对于这样的示例数据:
[root@rhel01 ~]# tail /var/log/messages
Oct 10 08:51:29 rhel01 systemd[1]: Started Update UTMP about System Runlevel Changes.
Oct 10 08:51:29 rhel01 systemd[1]: Started Process archive logs.
Oct 10 08:51:29 rhel01 systemd[1]: Started pmlogger farm service.
Oct 10 08:51:29 rhel01 systemd[1]: Started Half-hourly check of pmlogger farm instances.
Oct 10 08:51:29 rhel01 systemd[1]: Reached target Timers.
Oct 10 08:51:29 rhel01 systemd[1]: Startup finished in 1.715s (kernel) + 5.822s (initrd) + 12.949s (userspace) = 20.486s.
Oct 10 08:51:30 rhel01 systemd[1]: NetworkManager-dispatcher.service: Succeeded.
Oct 10 08:51:32 rhel01 pcp-pmie[2130]: High per CPU processor utilization 99%util[cpu0]@rhel01 99%util[cpu1]@rhel01
Oct 10 08:51:33 rhel01 su[3183]: (to root) romeo on pts/0
Oct 10 08:51:34 rhel01 systemd[1]: pmlogger_daily.service: Succeeded.
[root@rhel01 ~]# tail /var/log/messages|awk '{print $1" "$2" "$3}'|uniq -c
4 Oct 10 08:51:29
1 Oct 10 08:51:30
1 Oct 10 08:51:32
1 Oct 10 08:51:33
1 Oct 10 08:51:34
1 Oct 10 08:51:43
1 Oct 10 08:51:50
如果有延迟(没有按时间很好地排序的记录),您将需要使用sort
命令:
sort /var/log/messages|awk '{print $1" "$2" "$3}'|uniq -c
<snip>
6 Sep 23 09:28:15
3 Sep 23 09:30:15
3 Sep 23 09:40:15
3 Sep 23 09:50:05
或仅awk
与关联数组一起使用
awk '{a=$1" "$2" "$3;b[a]+=1} END {for (i in b) print b[i]","i}' /var/log/messages
答案2
在 logql 中你只需使用以下命令查询日志
count_over_time({label="labelValue"} [1s])
这将为您提供每 1 秒间隔选择的日志数量。
--
我很高兴看到我们的项目得到广泛应用。:)