Linux
如何計算每秒日誌?
我有一個日誌管理系統,其中 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
它可以在系統級別、數據庫級別、使用第三方應用程序等。任何幫助表示讚賞,在此先感謝。
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