Shell
netstat
查看服务器socket状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
zcat
查看压缩日志文件内容
zcat pro-realtime-statics-*.log.tgz | grep -a "Message Emit"
grep
输出JSON文本中某个字段的值
grep -oP '\"field_name\":\"(?<=").*?(?=")\"' log.log
(?<=").*?(?="):匹配双引号之间的内容
-P:声明使用正则表达式
-o:只输出匹配到的文本
tcpdump
基本使用
tcpdump tcp port 80 and src net xxx.xxx.xxx.xxx and src port xxxx and dst net xxx.xxx.xxx.xxx and dst port xxxx -vvv -nn -Q inout -w dump.cap
-i: 指定网络接口
port: 指定端口
tcp: 指定抓取tcp包
src net: 指定源IP
src port: 源端口
dst net: 指定目标IP
dst port: 目标端口
-nn: 不将ip、协议和端口号等转换为名称
-vvv: 详细输出
-Q:['in', 'out', 'inout'], 获取输入/输出的数据包
-w: 输出到文件
获取某端口的HTTP请求的请求行
tcpdump -i eth0 port 8080 -nn -vvv | grep -E 'GET|POST'
Docker
列出docker容器名称和IP
docker inspect -f='{{range $k, $v := .NetworkSettings.Networks}}{{.IPAddress}}{{$.Name}}{{end}}' $(docker ps -q)
Kafka
解析kafka的log文件,查询消息内容
/opt/kafka/bin/kafka-run-class.sh kafka.tools.DumpLogSegments --files /opt/kafka/logs/realtimedata-pre-0/00000000000002861085.log --print-data-log > 00000000000002861085_txt.log