Skip to main content

Finds owner processes of MySQL queries.

Project description


kimo (means who is it in Turkish) is a tool for finding OS processes of MySQL queries.


kimo works only with Python3.

pip3 install kimo


kimo is consisted of two parts: kimo-server and kimo client.


First, we need to run kimo-server on each server that makes MySQL queries. We need to do this because kimo-server gets connections from the host that kimo-server runs on it and provides connections to client via HTTP API.

sudo kimo-server


kimo client can be used via command line or inside python program.

Command Line

There are some optional arguments for command line interface:

optional arguments:
-h, --help            show this help message and exit
--logging-level {debug,info,warning,error}
                      Print debug logs
--host HOST           Host of database
--user USER           User for database
--password PASSWORD   Password for database
--mysql-config-file MYSQL_CONFIG_FILE
--kimo-server-port KIMO_SERVER_PORT
--tcpproxy-mgmt-port TCPPROXY_MGMT_PORT
--filter-query-id FILTER_QUERY_ID
                      Filter by query ID
--filter-db FILTER_DB
                      Filter by database
--filter-user FILTER_USER
                      Filter by user
--sort-asc {db,user,id,host,process_host}
                      Sort output by field in ascending order.
--sort-desc {db,user,id,host,process_host}
                      Sort output by field in descending order.
--output-format {table,vertical}

Python Program

from kimo import kimo

config = {
    'mysql_host': '',
    'mysql_port': 3306,
    'mysql_user': 'root',
    'mysql_password': '',
    'tcpproxy_mgmt_port': 3307,
    'kimo_server_port': 6000,
result = kimo(config)
print result[0]

>>  EnhancedProcess(process=Process(id=1504, user=u'root', host=u'', db=u'information_schema', command=u'Query', time=547, state=u'User sleep', info=u'select sleep(100)'), details=ProcessDetails(pid=16430, name=u'python', cmdline=u'python -m', hostname=u'', connection_status=u'ESTABLISHED'))

That’s it!


kimo also works well if there is one or multiple tcpproxy proxy servers between MySQL and clients.



First, we must start kimo-server:

sudo kimo-server --logging-level DEBUG --port 6000


We can get the output in vertical or table format.

Vertical Output:

kimo  --output-format vertical --filter-query-id 1001
[2017-02-19 19:37:11,817] Thread( INFO kimo:request_kimo_server:147 - Getting connections from kimo-server at:
[2017-02-19 19:37:11,900] Thread(MainThread) INFO kimo:main:87 - 1 rows in set (0.09 sec)
*********************** 1. row ***********************
               id: 1001
             user: root
               db: information_schema
          command: Query
             time: 165
            state: User sleep
             info: SELECT SLEEP(500)
              pid: 4796
             name: python
          cmdline: python -m
connection_status: ESTABLISHED

Table Output:

kimo  --output-format table --sort-asc id
| id   | user | host            | db                 | command | time | state      | info              | pid  | name   | cmdline               | hostname           | connection_status |
| 1202 | root | | information_schema | Query   | 18   | User sleep | select sleep(800) | 4796 | python | python -m | | ESTABLISHED       |
| 1207 | root | | information_schema | Query   | 46   | User sleep | select sleep(1000) | 13630 | python | python -m | | ESTABLISHED       |

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kimo-2.0.5.tar.gz (8.7 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page