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 from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/'), autoescape=True) env = Environment(loader=FileSystemLoader('templates/'), autoescape=True)
template = env.get_template('ovw.html') template = env.get_template('ovw.html')
print('Content-type: text/html\n') print('Content-type: text/html\n')
if create_db.check_db(): if create_db.check_db():
if create_db.create_table(): if create_db.create_table():
@ -23,22 +23,23 @@ try:
if (role == 2 or role == 3) and int(user_group) != 1: if (role == 2 or role == 3) and int(user_group) != 1:
users = sql.select_users(group=user_group) users = sql.select_users(group=user_group)
servers_for_grep = '' servers_for_grep = ''
i = 0 i = 1
servers_len = len(servers) servers_len = len(servers)
for s in servers: for s in servers:
i += 1
if i != servers_len: if i != servers_len:
servers_for_grep += s[2]+'\|' servers_for_grep += s[2]+'\|'
else: else:
servers_for_grep += s[2] 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) 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) checker_worker, stderr = funct.subprocess_execute(cmd)
i = 0 i = 0
for s in sql.select_alert(group=user_group): for s in sql.select_all_alerts(group=user_group):
i += 1 i += 1
is_checker_worker = i is_checker_worker = i
is_metrics_workers = sql.select_servers_metrics_for_master(group=user_group) is_metrics_workers = sql.select_servers_metrics_for_master(group=user_group)
@ -51,12 +52,12 @@ try:
host = '' host = ''
else: else:
users = sql.select_users() 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) 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) checker_worker, stderr = funct.subprocess_execute(cmd)
i = 0 i = 0
for s in sql.select_alert(): for s in sql.select_all_alerts():
i += 1 i += 1
is_checker_worker = i is_checker_worker = i
is_metrics_workers = sql.select_servers_metrics_for_master() is_metrics_workers = sql.select_servers_metrics_for_master()
@ -74,7 +75,7 @@ try:
metrics_master, stderr = funct.subprocess_execute(cmd) metrics_master, stderr = funct.subprocess_execute(cmd)
cmd = "systemctl status checker_haproxy |grep Act |awk '{print $2}'" cmd = "systemctl status checker_haproxy |grep Act |awk '{print $2}'"
checker_master, stderr = funct.subprocess_execute(cmd) 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) keep_alive, stderr = funct.subprocess_execute(cmd)
cmd = "systemctl status smon |grep Act |awk '{print $2}'" cmd = "systemctl status smon |grep Act |awk '{print $2}'"
smon, stderr = funct.subprocess_execute(cmd) smon, stderr = funct.subprocess_execute(cmd)

View File

@ -1266,6 +1266,19 @@ def select_all_waf_servers():
con.close() 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): def select_waf_servers_metrics(uuid, **kwargs):
con, cur = get_cur() con, cur = get_cur()
sql = """ select * from user where username = '%s' """ % get_user_name_by_uuid(uuid) 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): def select_alert(**kwargs):
con, cur = get_cur() 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: if kwargs.get("group") is not None:
sql = """select ip from servers where alert = 1 and `groups` = '%s' """ % kwargs.get("group") sql = """select ip from servers where alert = 1 and `groups` = '%s' """ % kwargs.get("group")
try: try:
@ -1872,6 +1885,21 @@ def select_alert(**kwargs):
con.close() 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): def select_nginx_alert(**kwargs):
con, cur = get_cur() con, cur = get_cur()
sql = """select ip from servers where nginx_alert = 1 """ sql = """select ip from servers where nginx_alert = 1 """

View File

