分析数据库连接使用情况
项目描述
一个类似“top”的工具,可以监控多个进程和服务器之间的数据库连接。初始用途是跟踪Openstack使用的大量Python进程和数据库连接,然而该系统可以与任何SQLAlchemy应用程序一起工作。
设置
首先,使用pip安装connmon。
Connmon有一个配置文件,默认位置在/etc/connmon.cfg。一个简单的文件看起来像
# sample config, listen on 0.0.0.0:5800 and clients # will connect to 192.168.1.205:5800 [connmon_service_default] name: default nodes: node1 hostname=192.168.1.205:5800
该文件由connmon守护进程以及所有客户端连接咨询,以确定守护进程在哪些位置运行。
如果只在单个主机上测试,可以使用没有配置文件的connmon;如果文件不存在,则使用以下类似默认配置
# default config if no /etc/connmon.cfg and no # --config <file> option is passed [connmon_service_default] name: default nodes: node1 hostname=localhost:5800 bind=0.0.0.0
然后,可以启动connmon守护进程
connmond
该守护进程监听客户端,客户端会向它提供它们使用的连接数量信息。它在内存中存储此状态,然后可以报告。如果守护进程停止或对客户端不可用,每个客户端都会本地跟踪其状态,并继续尝试重新连接到守护进程。当它这样做时,它将守护进程的状态更新到其连接状态。
要配置统计客户端,connmon为SQLAlchemy引擎提供了一个插件。为了在数据库通信的应用程序中启用插件的用法,请使用以下URL
mysql+pymysql_connmon://root:sa@127.0.0.1/neutron?charset=utf8&connmon_service=default
在SQLAlchemy 1.1中,我们将添加一些更便携的方式来将“插件”与数据库URL捆绑在一起,上述URL将变得更加简单。
最后,我们可以使用控制台查看当前连接
connmon
然后启动使用数据库的应用程序。所有配置了配置文件的都将建立到“192.168.1.205:5800”控制台的TCP连接。
请查看包含的screenshot.png截图。
无需配置连接
URL也可以指定特定的主机/端口
mysql+pymysql_connmon://root:sa@127.0.0.1/neutron?charset=utf8&connmon_addr=192.168.1.205:5800
配置HA集群
可以将多个节点配置为每个节点运行connmon listen,从而形成一个集群;在每个节点上启动服务器,使用connmond --node <节点名>
[connmon_service_default] name: default nodes: node1 hostname=192.168.1.205:5800 node2 hostname=192.168.1.206:5800 node3 hostname=192.168.1.207:5800
在上面的模型中,所有节点相互联系并共享所有事件。在没有节点名的情况下连接到“默认”服务名将导致客户端连接到云中的任意节点。它将尝试每个节点,直到找到可以连接的节点。
与Devstack一起使用
以下是向devstack设置中添加connmon的魔法咒语。首先全局安装connmon。然后在local.conf中(注意双斜杠转义)
[[post-config|$NOVA_CONF]] [database] connection = mysql+pymysql_connmon://root:sa@127.0.0.1/nova?charset=utf8\\&connmon_service=default [api_database] connection = mysql+pymysql_connmon://root:sa@127.0.0.1/nova_api?charset=utf8\\&connmon_service=default [[post-config|$NEUTRON_CONF]] [database] connection = mysql+pymysql_connmon://root:sa@127.0.0.1/neutron?charset=utf8\\&connmon_service=default [[post-config|$KEYSTONE_CONF]] [database] connection = mysql+pymysql_connmon://root:sa@127.0.0.1/keystone?charset=utf8\\&connmon_service=default [[post-config|$CINDER_CONF]] [database] connection = mysql+pymysql_connmon://root:sa@127.0.0.1/cinder?charset=utf8\\&connmon_service=default [[post-config|$GLANCE_API_CONF]] [database] connection = mysql+pymysql_connmon://root:sa@127.0.0.1/glance?charset=utf8\\&connmon_service=default
项目详情
connmon-0.3.6.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 248911e987fcacd0b361696b2a366acbb6b5ef073349d42ebb1606fa784be6cb |
|
MD5 | 59c40d5a8dca38103ddadad93eba0dc4 |
|
BLAKE2b-256 | 343e355468c845637e0480ccf744115668c01e35d80f163f4d8ef8cafd8a322a |