zr-hebo / sniffer-agent

Sniffer MySQL package: capture TCP package, parsed with mysql protocol, optional you can send query info to Kafka. 抓取tcp包解析出mysql语句
93 stars 42 forks source link

prepare语句中 抓绑定变量的值的问题 #19

Open zeusYi opened 4 years ago

zeusYi commented 4 years ago

我通过命令: ./sniffer-agent --interface=eth0 --port=6033 --log_level=info --strict_mode=true --admin_user=user_microloan_proxyA --admin_passwd=xxx> res

抓出到的SQL日志为:

{"sip":"10.106.3.180","sport":6033,"cpr":1,"bt":1581173313742,"cip":"10.106.3.31","cport":6033,"user":null,"db":null,"sql":"INSERT INTO thirdparty_statistic_customer (id, user_account_id, order_id, mobile, api, api_md5, api_fee, call_count, success_call_count, hit_call_count, cutomer_total_cost, record_type, ctime, utime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)","cms":2}

发现两个问题 1、开启了--strict_mode=true 但是抓取的db,user信息仍是NULL 2、程序是先prepare语句, 然后执行的语句的时候赋值,但是 sniffer-agent 生成的SQL 仍无法抓取到赋值。

zr-hebo commented 4 years ago

你好,目前prepare只保留语句,没有保留变量。strict_mode的问题,我需要重现一下再答复你。

zeusYi commented 4 years ago

prepare语句能否改进成带参数值的呢?

zr-hebo commented 4 years ago

这个不好实现,涉及协议解析