Hello,
nachdem ich kein passenden Codeschnippsel gefunden habe, anbei das was ich mir zusammen gebaut habe, hoffe es kann wem helfen:
DbSizeMB {
attr <name_DB_LOG> userReadings my $dbSize = qx(mysql -uUSERNAME -pPASSWORT DATENBANK -e "SELECT sum(round(((data_length + index_length) / 1024 / 1024), 2)) as '' FROM information_schema.TABLES WHERE table_schema = 'DATENBANK'");;
sprintf "%.2f", $dbSize;;
}
Einfach USERNAME, PASSWORT und DATENBANK mit euren Daten Anpassen und verwenden.
Kann man auch mit nem Timer Lösen und 1x am Tag abfragen und mit den Werten ein Dummy befüllen, usw...
Ahja einziges Manko, im Log kommt die MySQL Warnung "mysql: [Warning] Using a password on the command line interface can be insecure.", das macht nichts und kommt nur weil man das Passwort im shell verwendet.
mfg,
Seek
Zitat von: seek1338 am 08 Februar 2017, 13:53:54
Hello,
nachdem ich kein passenden Codeschnippsel gefunden habe, anbei das was ich mir zusammen gebaut habe, hoffe es kann wem helfen:
DbSizeMB {
attr <name_DB_LOG> userReadings my $dbSize = qx(mysql -uUSERNAME -pPASSWORT DATENBANK -e "SELECT sum(round(((data_length + index_length) / 1024 / 1024), 2)) as '' FROM information_schema.TABLES WHERE table_schema = 'DATENBANK'");;
sprintf "%.2f", $dbSize;;
}
Einfach USERNAME, PASSWORT und DATENBANK mit euren Daten Anpassen und verwenden.
Kann man auch mit nem Timer Lösen und 1x am Tag abfragen und mit den Werten ein Dummy befüllen, usw...
Ahja einziges Manko, im Log kommt die MySQL Warnung "mysql: [Warning] Using a password on the command line interface can be insecure.", das macht nichts und kommt nur weil man das Passwort im shell verwendet.
mfg,
Seek
Du könntest, denke ich, dafür auch die Funktion DbLog_ExecSQL benutzen!
Der brauchst Du nur den Hash des DbLog Device und den SQL Query übergeben, um den Rest (Authentifizierung) kümmert sich DbLog.
Gruß
Dan
Danke - ja geht auch, aber in dem Fall heißt der Reading "userCommandResult"... ich wollts selber den reading erstellen, den kann man dann in jedem Device verwenden ohne großartige notifys, aber es funktioniert auch so:
set LogDB userCommand SELECT sum(round(((data_length + index_length) / 1024 / 1024), 2)) as '' FROM information_schema.TABLES WHERE table_schema = 'DATENBANK'
dann erhält man den Reading, wie in meinem Fall "userCommandResult 27.78"
mfg,
Seek