如上圖,某個伺服器的日誌文件,通過命令
grep "Send kafka Success" 2021-08-01-info.log | grep "result_size:100"
可以得到相關日誌。現在要求統計所有result_size累加的結果。
grep "Send kafka Success" 2021-08-01-info.log | grep -o -E "result_size:[0-9]+" | awk -F ':' 'BEGIN{print "開始統計result_size累加和"} {sumSize+=$2 } END{print "sumSize="sumSize}'
sed 命令可以很好的進行行匹配,但從某一行中精確匹配某些內容,則使用 grep 命令並輔以 -o 和 -E 選項可達到此目的。其中 -o 表示「only-matching」,即「僅匹配」之意。光用它不夠,配合 -E 選項使用擴展正則表達式則凳譽威力巨大。
比如下面有一條文本 tmp.txt ,其中內容為棗察段:
{"aid":45,"path":"attachment/Mon_1112/2_1_5728040df3ab346.jpg"}
我們想從中過略出 aid 的值即 45 ,那麼可以先如下這么做:
grep -o -E 'aid":[1-9]*' tmp.txt
得到的結果為:
aid":45
這時就好辦沒穗了,我們可以使用 awk 的 -F 選項指示出冒號分隔符,這樣就容易過濾出 45 這個值來,整個命令綜合如下:
grep -o -E 'aid":[1-9]*' tmp.txt |awk-F: '{print $2}'
參考文檔: https://www.cnblogs.com/hanxing/p/8711705.html
② linux 怎樣查看kafka的某topic數據
基於0.8.0版本。
##查看topic分布情況kafka-list-topic.sh
bin/kafka-list-topic.sh
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
(列出所有topic的分區情況)
bin/kafka-list-topic.sh
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
--topic
test
(查看test的分區情況)
其實kafka-list-topic.sh裡面就一句
exec
$(dirname
$0)/kafka-run-class.sh
kafka.admin.listtopiccommand
$@
實際是通過
kafka-run-class.sh腳本執行的包kafka.admin下面的類
##創建topic
kafka-create-topic.sh
bin/kafka-create-topic.sh
--replica
2
--partition
8
--topic
test
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
創建名為test的topic,
8個分區分別存放數據,數據備份總共2份
bin/kafka-create-topic.sh
--replica
1
--partition
1
--topic
test2
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
結果
topic:
test2
partition:
0
leader:
170
replicas:
170
isr:
170
##重新分配分區kafka-reassign-partitions.sh
這個命令可以分區指定到想要的--broker-list上
bin/kafka-reassign-partitions.sh
--topics-to-move-json-file
topics-to-move.json
--broker-list
"171"
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
--execute
cat
topic-to-move.json
{"topics":
[{"topic":
"test2"}],
"version":1
}
##為topic增加
partition數目kafka-add-partitions.sh
bin/kafka-add-partitions.sh
--topic
test
--partition
2
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
(為topic
test增加2個分區)
##控制台接收消息
bin/kafka-console-consumer.sh
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
--from-beginning
--topic
test
##控制台發送消息
bin/kafka-console-procer.sh
--broker-list
192.168.197.170:9092,192.168.197.171:
9092
--topic
test
##手動均衡topic,
kafka-preferred-replica-election.sh
bin/kafka-preferred-replica-election.sh
--zookeeper
192.168.197.170:2181,192.168.197.171:2181
--path-to-json-file
preferred-click.json
cat
preferred-click.json
{
"partitions":
[
{"topic":
"click",
"partition":
0},
{"topic":
"click",
"partition":
1},
{"topic":
"click",
"partition":
2},
{"topic":
"click",
"partition":
3},
{"topic":
"click",
"partition":
4},
{"topic":
"click",
"partition":
5},
{"topic":
"click",
"partition":
6},
{"topic":
"click",
"partition":
7},
{"topic":
"play",
"partition":
0},
{"topic":
"play",
"partition":
1},
{"topic":
"play",
"partition":
2},
{"topic":
"play",
"partition":
3},
{"topic":
"play",
"partition":
4},
{"topic":
"play",
"partition":
5},
{"topic":
"play",
"partition":
6},
{"topic":
"play",
"partition":
7}
]
}
##刪除topic,慎用,只會刪除zookeeper中的元數據,消息文件須手動刪除
bin/kafka-run-class.sh
kafka.admin.deletetopiccommand
--topic
test666
--zookeeper
192.168.197.170:2181
,192.168.197.171:2181
③ linux內存使用大小排序
可以直接輸入top
然後 按P – 以 CPU 佔用率大小的順序排列進程列表
按M – 以內存佔用率大小的順序排列進程列表
另外,查看某一應用佔用內存大小
方法一:通過進程號查看
# 例如查看kafka資源使用情況
# 查看kafka進程號
ps -ef | grep kafka
# 查看進程號佔用資源(159156為ps得到的進程號)
top -p 159156
# 或者查看進程的status文件(159156為ps得到的進程號) ,VmRSS對應的值就是物理內存佔用
cat /proc/159156/status
方法2:ps命令直接使用任務名
# 顯示的第六個參數就是物理內存佔用
ps -aux | grep kafka
# 查看內存佔用前10名的程序
ps aux | sort -k4,4nr | head -n 10
3)對free -h 查看到的buff/cache 進行回收
# 在系統中除了內存將被耗盡的時候可以清緩存以外,我們還可以使用下面這個文件來人工觸發緩存清除的操作
cat /proc/sys/vm/drop_caches
# 這個文件可以設置的值分別為1、2、3。它們所表示的含義為:
# 表示清除 page cache。
echo 1 > /proc/sys/vm/drop_caches
# 表示清除回收 slab 分配器中的對象(包括目錄項緩存和 inode 緩存)。slab 分配器是內核中管理內存的一種機制,其中很多緩存數據實現都是用的 page cache。
echo 2 > /proc/sys/vm/drop_caches
# 表示清除 page cache 和 slab 分配器中的緩存對象。
echo 3 > /proc/sys/vm/drop_caches
④ 怎麼設置kafka topic數據存儲時間
1、Kafka創建topic命令很簡單,一條命令足矣:bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic test 。