oneproxy监控的框架,可以通过实现protocolbase.h中的接口来快速构建一个数据库的监控程序
Switch branches/tags
Nothing to show
Clone or download
Latest commit 474f43e Oct 18, 2017
Permalink
Failed to load latest commit information.
bin change dbmanager to single pattern Mar 27, 2017
build support pcap Feb 27, 2017
commercial solution leak memory Jan 4, 2017
conf solution#win lock init problem Mar 17, 2017
document solution#win lock init problem Mar 17, 2017
httpserver solution when use libev, oneproxy can't quit by ctrl+c Feb 7, 2017
iomultiplex support libpcap Mar 15, 2017
lib support libpcap Mar 15, 2017
monitor support libpcap Mar 15, 2017
protocol add support ssl in networksocket class Mar 27, 2017
sql use socketpair Jan 22, 2017
stats change dbmanager to single pattern Mar 27, 2017
test support sql server tds7.3 and tds 7.4(sql server 2008 and later version) Nov 23, 2016
unittest add file Sep 26, 2016
util solution#win lock init problem Mar 17, 2017
Makefile solution#win lock init problem Mar 17, 2017
README.md Update README.md Oct 18, 2017
assistthread.cpp support pcap Feb 27, 2017
assistthread.h support pcap Feb 27, 2017
clientthread.cpp solution#win lock init problem Mar 17, 2017
clientthread.h use libev to handle event Jan 24, 2017
config.ini support sql server tds7.3 and tds 7.4(sql server 2008 and later version) Nov 23, 2016
connection.h support save data to sqlite3 Mar 7, 2017
connectmanager.cpp select support timer Mar 9, 2017
connectmanager.h support pcap Feb 27, 2017
define.h solution when use libev, oneproxy can't quit by ctrl+c Feb 7, 2017
handlemanager.cpp add document and support print sql in prepared Jan 18, 2017
handlemanager.h solution leak memory Jan 4, 2017
main.cpp support pcap Feb 27, 2017
managerbase.cpp support save data to sqlite3 Mar 7, 2017
managerbase.h support pcap Feb 27, 2017
networksocket.cpp add support ssl in networksocket class Mar 27, 2017
networksocket.h add support ssl in networksocket class Mar 27, 2017
oneproxyserver.cpp support save data to sqlite3 Mar 7, 2017
oneproxyserver.h select support timer Mar 9, 2017
pidmanager.h support pcap Feb 27, 2017
tcpclient.cpp 1. add testtcpclient.h and testtcpclient.cpp file Sep 27, 2016
tcpclient.h add file Sep 26, 2016
tcpserver.cpp support libpcap Mar 15, 2017
tcpserver.h support save data to sqlite3 Mar 7, 2017

README.md

oneproxy-monitor

在实现一个数据库的监控器,需要实现下面的接口,在本框架中提供了一个默认的直接转发的监控部分。
必须实现的接口:

  1. is_currentDatabase: 这个类是用来选择数据库类的,当connection第一次接收到数据包时,通过此类来判断当前连接是否属于这个数据库的连接,如果是则返回true。
    否则返回false。如果为true,则框架将从配置中读取数据库地址和端口,连接连接,同时转发数据到这个连接上面。
  2. createInstance: 框架通过调用这个函数来创建对应的实例,建议不要使用单例模式来创建,因为在这个实例中有prepared的相关信息,不同的连接可能有相同的句柄。
  3. destoryInstance: 当连接完成时,会调用此函数来释放相关的内存等。
  4. get_packetType:根据包的数据返回包的类型,由于不同数据库包的格式不同,类型的位置和长度不同,故需要不同的数据库协议类自己实现此接口。
    可选实现的接口:
  5. protocol_front: 前端接收到的数据包,都会传递给这个函数,协议类可以通过重新实现这个函数来改变默认的处理方式。框架在调用这个函数后,就直接把数据包转发到服务端了。
  6. protocol_backend: 后端接收到数据包,都会传递给这个函数,协议类可以通过重新实现这个函数改变默认的处理方式。框架在调用这个函数后,就直接把数据包转发到客户端了。
  7. prehandle_frontPacket:默认实现是没有处理数据包的任何内容。如果需要针对接收到的前端数据包进行处理,则需要实现此函数。比如:当客户端的数据包特别大时,被客户 端分成了多个数据包发送到服务端,在进行统计前,需要针对这些数据包进行合并,那么就需要在此包中进行合并的逻辑。
  8. prehandle_backendPacket:与prehandle_frontPacket相同。不同的点是,这个函数针对接收到的后端数据包
  9. protocol_initFrontStatPacket: 默认实现只是把bufpointer的指针指向接收到的数据包。如果在进行执行处理函数前,需要针对数据进行修改,那么需要实现此函数。
  10. protocol_initBackendStatPacket: 与protocol_initFrontStatPacket函数功能相同,不同点是,这个针对后端数据包。
  11. protocol_clearFrontStatPacket:当执行完协议类注册的处理函数后,执行此函数。默认实现是空的。
  12. protocol_clearBackendStatPacket:功能与protocol_clearFrontStatPacket相同,不同的是这个函数针对后端数据包的处理。

默认具有如下的功能:

  1. 可以指定多个端口,不同的端口转发到不同的数据库。也就是通过一个监控器管理多个数据库
  2. 可以通过配置控制前端连接数
  3. 自动根据cpu数量设置线程个数
  4. 支持windows和Linux。其中windows只支持select。Linux支持select和epoll,默认为epoll方式
  5. FakeProtocol 是针对包直接进行转发。
    更多特性关键:https://github.com/onexsoft/oneproxy-monitor/wiki

目前平民软件基于此架构已经提供sql server, postgresql的监控功能。
监控效果可以看在线的mysql的监控效果:http://www.onexsoft.com:8080/
更多信息,请访问我们的官网:http://www.onexsoft.com 或者加入群:数据库监控 521095285。

oneproxy-for-sqlserver支持功能点:

  1. 直接转发并且统计sql使用情况。
  2. 直接转发不统计sql使用情况。
  3. 支持前后端使用不同的密码
  4. 支持读写分离
  5. 支持连接管理功能(类似连接池)
  6. 支持监控多个端口,前端连接到不同的端口上面
  7. 支持前端固定端口转发到后端固定的数据库上面

oneproxy-for-postgresql 支持功能点:

  1. 直接转发并且统计sql使用情况。
  2. 直接转发不统计sql使用情况。
  3. 支持连接管理功能(类似连接池)
  4. 支持监控多个端口,前端连接到不同的端口上面
  5. 支持前端固定端口转发到后端固定的数据库上面

libev 下载地址:http://pkgs.fedoraproject.org/repo/pkgs/libev/