lady:factory:myagent

Agent SNMP per a MySQL

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.

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.

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

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.

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.

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'

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.

  • lady/factory/myagent.txt
  • Last modified: 2023/06/26 15:12
  • by Count Zero