A simple monitoring plugin
Our previous examples have demonstrated how to create a plugin and how to use status and system variables, but they did not do anything practically useful. The next plugin will record the connection statistics every five seconds into a log file so that load spikes can be recorded or monitored using an external application.
This plugin will remove any previous copy of the log file, create a new one, and then start a thread to retrieve the data and record it every five seconds. Upon removal of the plugin or shutdown, the plugin will record the shutdown time and close the file gracefully:
#include <string.h> #include <mysql/plugin.h> #include <mysql_version.h> #include <my_global.h> #include <my_sys.h> #define MONITORING_BUFFER 1024 extern ulong thread_id; extern uint thread_count; extern ulong max_connections;
There are three internal MySQL variables we wish to monitor in our example. They are declared in sql/mysqld.cc
so we need to declare...