监控MySQL|Redis|MongoDB的执行语句(go-sniffer)

上节回顾:http://www.noobyard.com/article/p-quctibub-dd.htmlhtml

以CentOS为例:python

1.环境

PS:若是不须要Golang环境,能够编译后把执行文件copy到服务器(相同环境下,编译的执行文件能够直接执行)mysql

1.安装Golang

yum install golang -y(这一步须要root权限)git

2.安装go-sniffer

go get -v -u github.com/40t/go-sniffergithub

3.配置环境

方法一

vi ~/.profilegolang

确保~/go/bin/在环境变量中,eg:web

PATH="$HOME/go/bin:$PATH"

而后刷新一下:source ~/.profileredis

方法二

echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrcsql

而后刷新一下:source ~/.bashrcshell

2.案例

1.go-sniffer帮助

先简单看看帮助文档:

[dnt@localhost ~]$ go-sniffer 
==================================================================================
[Usage]

    go-sniffer [device] [plug] [plug's params(optional)]

    [exp]
          go-sniffer en0 redis          Capture redis packet
          go-sniffer en0 mysql -p 3306  Capture mysql packet

    go-sniffer --[commend]
               --help "this page"
               --env  "environment variable"
               --list "Plug-in list"
               --ver  "version"
               --dev  "device"
    [exp]
          go-sniffer --list "show all plug-in"

==================================================================================
[device] : lo :   127.0.0.1
[device] : eth0 : 00:15:5d:24:90:00  192.168.36.123
==================================================================================

2.MySQL案例

我是在MariaDB服务器端监控的:go-sniffer eth0 mysql(须要root权限,本地就用lo)

随便运行一个Python的案例:

ok,监控起效了~

PS:并非有些人说的批量执行哦~

3.Redis案例

前置条件:/etc/redis.conf

  1. 注释掉bind=127.0.0.1
  2. 添加密码:requirepass 密码

Python案例

PS:6379端口权限记得给一下:

# 开放6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
# 刷新
firewall-cmd --reload

4.另外一款神器soar

【推荐】SQL自动优化和改写的工具:(小米开源,以前推过)
https://github.com/lotapp/soar

不用配置什么环境,直接echo "你的sql语句" | soar来运行便可

拓展文章:https://mp.weixin.qq.com/s/XJvRjkSab4B5zPdWBOhi1w

Web版扩展:https://github.com/lotapp/soar-web