现网ES数据有一个字段被更新,检索git代码库以及服务日志,都没有查找到更新的来源,因此使用tshark对ES进行抓包,分析更新请求的来源
shark是wireshark的一个工具,可以通过yum直接安装wireshark
yum install -y wireshark
tshark -v
tshark -help
以下仅列举部分常用参数,详细参数说明请阅读官方文档
参数 | 参数说明 |
---|---|
-i <interface> | 接口或者网卡编号 |
-f <capture filter> | 使用libpcap过滤表达式进行包过滤 |
-s <snaplen> | packet snapshot length (def: appropriate maximum) |
-p | don't capture in promiscuous mode |
-I | capture in monitor mode, if available |
-B <buffer size> | size of kernel buffer (def: 2MB) |
-y <link type> | link layer type (def: first appropriate) |
--time-stamp-type <type> | timestamp method for interface |
-D | print list of interfaces and exit |
-L | print list of link-layer types of iface and exit |
--list-time-stamp-types | print list of timestamp types for iface and exit |
参数 | 参数说明 |
---|---|
-c <packet count> | 设置抓取数据包的数量,当到达设置的包数,则停止抓取,默认不限,持续捕获 |
-a <autostop cond.> ... | 设置tshark抓包停止的条件,如: -a duration:NUM - 表示抓包 NUM 秒后结束; -a filesize:NUM -表示抓包 NUM KB 后结束; -a files:NUM - 表示抓包在写满 NUM 个文件后结束,一般跟 -w 参数一起使用; |
参数 | 参数说明 |
---|---|
-b <ringbuffer opt.> ... | 设置环形缓冲区(ring-buffer)参数。ring-buffer的文件名由-w参数设置 -b duration:NUM - 表示每 NUM 秒写下一个缓冲区文件 -b interval:NUM - 创建时间间隔 NUM 秒 -b filesize:NUM - 表示每达到 NUM kB 写下一个缓冲区文件 -b files:NUM - 表示设置 NUM 个缓存区文件循环写入,替换最早的文件,如不设定,tshark会将一直写入新文件,直到磁盘写满为止。 |
参数 | 参数说明 |
---|---|
r <infile> | 设置需要读取的文件名 |
参数 | 参数说明 |
---|---|
-Y <display filter> | 设置展示过滤表达式(display filter),只显示满足过滤表达式的数据包内容 |
-n | 禁止所有地址名字解析(默认为允许所有) |
-N <name resolve flags> | 启用某一层的地址名字解析。“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n和-N参数同时存在,-n将被忽略。如果-n和-N参数都不写,则默认打开所有地址名字解析。 |
-d <layer_type>==<selector>,<decode_as_protocol> ... | 将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”;tshark -d. 可以列出所有支持的有效选择器。 |
-H <hosts file> | read a list of entries from a hosts file, which will then be written to a capture file. (Implies -W n) |
参数 | 参数说明 |
---|---|
-w <outfile|-> | 设置未处理的raw数据输出文件。如果是将解码后的结果内容输出到文件,需要用重定向">"的方式,而不是-w参数。 |
-C <config profile> | 启动时使用指定的配置文件 |
-F <output file type> | 设置输出文件格式类型, 默认为pcapng格式 "-F"留空则列出所有的文件类型 |
-V | 设置将解码结果的细节输出,否则解码结果仅显示一个数据包一行的summary。 |
-O <protocols> | 仅显示以下协议的详细信息,逗号分割 |
-P | 每写入一个文件后进行包情况汇总 |
-S <separator> | 数据包之间的行分割符 |
-x | 输出中增加16进制和ascii字符信息(报文按字节显示) |
-T pdml|ps|psml|json|jsonraw|ek|tabs|text|fields|? | 设置解码结果输出的格式,包括text,ps,psml,pdml和fields,默认为text。 |
-j <protocolfilter> | 当 -T ek|pdml|json 选项设置时进行顶层协议过滤, (例: “http tcp”, 过滤展开的所有字节点) |
-J <protocolfilter> | 当 -T ek|pdml|json 选项设置时进行顶层协议过滤, (例: “http tcp”, 过滤展开的所有字节点) |
-e <field> | 当 -T fields 设置时打印字段 (如tcp.port,_ws.col.Info) 此选项可以多个用于打印多个字段 |
先抓取es http 端口
tshark -i any -f 'tcp port 9400' -n -a duration:600 -d "tcp.port==9400,http" -Y "http.request or http.response" -T fields -e "ip.src" -e "http.host" -e "http.request.method" -e "http.request.uri" -e "http.file_data"
得到下列包
在抓取es tcp 端口
tshark -i any -f 'tcp port 9301' -Y "tcp" -T fields -e data -E separator=':' -E quote=d -E occurrence=f | xxd -r -p
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。