1
0
mirror of https://github.com/librenms/librenms-agent.git synced 2024-05-09 09:54:52 +00:00
Files
librenms-librenms-agent/snmp/mysql-stats
Jellyfrog 61064dc9fe Cleanup some code (#355)
* Format with isort

* Format with Black

* Fix CRLF

* Format with shellcheck

* Fix some warning

* Fix PHP style

* Dont modifiy check_mk files

* Fixes
2021-03-18 12:24:30 +01:00

222 lines
7.1 KiB
Python
Executable File

#!/usr/bin/env python2
import re
import warnings
warnings.filterwarnings(action="ignore", message="the sets module is deprecated")
import base64
import MySQLdb
import sets
conn = MySQLdb.connect(host="", user="", passwd="", db="")
cursor = conn.cursor()
cursor.execute("SHOW GLOBAL STATUS")
rows = cursor.fetchall()
datavariables = {
"Command Counters": [
"Com_delete",
"Com_insert",
"Com_insert_select",
"Com_load",
"Com_replace",
"Com_replace_select",
"Com_select",
"Com_update",
"Com_update_multi",
],
"Connections": [
"max_connections",
"Max_used_connections",
"Aborted_clients",
"Aborted_connects",
"Threads_connected",
"Connections",
],
"Files and Tables": [
"table_open_cache",
"Open_files",
"Open_tables",
"Opened_tables",
],
"InnoDB Buffer Pool": [
"ib_bpool_size",
"ib_bpool_dbpages",
"ib_bpool_free",
"ib_bpool_modpages",
],
"InnoDB Buffer Pool Activity": [
"ib_bpool_read",
"ib_bpool_created",
"ib_bpool_written",
],
"InnoDB Insert Buffer": ["ib_ibuf_inserts", "ib_ibuf_merged_rec", "ib_ibuf_merges"],
"InnoDB IO": ["ib_io_read", "ib_io_write", "ib_io_log", "ib_io_fsync"],
"InnoDB IO Pending": [
"ib_iop_log",
"ib_iop_sync",
"ib_iop_flush_log",
"ib_iop_flush_bpool",
"ib_iop_ibuf_aio",
"ib_iop_aioread",
"ib_iop_aiowrite",
],
"InnoDB Log": ["innodb_log_buffer_size", "ib_log_flush", "ib_log_written"],
"InnoDB Row Operations": [
"Innodb_rows_deleted",
"Innodb_rows_inserted",
"Innodb_rows_read",
"Innodb_rows_updated",
],
"InnoDB Semaphores": ["ib_spin_rounds", "ib_spin_waits", "ib_os_waits"],
"InnoDB Transactions": ["ib_tnx"],
"MyISAM Indexes": [
"Key_read_requests",
"Key_reads",
"Key_write_requests",
"Key_writes",
],
"Network Traffic": ["Bytes_received", "Bytes_sent"],
"Query Cache": [
"Qcache_queries_in_cache",
"Qcache_hits",
"Qcache_inserts",
"Qcache_not_cached",
"Qcache_lowmem_prunes",
],
"Query Cache Memory": ["query_cache_size", "Qcache_free_memory"],
"Select Types": [
"Select_full_join",
"Select_full_range_join",
"Select_range",
"Select_range_check",
"Select_scan",
],
"Slow Queries": ["Slow_queries"],
"Sorts": ["Sort_rows", "Sort_range", "Sort_merge_passes", "Sort_scan"],
"Table Locks": ["Table_locks_immediate", "Table_locks_waited"],
"Temporary Objects": [
"Created_tmp_disk_tables",
"Created_tmp_tables",
"Created_tmp_files",
],
}
data = {}
for row in rows:
data[row[0]] = row[1]
cursor = ""
cursor = conn.cursor()
cursor.execute("SHOW VARIABLES")
rows = cursor.fetchall()
for row in rows:
data[row[0]] = row[1]
cursor = ""
cursor = conn.cursor()
cursor.execute("SHOW ENGINE INNODB STATUS")
rows = cursor.fetchall()
for row in rows:
for line in row[2].split("\n"):
ib_bpool_size = re.match(r"Buffer\spool\ssize\s+(\d+)", line)
ib_bpool_free = re.match(r"Free\sbuffers\s+(\d+)", line)
ib_bpool_dbpages = re.match(r"Database\spages\s+(\d+)", line)
ib_bpool_modpages = re.match(r"Modified\sdb\spages\s+(\d+)", line)
ib_b_reg = re.match(
r"Pages\sread\s(\d+),\screated\s(\d+),\swritten (\d+)", line
)
ib_insert_buffer = re.match(
r"(\d+)\sinserts,\s(\d+)\smerged\srecs,\s(\d+)", line
)
ib_io = re.match(
r"(\d+)\sOS\sfile\sreads,\s(\d+)\sOS\sfile\swrites,\s(\d+)\sOS\sfsyncs",
line,
)
ib_io_log = re.match(r"(\d+)\slog\si\/o's\sdone.*", line)
ib_io_p1 = re.match(
r"Pending\snormal\saio\sreads:\s(\d+),\saio\swrites:\s(\d+),", line
)
ib_io_p2 = re.match(
r"\s?ibuf\saio\sreads:\s(\d+),\slog\si\/o's:\s(\d+),\ssync\si\/o's:\s(\d+)",
line,
)
ib_io_p3 = re.match(
r"\s?Pending\sflushes\s\(fsync\)\slog:\s(\d+);\sbuffer\spool:\s(\d+)\s?",
line,
)
ib_log_p1 = re.match(
r"\s?Log\ssequence\snumber\s([[a-fA-F\d]+)(?: (\d+))?", line
)
ib_log_p2 = re.match(
r"\s?Log\sflushed\sup\sto\s+([[a-fA-F\d]+)(?: (\d+))?", line
)
ib_semaphore = re.match(
r"\s?Mutex\sspin\swaits\s(\d+),\srounds\s(\d+),\sOS waits\s(\d+)", line
)
ib_tnx = re.match(r"\s?Trx\sid\scounter\s([[a-fA-F\d]+)(?: (\d+))?", line)
if ib_bpool_size:
data["ib_bpool_size"] = ib_bpool_size.group(1)
elif ib_bpool_free:
data["ib_bpool_free"] = ib_bpool_free.group(1)
elif ib_bpool_dbpages:
data["ib_bpool_dbpages"] = ib_bpool_dbpages.group(1)
elif ib_bpool_modpages:
data["ib_bpool_modpages"] = ib_bpool_modpages.group(1)
elif ib_insert_buffer:
data["ib_ibuf_inserts"] = ib_insert_buffer.group(1)
data["ib_ibuf_merged_rec"] = ib_insert_buffer.group(2)
data["ib_ibuf_merges"] = ib_insert_buffer.group(3)
elif ib_io:
data["ib_io_read"] = ib_io.group(1)
data["ib_io_write"] = ib_io.group(2)
data["ib_io_fsync"] = ib_io.group(3)
elif ib_io_log:
data["ib_io_log"] = ib_io_log.group(1)
elif ib_io_p1:
data["ib_iop_aioread"] = ib_io_p1.group(1)
data["ib_iop_aiowrite"] = ib_io_p1.group(2)
elif ib_io_p2:
data["ib_iop_ibuf_aio"] = ib_io_p2.group(1)
data["ib_iop_log"] = ib_io_p2.group(2)
data["ib_iop_sync"] = ib_io_p2.group(3)
elif ib_io_p3:
data["ib_iop_flush_log"] = ib_io_p3.group(1)
data["ib_iop_flush_bpool"] = ib_io_p3.group(2)
elif ib_log_p1:
data["ib_log_written"] = ib_log_p1.group(1)
if ib_log_p1.group(2):
data["ib_log_written"] = int(data["ib_log_written"]) + int(
ib_log_p1.group(2)
)
elif ib_log_p2:
data["ib_log_flush"] = ib_log_p2.group(1)
if ib_log_p2.group(2):
data["ib_log_flush"] = int(data["ib_log_flush"]) + int(
ib_log_p2.group(2)
)
elif ib_semaphore:
data["ib_spin_waits"] = ib_semaphore.group(1)
data["ib_spin_rounds"] = ib_semaphore.group(2)
data["ib_os_waits"] = ib_semaphore.group(3)
elif ib_tnx:
data["ib_tnx"] = ib_tnx.group(1)
if ib_tnx.group(2):
data["ib_tnx"] = int(data["ib_tnx"]) + int(ib_tnx.group(2))
elif ib_b_reg:
data["ib_bpool_read"] = ib_b_reg.group(1)
data["ib_bpool_created"] = ib_b_reg.group(2)
data["ib_bpool_written"] = ib_b_reg.group(3)
for category in datavariables:
for variable in datavariables[category]:
if variable in data:
print data[variable]