Pavel Loginov 2021-01-14 19:14:38 +06:00
parent f5856ad73b
commit f3e43892fa
4 changed files with 123 additions and 57 deletions

View File

@ -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)

View File

@ -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 """

View File

@ -88,22 +88,26 @@
<tr>
<td class="padding10 first-collumn-wi">
{% if metrics_master == 'active' %}
<span title="running {{ metrics_master }} master processes"><span class="serverUp server-status"></span></span>
<span class="serverUp server-status" title="running {{ metrics_master }} master processes"></span>
{% if role <= 1 %}
<a href="/app/viewlogs.py?viewlogs={{metrics_log_id}}&rows=10&grep=&hour=00&minut=00&hour1=24&minut1=00" title="View metrics master's logs" class="logs_link">
<span>Metrics master</span>
</a>
<a href="/app/viewlogs.py?viewlogs={{metrics_log_id}}&rows=10&grep=&hour=00&minut=00&hour1=24&minut1=00" title="View metrics master's logs" class="logs_link">
Metrics master
</a>
{% else %}
<span>Metrics master</span>
Metrics master
{% endif %}
{% else %}
{% if metrics_master == 'inactive' or metrics_master == 'failed' %}
<span title="Metrics is stopped"><span class="serverDown server-status"></span></span>
<span class="serverDown server-status" title="Metrics is stopped"></span>
{% if role <= 1 %}
<a href="/app/users.py#services" title="Start Metrics - HAProxy-WI service" class="logs_link">
Metrics master
</a>
{% else %}
<span title="Metrics is not installed"><span class="serverNone server-status"></span></span>
Metrics master
{% endif %}
{% else %}
<span class="serverNone server-status" title="Metrics is not installed"></span>
<a href="https://haproxy-wi.org/services.py?service=metrics#installation" title="Metrics installation" target="_blank" class="logs_link">
Metrics master
</a>
@ -112,22 +116,26 @@
</td>
<td class="third-collumn-wi">
{% if checker_master == 'active' %}
<span title="running {{ checker_master }} master processes"><span class="serverUp server-status"></span></span>
<span class="serverUp server-status" title="running {{ checker_master }} master processes"></span>
{% if role <= 1 %}
<a href="/app/viewlogs.py?viewlogs={{checker_log_id}}&rows=10&grep=&hour=00&minut=00&hour1=24&minut1=00" title="View checker master's logs" class="logs_link">
<span>Checker master</span>
Checker master
</a>
{% else %}
<span>Checker master</span>
Checker master
{% endif %}
{% else %}
{% if checker_master == 'inactive' or checker_master == 'failed' %}
<span title="Checker is stopped"><span class="serverDown server-status"></span></span>
<a href="/app/users.py#services" title="Start Checker - HAProxy-WI service" class="logs_link">
<span class="serverDown server-status" title="Checker is stopped"></span>
{% if role <= 1 %}
<a href="/app/users.py#services" title="Start Checker - HAProxy-WI service" class="logs_link">
Checker master
</a>
{% else %}
Checker master
</a>
{% endif %}
{% else %}
<span title="Backends checker is not installed"><span class="serverNone server-status"></span></span>
<span class="serverNone server-status" title="Backends checker is not installed"></span>
<a href="https://haproxy-wi.org/services.py?service=checker#installation" title="Backends checker installation" target="_blank" class="logs_link">
Checker master
</a>
@ -135,74 +143,80 @@
{% endif %}
</td>
<td class="third-collumn-wi">
{% if keep_alive|int() >= 1 %}
<span title="running {{ keep_alive }} processe"><span class="serverUp server-status"></span></span>
{% if keep_alive == 'active' %}
<span class="serverUp server-status" title="running {{ keep_alive }} processe"></span>
{% if role <= 1 %}
<a href="/app/viewlogs.py?viewlogs={{keep_alive_log_id}}&rows=10&grep=&hour=00&minut=00&hour1=24&minut1=00" title="View keep alive logs" class="logs_link">
<span>Auto start</span>
</a>
{% else %}
<span>Auto star</span>
{% endif %}
{% else %}
<span class="serverDown server-status"></span>
{% if role <= 1 %}
<a href="/app/users.py#services" title="Start Auto star - HAProxy-WI service" class="logs_link">
<a href="/app/viewlogs.py?viewlogs={{keep_alive_log_id}}&rows=10&grep=&hour=00&minut=00&hour1=24&minut1=00" title="View Auto start logs" class="logs_link">
Auto start
</a>
{% else %}
<span>Auto star</span>
Auto star
{% endif %}
{% else %}
{% if keep_alive == 'inactive' or keep_alive == 'failed' %}
<span class="serverDown server-status" title="Auto start is stopped"></span>
{% if role <= 1 %}
<a href="/app/users.py#services" title="Start Auto star - HAProxy-WI service" class="logs_link">
Auto start
</a>
{% else %}
Auto start
{% endif %}
{% else %}
<span class="serverNone server-status" title="Auto start is not installed"></span>
<a href="https://haproxy-wi.org/services.py?service=auto_start#installation" title="Auto start installation" target="_blank" class="logs_link">
Auto start
</a>
{% endif %}
{% endif %}
</td>
</tr>
<tr class="even">
<td class="padding10 first-collumn-wi">
{% if metrics_worker|int() >= 1 %}
<span title="running {{metrics_worker}} worker processes"><span class="serverUp server-status"></span></span>
<span class="serverUp server-status" title="running {{metrics_worker}} worker processes"></span>
{% else %}
{% if is_metrics_worker|int() == 0 %}
<span title="There is not job for metrics"><span class="serverNone server-status"></span></span>
<span class="serverNone server-status" title="There is not job for metrics"></span>
{% else %}
<span title="running {{is_checker_worker}} worker processes"><span class="serverDown server-status"></span></span>
<span class="serverDown server-status" title="running {{is_checker_worker}} worker processes"></span>
{% endif %}
{% endif %}
{% if role <= 1 %}
<a href="/app/viewlogs.py?viewlogs={{metrics_error_log_id}}&rows=10&grep=&hour=00&minut=00&hour1=24&minut1=00" title="View worker's logs" class="logs_link">
<span>Metrics workers</span>
Metrics workers
</a>
{% else %}
<span>Metrics workers</span>
Metrics workers
{% endif %}
</td>
<td>
{% if checker_worker|int() >= 1 %}
<span title="running {{ checker_worker }} worker processes"><span class="serverUp server-status"></span></span>
<span class="serverUp server-status" title="running {{ checker_worker }} worker processes"></span>
{% else %}
{% if is_checker_worker|int() == 0 %}
<span title="There is not job for checker"><span class="serverNone server-status"></span> </span>
<span class="serverNone server-status" title="There is not job for checker"></span>
{% else %}
<span title="running {{ checker_worker }} worker processes"><span class="serverDown server-status"></span> </span>
<span class="serverDown server-status" title="running {{ checker_worker }} worker processes"></span>
{% endif %}
{% endif %}
{% if role <= 1 %}
<a href="/app/viewlogs.py?viewlogs={{checker_error_log_id}}&rows=10&grep=&hour=00&minut=00&hour1=24&minut1=00" title="View checker's logs" class="logs_link">
<span>Checker workers</span>
Checker workers
</a>
{% else %}
<span>Checker workers</span>
Checker workers
{% endif %}
</td>
<td>
{% if smon == 'active' %}
<span title="SMON is started"><span class="serverUp server-status"></span></span>
<span class="serverUp server-status" title="SMON is started"></span>
<a href="/app/smon.py?action=view" title="SMON Dashboard" class="logs_link">
SMON
</a>
{% else %}
{% if smon == 'inactive' or smon== 'failed' %}
<span title="SMON is stopped"><span class="serverDown server-status"></span></span>
<span class="serverDown server-status" title="SMON is stopped"></span>
<a href="/app/users.py#services" title="Start SMON - HAProxy-WI service" class="logs_link">
SMON
</a>
@ -219,20 +233,20 @@
{% if role == 1 %}
<td class="padding10 first-collumn-wi">
{% if grafana|int() >= 1 %}
<span title="running {{grafana}} process"><span class="serverUp server-status"></span></span>
<span class="serverUp server-status" title="running {{grafana}} process"></span>
<a href="http://{{host}}:3000" target="_blank" title="Open Grafana" class="logs_link">Grafana</a>
{% else %}
<span title="The service does not started or does not installed"><span class="serverNone server-status"></span></span>
<span class="serverNone server-status" title="The service does not started or does not installed"></span>
<span>Grafana</span>
{% endif %}
</td>
<td>
{% if prometheus|int() >= 1 %}
<span title="running {{ prometheus }} process"><span class="serverUp server-status"></span></span>
<span class="serverUp server-status" title="running {{ prometheus }} process"></span>
{% else %}
<span title="The service does not started or does not installed"><span class="serverNone server-status" title="The service does not started or does not installed"></span></span>
<span class="serverNone server-status" title="The service does not started or does not installed"></span>
{% endif %}
<span>Prometheus</span>
Prometheus
</td>
{% endif %}
</tr>

View File

@ -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;
}