mirror of
https://github.com/librenms/librenms-agent.git
synced 2024-05-09 09:54:52 +00:00
* Format with isort * Format with Black * Fix CRLF * Format with shellcheck * Fix some warning * Fix PHP style * Dont modifiy check_mk files * Fixes
222 lines
7.1 KiB
Python
Executable File
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]
|