@ -88,22 +88,26 @@
<tr> <tr>
<td class="padding10 first-collumn-wi"> <td class="padding10 first-collumn-wi">
{% if metrics_master == 'active' %} {% 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 %} {% 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"> <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> Metrics master
</a> </a>
{% else %} {% else %}
<span>Metrics master</span> Metrics master
{% endif %} {% endif %}
{% else %} {% else %}
{% if metrics_master == 'inactive' or metrics_master == 'failed' %} {% 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"> <a href="/app/users.py#services" title="Start Metrics - HAProxy-WI service" class="logs_link">
Metrics master Metrics master
</a> </a>
{% else %} {% 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"> <a href="https://haproxy-wi.org/services.py?service=metrics#installation" title="Metrics installation" target="_blank" class="logs_link">
Metrics master Metrics master
</a> </a>
@ -112,22 +116,26 @@
</td> </td>
<td class="third-collumn-wi"> <td class="third-collumn-wi">
{% if checker_master == 'active' %} {% 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 %} {% 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"> <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> </a>
{% else %} {% else %}
<span>Checker master</span> Checker master
{% endif %} {% endif %}
{% else %} {% else %}
{% if checker_master == 'inactive' or checker_master == 'failed' %} {% if checker_master == 'inactive' or checker_master == 'failed' %}
<span title="Checker is stopped"><span class="serverDown server-status"></span></span> <span class="serverDown server-status" title="Checker is stopped"></span>
<a href="/app/users.py#services" title="Start Checker - HAProxy-WI service" class="logs_link"> {% if role <= 1 %}
<a href="/app/users.py#services" title="Start Checker - HAProxy-WI service" class="logs_link">
Checker master
</a>
{% else %}
Checker master Checker master
</a> {% endif %}
{% else %} {% 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"> <a href="https://haproxy-wi.org/services.py?service=checker#installation" title="Backends checker installation" target="_blank" class="logs_link">
Checker master Checker master
</a> </a>
@ -135,74 +143,80 @@
{% endif %} {% endif %}
</td> </td>
<td class="third-collumn-wi"> <td class="third-collumn-wi">
{% if keep_alive|int() >= 1 %} {% if keep_alive == 'active' %}
<span title="running {{ keep_alive }} processe"><span class="serverUp server-status"></span></span> <span class="serverUp server-status" title="running {{ keep_alive }} processe"></span>
{% if role <= 1 %} {% 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"> <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">
<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">
Auto start Auto start
</a> </a>
{% else %} {% 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 %}
{% endif %} {% endif %}
</td> </td>
</tr> </tr>
<tr class="even"> <tr class="even">
<td class="padding10 first-collumn-wi"> <td class="padding10 first-collumn-wi">
{% if metrics_worker|int() >= 1 %} {% 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 %} {% else %}
{% if is_metrics_worker|int() == 0 %} {% 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 %} {% 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 %}
{% endif %} {% endif %}
{% if role <= 1 %} {% 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"> <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> </a>
{% else %} {% else %}
<span>Metrics workers</span> Metrics workers
{% endif %} {% endif %}
</td> </td>
<td> <td>
{% if checker_worker|int() >= 1 %} {% 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 %} {% else %}
{% if is_checker_worker|int() == 0 %} {% 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 %} {% 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 %}
{% endif %} {% endif %}
{% if role <= 1 %} {% 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"> <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> </a>
{% else %} {% else %}
<span>Checker workers</span> Checker workers
{% endif %} {% endif %}
</td> </td>
<td> <td>
{% if smon == 'active' %} {% 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"> <a href="/app/smon.py?action=view" title="SMON Dashboard" class="logs_link">
SMON SMON
</a> </a>
{% else %} {% else %}
{% if smon == 'inactive' or smon== 'failed' %} {% 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"> <a href="/app/users.py#services" title="Start SMON - HAProxy-WI service" class="logs_link">
SMON SMON
</a> </a>
@ -219,20 +233,20 @@
{% if role == 1 %} {% if role == 1 %}
<td class="padding10 first-collumn-wi"> <td class="padding10 first-collumn-wi">
{% if grafana|int() >= 1 %} {% 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> <a href="http://{{host}}:3000" target="_blank" title="Open Grafana" class="logs_link">Grafana</a>
{% else %} {% 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> <span>Grafana</span>
{% endif %} {% endif %}
</td> </td>
<td> <td>
{% if prometheus|int() >= 1 %} {% 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 %} {% 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 %} {% endif %}
<span>Prometheus</span> Prometheus
</td> </td>
{% endif %} {% endif %}
</tr> </tr>

View File

@ -273,4 +273,27 @@
margin-bottom: -1px; margin-bottom: -1px;
padding-left: 5px; 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;
}