2

I have an apache server under Debian that runs several RESTful application written in Python with Django and Piston. These apps use SQLAlchemy to access data from a MySQL server. The server is monitored by Zabbix and I already have metrics for threads running, memory consumption, etc. But there are things that require a little more 'introspection', like the number of active database connections and other info about the connection pool (max and min connections, etc). I searched the web and SO and found nothing in this respect. I don't know much about SQLAlchemy (I'm just using it to make Django support connection pooling), does it have means of exposing the required information? If yes, probably what I want should be easy to implement, since there's a Python lib for Zabbix access. Any recommendations about the implementation?

Fabio Ceconello
  • 15,819
  • 5
  • 38
  • 51

1 Answers1

2

Fabio,

I'm also using the Python API wrapper for deployment automation, but MySQLBix seems the most effortless way to offer you what you're looking for.

  • DBVersion (and relative validity of package)
  • Archive ( archive log production with relative trend)
  • EventWaits (monitor Files I/O,single block read, multiblock read, direct path read,SQLNet messages, Controlfile I/O,LogWrite)
  • HitRatio (monitor Hit Ratio on Trigger, Tables/Procedures, SQLArea,Body)
  • Logical I/O (monitor Logical I/O values of : Current Read, Consistent Read, Block Change)
  • PGA
  • SGA (in particolar: Fixed Buffer, Java Pool, Large Pool, Log Buffer,Shared Pool,Buffer Cache)
  • Physical I/O (Redo Writes,Datafiles Writes,Datafiles Read)
  • SharedPool (Pool Dictionary Cache, Pool Free Memory, Library Cache,Sql Area ,Misc.)
  • Pin Hit Ratio (monitor Hit Ratio on Trigger, Tables/Procedures, SQLArea,Body)
  • Session/Processes (monitor Sessions and processes)
  • Session (Active Session, Inactive Sessions, System Session)
Joao Figueiredo
  • 3,120
  • 3
  • 31
  • 40
  • Thanks Joao, I am aware of MySQLBix, but I was thinking about client-side database monitoring (specifically, the connection pool health). The server-side monitoring is important, but when you have a capacity problem it is also useful to have client-side metrics to diagnose who is causing the problem. In my case I may have many applications accessing the database from the same machine, so the server wouldn't know 'who is who' in such situations and wouldn't be able to send that information to Zabbix. – Fabio Ceconello Nov 20 '11 at 22:12
  • Also the database connections are not the only item that would be nice to have information about. When you have a RESTFul API service that consumes services from another RESTful service, which may be remote, that's another possible monitoring point. – Fabio Ceconello Nov 20 '11 at 22:15
  • As far as I am aware such requisites can only be accomplished case by case, you'll have to roll your own REST scripts over each actual URI of the REST service. I'm also unaware of any SQLAlchemy monitoring helper.. – Joao Figueiredo Nov 21 '11 at 10:24