diff --git a/app/overview.py b/app/overview.py index 94bfcffc..3503ef37 100644 --- a/app/overview.py +++ b/app/overview.py @@ -7,7 +7,7 @@ import os from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) template = env.get_template('ovw.html') - + print('Content-type: text/html\n') if create_db.check_db(): if create_db.create_table(): @@ -23,22 +23,23 @@ try: if (role == 2 or role == 3) and int(user_group) != 1: users = sql.select_users(group=user_group) servers_for_grep = '' - i = 0 + i = 1 servers_len = len(servers) for s in servers: - i += 1 if i != servers_len: servers_for_grep += s[2]+'\|' else: servers_for_grep += s[2] - cmd = "ps ax |grep -e 'metrics_worker\|metrics_waf_worker.py'|grep -E %s|grep -v grep |wc -l" % servers_for_grep + i += 1 + + cmd = "ps ax |grep 'metrics_worker\|metrics_waf_worker.py'|grep -v grep|grep '%s' |wc -l" % servers_for_grep metrics_worker, stderr = funct.subprocess_execute(cmd) - cmd = "ps ax |grep checker_worker|grep -E %s |grep -v grep |wc -l" % servers_for_grep + cmd = "ps ax |grep 'checker_worker\|checker_nginx'|grep -v grep |grep '%s' |wc -l" % servers_for_grep checker_worker, stderr = funct.subprocess_execute(cmd) i = 0 - for s in sql.select_alert(group=user_group): + for s in sql.select_all_alerts(group=user_group): i += 1 is_checker_worker = i is_metrics_workers = sql.select_servers_metrics_for_master(group=user_group) @@ -51,12 +52,12 @@ try: host = '' else: users = sql.select_users() - cmd = "ps ax |grep -e 'metrics_worker\|metrics_waf_worker.py' |grep -v grep |wc -l" + cmd = "ps ax |grep 'metrics_worker\|metrics_waf_worker.py' |grep -v grep |wc -l" metrics_worker, stderr = funct.subprocess_execute(cmd) - cmd = "ps ax |grep checker_worker |grep -v grep |wc -l" + cmd = "ps ax |grep 'checker_worker\|checker_nginx' |grep -v grep |wc -l" checker_worker, stderr = funct.subprocess_execute(cmd) i = 0 - for s in sql.select_alert(): + for s in sql.select_all_alerts(): i += 1 is_checker_worker = i is_metrics_workers = sql.select_servers_metrics_for_master() @@ -74,7 +75,7 @@ try: metrics_master, stderr = funct.subprocess_execute(cmd) cmd = "systemctl status checker_haproxy |grep Act |awk '{print $2}'" checker_master, stderr = funct.subprocess_execute(cmd) - cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l" + cmd = "systemctl status keep_alive |grep Act |awk '{print $2}'" keep_alive, stderr = funct.subprocess_execute(cmd) cmd = "systemctl status smon |grep Act |awk '{print $2}'" smon, stderr = funct.subprocess_execute(cmd) diff --git a/app/sql.py b/app/sql.py index dcec8e00..671a3e96 100644 --- a/app/sql.py +++ b/app/sql.py @@ -1266,6 +1266,19 @@ def select_all_waf_servers(): con.close() +def select_waf_servers_metrics_for_master(): + con, cur = get_cur() + sql = """ select servers.ip from servers left join waf as waf on waf.server_id = servers.id where servers.enable = 1 and waf.metrics = '1' """ + try: + cur.execute(sql) + except sqltool.Error as e: + funct.out_error(e) + else: + return cur.fetchall() + cur.close() + con.close() + + def select_waf_servers_metrics(uuid, **kwargs): con, cur = get_cur() sql = """ select * from user where username = '%s' """ % get_user_name_by_uuid(uuid) @@ -1859,7 +1872,7 @@ def select_roles(**kwargs): def select_alert(**kwargs): con, cur = get_cur() - sql = """select ip from servers where alert = 1 """ + sql = """select ip from servers where alert = 1 """ if kwargs.get("group") is not None: sql = """select ip from servers where alert = 1 and `groups` = '%s' """ % kwargs.get("group") try: @@ -1872,6 +1885,21 @@ def select_alert(**kwargs): con.close() +def select_all_alerts(**kwargs): + con, cur = get_cur() + sql = """select ip from servers where alert = 1 or nginx_alert = 1 """ + if kwargs.get("group") is not None: + sql = """select ip from servers where (alert = 1 or nginx_alert = 1) and `groups` = '%s' """ % kwargs.get("group") + try: + cur.execute(sql) + except sqltool.Error as e: + funct.out_error(e) + else: + return cur.fetchall() + cur.close() + con.close() + + def select_nginx_alert(**kwargs): con, cur = get_cur() sql = """select ip from servers where nginx_alert = 1 """ diff --git a/app/templates/ovw.html b/app/templates/ovw.html index c38dd5f2..f573fab3 100644 --- a/app/templates/ovw.html +++ b/app/templates/ovw.html @@ -88,22 +88,26 @@ {% if metrics_master == 'active' %} - + {% if role <= 1 %} - - Metrics master - + + Metrics master + {% else %} - Metrics master + Metrics master {% endif %} {% else %} {% if metrics_master == 'inactive' or metrics_master == 'failed' %} - + + {% if role <= 1 %} Metrics master {% else %} - + Metrics master + {% endif %} + {% else %} + Metrics master @@ -112,22 +116,26 @@ {% if checker_master == 'active' %} - + {% if role <= 1 %} - Checker master + Checker master {% else %} - Checker master + Checker master {% endif %} {% else %} {% if checker_master == 'inactive' or checker_master == 'failed' %} - - + + {% if role <= 1 %} + + Checker master + + {% else %} Checker master - + {% endif %} {% else %} - + Checker master @@ -135,74 +143,80 @@ {% endif %} - {% if keep_alive|int() >= 1 %} - + {% if keep_alive == 'active' %} + {% if role <= 1 %} - - Auto start - - {% else %} - Auto star - {% endif %} - {% else %} - - {% if role <= 1 %} - + Auto start {% else %} - Auto star + Auto star + {% endif %} + {% else %} + {% if keep_alive == 'inactive' or keep_alive == 'failed' %} + + {% if role <= 1 %} + + Auto start + + {% else %} + Auto start + {% endif %} + {% else %} + + + Auto start + {% endif %} {% endif %} - {% if metrics_worker|int() >= 1 %} - + {% else %} {% if is_metrics_worker|int() == 0 %} - + {% else %} - + {% endif %} {% endif %} {% if role <= 1 %} - Metrics workers + Metrics workers {% else %} - Metrics workers + Metrics workers {% endif %} {% if checker_worker|int() >= 1 %} - + {% else %} {% if is_checker_worker|int() == 0 %} - + {% else %} - + {% endif %} {% endif %} {% if role <= 1 %} - Checker workers + Checker workers {% else %} - Checker workers + Checker workers {% endif %} {% if smon == 'active' %} - + SMON {% else %} {% if smon == 'inactive' or smon== 'failed' %} - + SMON @@ -219,20 +233,20 @@ {% if role == 1 %} {% if grafana|int() >= 1 %} - + Grafana {% else %} - + Grafana {% endif %} {% if prometheus|int() >= 1 %} - + {% else %} - + {% endif %} - Prometheus + Prometheus {% endif %} diff --git a/inc/awesome.css b/inc/awesome.css index 976d1ce2..3ef5e8f2 100644 --- a/inc/awesome.css +++ b/inc/awesome.css @@ -273,4 +273,27 @@ margin-bottom: -1px; padding-left: 5px; } - +.alert-info::before { + display: none; + font-family: "Font Awesome 5 Solid"; + content: "\f05a"; +} +.alert-warning::before, .alert-danger::before { + display: none; + font-family: "Font Awesome 5 Solid"; + content: "\f06a"; +} +.alert-info .fa-info-circle, .alert-warning .fa-exclamation-circle, .alert-danger .fa-exclamation-circle { + padding-right: 10px; + float: left; + margin-bottom: 10px; + margin-top: 4px; + font-size: 25px; +} +.alert-info .fa-info-circle { + margin-top: -3px; +} +.alert-two-rows .fa-info-circle { + margin-top: 5px; + padding-left: 2px; +} \ No newline at end of file