Linux

如何計算每秒日誌?

  • October 10, 2022

我有一個日誌管理系統,其中 Clickhouse 數據庫與metrico/qryn一起使用,rsyslog在所有伺服器(Debian 11)上將收集的日誌從系統和應用程序發送到promtail標籤,然後promtail將它們發送到qrynqryn然後將日誌插入Clickhouse DB 並具有與 LogQL 兼容的 API。

我試圖找到 Clickhouse 系統使用率與發送到 Clickhouse 和從 Clickhouse 接收的數據之間的關係,因此,我需要計算log per second以估計每個系統的使用率,log per second所以如果我有一個更大的環境,我已經知道了我應該為 Clickhouse RAM 和 CPU 使用設置多少限制。

我的問題是如何計算這個log per second我只有一個 Clickhouse 實例,但我不知道如何計算它。

該方法並不重要,我只需要知道log per second它可以在系統級別、數據庫級別、使用第三方應用程序等。

任何幫助表示讚賞,在此先感謝。

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

引用自:https://serverfault.com/questions/1112587