[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-grid5k] 105/189: work towards parsing logs
From: |
gnunet |
Subject: |
[taler-grid5k] 105/189: work towards parsing logs |
Date: |
Thu, 28 Apr 2022 10:47:55 +0200 |
This is an automated email from the git hooks/post-receive script.
marco-boss pushed a commit to branch master
in repository grid5k.
commit aa3db1687911d3eb624d27b4aeb578e9eb7e2dea
Author: Boss Marco <bossm8@bfh.ch>
AuthorDate: Tue Mar 22 17:34:57 2022 +0100
work towards parsing logs
---
additional/explain-visualizer/explain.py | 104 ++++++++++++++++++++-----------
1 file changed, 66 insertions(+), 38 deletions(-)
diff --git a/additional/explain-visualizer/explain.py
b/additional/explain-visualizer/explain.py
index b3f147f..5a8e838 100755
--- a/additional/explain-visualizer/explain.py
+++ b/additional/explain-visualizer/explain.py
@@ -59,10 +59,9 @@ partitioned_re = compile('(.*)_([0-9]+|default)')
args = None
-
-def get_explain() -> dict:
- args.sql = args.sql.replace("\n", "").replace('"', "")
- sql = "EXPLAIN (ANALYZE, VERBOSE, BUFFERS, FORMAT JSON) " + args.sql + ";"
+def get_explain(sql) -> dict:
+ sql = sql.replace("\n", "").replace('"', "")
+ sql = "EXPLAIN (ANALYZE, VERBOSE, BUFFERS, FORMAT JSON) " + sql + ";"
try:
analyze_json = check_output(args=['psql',
'-U', args.db_user,
@@ -154,9 +153,8 @@ def print_non_indexed():
print(f"(Total: {total})")
-def run():
- explain = get_explain()
- plan = explain['Plan']
+def visualize(analyze_json):
+ plan = analyze_json['Plan']
print("General:\n")
print(f"Estimated Rows: {plan['Plan Rows']}")
@@ -180,41 +178,71 @@ def run():
plan.print()
+def analyze_from_query():
+ explain = get_explain(args.sql)
+ visualize(explain)
+
+
+def analyze_from_logs():
+ global plans
+ plans = {}
+ with open(args.file, 'r') as logs:
+ print(logs)
+
+
def main():
parser = argparse.ArgumentParser(description='Summarize Explain Analyze of
GNU Taler Database')
- parser.add_argument('-U', '--user',
- dest='db_user',
- type=str,
- default="",
- help='Database user, default current user')
- parser.add_argument('-P', '--password',
- dest='db_pw',
- type=str,
- default="",
- help='Database password, default ""')
- parser.add_argument('-H', '--host',
- dest='db_host',
- type=str,
- default="",
- help='Database host, default unix socket')
- parser.add_argument('-d', '--database',
- dest='db_name',
- type=str,
- default="",
- help='Database name, default current user')
- parser.add_argument('-p', '--port',
- dest='db_port',
- type=str,
- default="",
- help='Database port, default 5432')
- parser.add_argument(dest='sql',
- metavar='sql',
- type=str,
- help='The query to run and analyze')
+
+ global_args = argparse.ArgumentParser(add_help=False)
+ global_args.add_argument('-U', '--user',
+ dest='db_user',
+ type=str,
+ default="",
+ help='Database user, default current user')
+ global_args.add_argument('-P', '--password',
+ dest='db_pw',
+ type=str,
+ default="",
+ help='Database password, default ""')
+ global_args.add_argument('-H', '--host',
+ dest='db_host',
+ type=str,
+ default="",
+ help='Database host, default unix socket')
+ global_args.add_argument('-d', '--database',
+ dest='db_name',
+ type=str,
+ default="",
+ help='Database name, default current user')
+ global_args.add_argument('-p', '--port',
+ dest='db_port',
+ type=str,
+ default="",
+ help='Database port, default 5432')
+
+ s_p = parser.add_subparsers()
+
+ log_p = s_p.add_parser('logs',
+ parents=[global_args],
+ help='Execute queries from a log file (postgres
must have set log_statement=all)')
+ log_p.add_argument(metavar='FILE',
+ dest='file',
+ type=str,
+ help='Log file to parse and execute queries')
+ log_p.set_defaults(func=analyze_from_logs)
+
+ sql_p = s_p.add_parser('query',
+ parents=[global_args],
+ help='Execute a specified query')
+ sql_p.add_argument(metavar='SQL',
+ dest='sql',
+ type=str,
+ help='The query to run and analyze')
+ sql_p.set_defaults(func=analyze_from_query)
+
global args
args = parser.parse_args()
-
- run()
+ args.func()
if __name__ == '__main__':
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-grid5k] 21/189: generic wire-fee year, fix empty shards when partitioned only, (continued)
- [taler-grid5k] 21/189: generic wire-fee year, fix empty shards when partitioned only, gnunet, 2022/04/28
- [taler-grid5k] 90/189: add doc, gnunet, 2022/04/28
- [taler-grid5k] 77/189: test custom metrics, gnunet, 2022/04/28
- [taler-grid5k] 116/189: fix verbose output, gnunet, 2022/04/28
- [taler-grid5k] 124/189: enable admin api for prometheus in order to test snapshots, gnunet, 2022/04/28
- [taler-grid5k] 75/189: also separate wallet from the main syslog receiver, gnunet, 2022/04/28
- [taler-grid5k] 80/189: change denominations, gnunet, 2022/04/28
- [taler-grid5k] 62/189: fix lookahead sign, gnunet, 2022/04/28
- [taler-grid5k] 84/189: cleaner exchange setup, gnunet, 2022/04/28
- [taler-grid5k] 118/189: add sharding logic, gnunet, 2022/04/28
- [taler-grid5k] 105/189: work towards parsing logs,
gnunet <=
- [taler-grid5k] 79/189: add histograms, gnunet, 2022/04/28
- [taler-grid5k] 108/189: update explain.py - multiline params not working yet - needs some style improvements, gnunet, 2022/04/28
- [taler-grid5k] 99/189: add explain analyzer, gnunet, 2022/04/28
- [taler-grid5k] 88/189: fix build, gnunet, 2022/04/28
- [taler-grid5k] 95/189: fix, gnunet, 2022/04/28
- [taler-grid5k] 109/189: update promtail message size, gnunet, 2022/04/28
- [taler-grid5k] 117/189: some db config, gnunet, 2022/04/28
- [taler-grid5k] 64/189: fix, gnunet, 2022/04/28
- [taler-grid5k] 96/189: fixes, add lookahead sign as param, gnunet, 2022/04/28
- [taler-grid5k] 70/189: fix, gnunet, 2022/04/28