Agent SNMP per a MySQL
Intro
Primer de tot dir que la idea està basada en Sysadmins Nightly Mental Pain. La idea és original i senzilla, però no acabava de funcionar en el meu sistema i el mètode d'implementar-ho en un AgentX era complexe d'implantar (en la pàgina només o documenta per a SuSE).
Els meus objectius són aprofitar per apendre a implementar agents SNMP i convertir l'agent en un subagent empotrat en el mateix dimoni SNMPD.
Ultims canvis
- An error occurred while fetching this feed: http://www.l3jane.net/websvn/wsvn/Factory/trunk/myagent/?op=rss&isdir=1&
Arxius
Els arxius i scripts sempre es trobaran al repositori Subversion:
- Al repositori també es pot trobar el MIB ja generat, però la idea és que es creï mitjançant l'script. D'aquesta manera podrem monitoritzar noves variables que apareguin en noves versions de MySQL.
Instal·lació
MIB
Necessitem l'script per generar el MIB. Cal editar l'script i modificar les primeres línies per apuntar al nostre servidor MySQL amb un usuari vàlid:
my $dsn = "DBI:mysql:host=127.0.0.1;port=3306"; my $user = "user"; my $pass = "password";
Fet això només cal executar-lo i redirgir-ne la sortida al fitxer MYSQL-MIB.txt
que posarem al directori de MIBS /usr/share/snmp/mibs/
:
# ./mkMySQLMIB.pl > /usr/local/share/snmp/mibs/MYSQL-MIB.txt
L'Agent SNMP
Agent
Igual que abans, necessitem editar les primeres línies de l'script per adaptar la conexió al nostre servidor de MySQL. Fet això posarem l'script a /usr/local/share/snmp/agents/
i ens asseguraremt que té els permisos d'execució adequats.
Configuració
Carregar la nova MIB
Per configurar adequadament l'SNMP per a llegir aquest MIB editem el fitxer /etc/snmp/snmp.conf
i hi afegim:
mibDirs +/usr/local/share/snmp/mibs/ mibs ALL showMibErrors yes
Podem comprovar que funciona consultant l'arbre:
# snmptranslate -On -Tp -IR MYSQL-MIB::mysqlMIB +--mysqlMIB(1767) | +--mysqlMIBObjects(1) | +--mysqlConformance(0) | | | +--mysqlCompliance(1) | | | +--mysqlGroups(2) | | | +--mysqlGroup(1) | +--mysqlStatus(1) | +-- -R-- Integer32 mysqlAbortedClients(1) +-- -R-- Integer32 mysqlAbortedConnects(2) +-- -R-- Integer32 mysqlBinlogCacheDiskUse(3) [...]
Fet això podem eliminar l'script de generar el MIB, ja que no el necessitarem més.
Configurar l'agent
Podem fer-ho en el fitxer /etc/snmp/snmpd.conf
, però jo recomano fer-ho en /etc/snmp/snmpd.local.conf
. Hi afegirem la línia:
perl do '/usr/local/share/snmp/agents/myagent.pl'
Verificació
Primer pararem el dimoni snmpd i per fer les proves l'engegarem en línia de comandes, d'aquesta manera obtindrem més informació de possibles errors i alertes:
# snmpd -Le -u snmp -I -smux -p /var/run/snmpd.pid -Dperl -f
D'aquesta manera veurem els missatges de com carrega el MIB, com registra el nostre agent per consola.
Un cop comprovat podem fer Ctrl+C per matar el dimoni snmpd i engegar-lo de la forma habitual.