Skip to main content

Finds owner processes of mysql queries.

Project description

https://badge.fury.io/py/kimo.svg

kimo

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

Installation

pip install kimo

Usage

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

Server-Side

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

Client-Side

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': '127.0.0.1',
    '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'127.0.0.1:54553', 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 putio.shell', hostname=u'vagrant.putio.club', connection_status=u'ESTABLISHED'))

That’s it!

TcpProxy

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

Example

Server-Side

First, we must start kimo-server:

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

Client-Side

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(127.0.0.1:50212) INFO kimo:request_kimo_server:147 - Getting connections from kimo-server at: 127.0.0.1
[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
             host: 127.0.0.1:50212
               db: information_schema
          command: Query
             time: 165
            state: User sleep
             info: SELECT SLEEP(500)
              pid: 4796
             name: python
          cmdline: python -m putio.shell
         hostname: vagrant.putio.club
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 | 127.0.0.1:54668 | information_schema | Query   | 18   | User sleep | select sleep(800) | 4796 | python | python -m putio.shell | vagrant.putio.club | ESTABLISHED       |
+------+------+-----------------+--------------------+---------+------+------------+-------------------+------+--------+-----------------------+--------------------+-------------------+
| 1207 | root | 127.0.0.1:54593 | information_schema | Query   | 46   | User sleep | select sleep(1000) | 13630 | python | python -m putio.shell | vagrant.putio.club | 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-1.0.4.tar.gz (8.2 kB view details)

Uploaded Source

File details

Details for the file kimo-1.0.4.tar.gz.

File metadata

  • Download URL: kimo-1.0.4.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for kimo-1.0.4.tar.gz
Algorithm Hash digest
SHA256 3a381872b2ce76ba0071fefd0d6bd0a91f31e724bdb18c3ef8c76118538fd0fa
MD5 a62f900822604a2bf6ab991ea0d3d947
BLAKE2b-256 99981d17b90281b8f72ec81434e1c5eb8f380839c9f3beef064fa69a30b83654

See more details on using hashes here.

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