diff --git a/app/create_db.py b/app/create_db.py
index 194c962e..20441e4d 100644
--- a/app/create_db.py
+++ b/app/create_db.py
@@ -432,7 +432,7 @@ def update_db_v_42(**kwargs):
def update_ver(**kwargs):
con, cur = get_cur()
- sql = """update version set version = '4.2.2.0'; """
+ sql = """update version set version = '4.2.3.0'; """
try:
cur.execute(sql)
con.commit()
diff --git a/app/funct.py b/app/funct.py
index 5a2f2448..a71070a3 100644
--- a/app/funct.py
+++ b/app/funct.py
@@ -102,7 +102,13 @@ def telegram_send_mess(mess, **kwargs):
for telegram in telegrams:
token_bot = telegram[1]
channel_name = telegram[2]
-
+
+ if token_bot == '' or channel_name == '':
+ mess = " Fatal: Can't send message. Add Telegram chanel before use alerting at this servers group"
+ print(mess)
+ logging('localhost', mess, haproxywi=1)
+ sys.exit()
+
if proxy is not None and proxy != '' and proxy != 'None':
apihelper.proxy = {'https': proxy}
try:
@@ -280,26 +286,33 @@ def diff_config(oldcfg, cfg):
pass
-def get_sections(config):
+def get_sections(config, **kwargs):
record = False
return_config = list()
with open(config, 'r') as f:
for line in f:
- if (
- line.startswith('listen') or
- line.startswith('frontend') or
- line.startswith('backend') or
- line.startswith('cache') or
- line.startswith('defaults') or
- line.startswith('global') or
- line.startswith('#HideBlockEnd') or
- line.startswith('#HideBlockStart') or
- line.startswith('peers') or
- line.startswith('resolvers') or
- line.startswith('userlist')
- ):
+ if kwargs.get('service') == 'nginx':
+ if 'server_name' in line:
+ line = line.split('server_name')[1]
+ line = line.split(';')[0]
line = line.strip()
return_config.append(line)
+ else:
+ if (
+ line.startswith('listen') or
+ line.startswith('frontend') or
+ line.startswith('backend') or
+ line.startswith('cache') or
+ line.startswith('defaults') or
+ line.startswith('global') or
+ line.startswith('#HideBlockEnd') or
+ line.startswith('#HideBlockStart') or
+ line.startswith('peers') or
+ line.startswith('resolvers') or
+ line.startswith('userlist')
+ ):
+ line = line.strip()
+ return_config.append(line)
return return_config
@@ -834,22 +847,21 @@ def get_files(dir = get_config_var('configs', 'haproxy_save_configs_dir'), forma
file = set()
return_files = set()
i = 0
- for files in glob.glob(os.path.join(dir,'*.'+format)):
+ for files in sorted(glob.glob(os.path.join(dir,'*.'+format))):
if format == 'log':
file += [(i, files.split('/')[5])]
- else:
+ else:
file.add(files.split('/')[-1])
i += 1
- files = sorted(file, reverse=True)
-
+ files = file
if format == 'cfg' or format == 'conf':
- for file in files:
+ for file in files:
ip = file.split("-")
if serv == ip[0]:
- return_files.add(file)
+ return_files.add(file)
return sorted(return_files, reverse=True)
else:
- return files
+ return file
def get_key(item):
diff --git a/app/options.py b/app/options.py
index 487af473..53edec01 100644
--- a/app/options.py
+++ b/app/options.py
@@ -136,26 +136,35 @@ if act == "overviewHapserverBackends":
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('templates/ajax'), autoescape=True)
template = env.get_template('haproxyservers_backends.html')
-
- hap_configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ service = form.getvalue('service')
+ if service == 'haproxy':
+ configs_dir = funct.get_config_var('configs', 'haproxy_save_configs_dir')
+ format = 'cfg'
+ elif service == 'nginx':
+ configs_dir = funct.get_config_var('configs', 'nginx_save_configs_dir')
+ format = 'conf'
try:
- sections = funct.get_sections(hap_configs_dir +funct.get_files()[0])
- except:
+ sections = funct.get_sections(configs_dir+funct.get_files(dir=configs_dir, format=format)[0], service=service)
+ except Exception as e:
+ funct.logging('localhost', str(e), haproxywi=1)
try:
- cfg = hap_configs_dir + serv + "-" + funct.get_data('config') + ".cfg"
+ cfg = configs_dir + serv + "-" + funct.get_data('config') + '.'+format
except:
funct.logging('localhost', ' Cannot generate cfg path', haproxywi=1)
try:
- error = funct.get_config(serv, cfg)
+ if service == 'nginx':
+ error = funct.get_config(serv, cfg, nginx=1)
+ else:
+ error = funct.get_config(serv, cfg)
except:
funct.logging('localhost', ' Cannot download config', haproxywi=1)
try:
- sections = funct.get_sections(cfg)
+ sections = funct.get_sections(cfg, service=service)
except:
funct.logging('localhost', ' Cannot get sections from config file', haproxywi=1)
sections = 'Cannot get backends'
- template = template.render(backends=sections, serv=serv)
+ template = template.render(backends=sections, serv=serv, service=service)
print(template)
@@ -264,20 +273,27 @@ if act == "overviewwaf":
if act == "overviewServers":
import asyncio
- async def async_get_overviewServers(serv1, serv2):
+ async def async_get_overviewServers(serv1, serv2, service):
server_status = ()
- commands = [ "top -u haproxy -b -n 1" ]
- cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|Maxco\|MB\|Uptime:"' % (serv2, sql.get_setting('haproxy_sock_port'))
- out = funct.subprocess_execute(cmd)
- out1 = ""
+ if service == 'haproxy':
+ commands = [ "top -u haproxy -b -n 1" ]
+ else:
+ commands = [ "top -u nginx -b -n 1" ]
- for k in out:
- if "Ncat:" not in k:
- for r in k:
- out1 += r
- out1 += "
"
- else:
- out1 = "Can\'t connect to HAproxy"
+ if service == 'haproxy':
+ cmd = 'echo "show info" |nc %s %s -w 1|grep -e "Ver\|CurrConns\|Maxco\|MB\|Uptime:"' % (serv2, sql.get_setting('haproxy_sock_port'))
+ out = funct.subprocess_execute(cmd)
+ out1 = ""
+
+ for k in out:
+ if "Ncat:" not in k:
+ for r in k:
+ out1 += r
+ out1 += "
"
+ else:
+ out1 = "Can\'t connect to HAproxy"
+ else:
+ out1 = ''
server_status = (serv1,serv2, out1, funct.ssh_command(serv2, commands))
return server_status
@@ -292,19 +308,20 @@ if act == "overviewServers":
cookie = http.cookies.SimpleCookie(os.environ.get("HTTP_COOKIE"))
user_id = cookie.get('uuid')
role = sql.get_user_role_by_uuid(user_id.value)
- futures = [async_get_overviewServers(kwargs.get('server1'), kwargs.get('server2'))]
+ futures = [async_get_overviewServers(kwargs.get('server1'), kwargs.get('server2'), kwargs.get('service'))]
for i, future in enumerate(asyncio.as_completed(futures)):
result = await future
servers.append(result)
servers_sorted = sorted(servers, key=funct.get_key)
- template = template.render(service_status=servers_sorted, role=role, id=kwargs.get('id'))
+ template = template.render(service_status=servers_sorted, role=role, id=kwargs.get('id'), service_page=service)
print(template)
id = form.getvalue('id')
name = form.getvalue('name')
+ service = form.getvalue('service')
ioloop = asyncio.get_event_loop()
- ioloop.run_until_complete(get_runner_overviewServers(server1=name, server2=serv, id=id))
+ ioloop.run_until_complete(get_runner_overviewServers(server1=name, server2=serv, id=id, service=service))
ioloop.close()
diff --git a/app/overview.py b/app/overview.py
index 5f17ff19..7386240d 100644
--- a/app/overview.py
+++ b/app/overview.py
@@ -33,6 +33,17 @@ try:
grafana, stderr = funct.subprocess_execute(cmd)
cmd = "ps ax |grep 'prometheus ' |grep -v grep|wc -l"
prometheus, stderr = funct.subprocess_execute(cmd)
+ is_checker_workers = sql.select_alert()
+ i = 0
+ for s in sql.select_alert():
+ i += 1
+ is_checker_worker = i
+ is_metrics_workers = sql.select_servers_metrics_for_master()
+ i = 0
+ for s in is_metrics_workers:
+ i += 1
+ is_metrics_worker = i
+
except:
role = ''
user = ''
@@ -51,6 +62,9 @@ except:
haproxy_wi_log = ''
servers = ''
stderr = ''
+ is_checker_worker = ''
+ is_metrics_worker = ''
+ token = ''
template = template.render(h2 = 1,
@@ -79,5 +93,7 @@ template = template.render(h2 = 1,
versions = funct.versions(),
haproxy_wi_log = funct.haproxy_wi_log(),
servers = servers,
+ is_checker_worker = is_checker_worker,
+ is_metrics_worker = is_metrics_worker,
token = token)
print(template)
\ No newline at end of file
diff --git a/app/scripts/ansible/roles/grafana.yml b/app/scripts/ansible/roles/grafana.yml
index 0d3509c9..2d80679c 100644
--- a/app/scripts/ansible/roles/grafana.yml
+++ b/app/scripts/ansible/roles/grafana.yml
@@ -32,4 +32,27 @@
- dashboard_id: 11879
revision_id: 3
datasource: prometheus
-
\ No newline at end of file
+ tasks:
+ - name: populate service facts
+ service_facts:
+
+ - name: Open stat port for firewalld
+ firewalld:
+ port: "{{ item }}/tcp"
+ state: enabled
+ permanent: yes
+ immediate: yes
+ ignore_errors: yes
+ no_log: True
+ debugger: never
+ when: (ansible_facts['os_family'] == "RedHat" or ansible_facts['os_family'] == 'CentOS') and ansible_facts.services["firewalld.service"]['state'] == "running"
+ with_items: [ "3000", "9090" ]
+
+ - name: Open stat port for iptables
+ iptables:
+ chain: INPUT
+ destination_port: "{{ item }}"
+ jump: ACCEPT
+ protocol: tcp
+ ignore_errors: yes
+ with_items: [ "3000", "9090" ]
\ No newline at end of file
diff --git a/app/templates/ajax/haproxyservers_backends.html b/app/templates/ajax/haproxyservers_backends.html
index ba97986b..5cd397d1 100644
--- a/app/templates/ajax/haproxyservers_backends.html
+++ b/app/templates/ajax/haproxyservers_backends.html
@@ -7,8 +7,12 @@
{{backends}}
{% else %}
{% for b in backends %}
+ {% if service == 'haproxy' %}
{{b}}
+ {% else %}
+ {{b}}
+ {% endif %}
{% endfor %}
{% endif %}
\ No newline at end of file
diff --git a/app/templates/ajax/overviewServers.html b/app/templates/ajax/overviewServers.html
index 875910d0..94299417 100644
--- a/app/templates/ajax/overviewServers.html
+++ b/app/templates/ajax/overviewServers.html
@@ -1,17 +1,27 @@
{%- for service in service_status -%}
{{ service.3 }}diff --git a/app/templates/hapservers.html b/app/templates/hapservers.html index c4333b07..bdd0b4cb 100644 --- a/app/templates/hapservers.html +++ b/app/templates/hapservers.html @@ -31,7 +31,7 @@ hostnamea.push(host) {% endfor %} -
Are you sure?