From 1dbbf5498632a6210103be17ac4f223c20ac044c Mon Sep 17 00:00:00 2001 From: Aidaho Date: Tue, 17 Sep 2024 08:52:36 +0300 Subject: [PATCH] v8.0.2: Remove Grafana integration Deleted the Grafana role from Ansible playbooks and related references in various files. This includes updates to HTML templates, route definitions, and database entries to ensure no remnants of Grafana configuration remain. --- README.md | 1 - app/api/routes/routes.py | 8 +- app/create_db.py | 13 ++- app/modules/service/exporter_installation.py | 7 +- app/modules/service/installation.py | 9 -- app/routes/admin/routes.py | 3 +- app/routes/install/routes.py | 12 +-- app/scripts/ansible/roles/grafana.yml | 97 -------------------- app/templates/ajax/load_services.html | 6 +- app/templates/install.html | 43 --------- app/templates/languages/en.html | 1 - app/templates/languages/fr.html | 1 - app/templates/languages/pt-br.html | 1 - app/templates/languages/ru.html | 1 - 14 files changed, 24 insertions(+), 179 deletions(-) delete mode 100644 app/scripts/ansible/roles/grafana.yml diff --git a/README.md b/README.md index 99d5459d..4b516d23 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,6 @@ Web interface (user-friendly web GUI, alerting, monitoring and secure) for manag # Features: 1. Installing and updating HAProxy, Nginx, Apache and Keepalived with Roxy-WI as a system service 2. Installing and updating HAProxy and Nginx with Roxy-WI as a Docker service -3. Installing and updating Grafana, Prometheus servers with Roxy-WI 4. Installing and updating HAProxy, Nginx, Apache, Keepalived and Node exporters with Roxy-WI 6. Downloading, updating and formatting GeoIP to the acceptable format for HAProxy with Roxy-WI 7. Dynamic change of Maxconn, Black/white lists, add, edit or delete backend's IP address and port with saving changes to the config file diff --git a/app/api/routes/routes.py b/app/api/routes/routes.py index a28be353..67f69766 100644 --- a/app/api/routes/routes.py +++ b/app/api/routes/routes.py @@ -32,6 +32,12 @@ def before_request(): def register_api(view, endpoint, url, pk='listener_id', pk_type='int'): + view_func = view.as_view(endpoint) + bp.add_url_rule(url, view_func=view_func, methods=['POST']) + bp.add_url_rule(f'{url}/<{pk_type}:{pk}>', view_func=view_func, methods=['GET', 'PUT', 'PATCH', 'DELETE']) + + +def register_api_for_not_api(view, endpoint, url, pk='listener_id', pk_type='int'): view_func = view.as_view(endpoint, True) bp.add_url_rule(url, view_func=view_func, methods=['POST']) bp.add_url_rule(f'{url}/<{pk_type}:{pk}>', view_func=view_func, methods=['GET', 'PUT', 'PATCH', 'DELETE']) @@ -68,7 +74,7 @@ register_api(S3BackupView, 'backup_s3', '/server/backup/s3', 'backup_id') register_api(GitBackupView, 'backup_git', '/server/backup/git', 'backup_id') bp.add_url_rule('/server//ip', view_func=ServerIPView.as_view('server_ip_ip'), methods=['GET']) bp.add_url_rule('/server//ip', view_func=ServerIPView.as_view('server_ip'), methods=['GET']) -register_api(CredView, 'cred', '/server/cred', 'cred_id') +register_api_for_not_api(CredView, 'cred', '/server/cred', 'cred_id') bp.add_url_rule('/server/creds', view_func=CredsView.as_view('creds'), methods=['GET']) bp.add_url_rule('/server/portscanner/', view_func=PortScannerView.as_view('port_scanner_ip'), methods=['GET', 'POST']) bp.add_url_rule('/server/portscanner/', view_func=PortScannerView.as_view('port_scanner'), methods=['GET', 'POST']) diff --git a/app/create_db.py b/app/create_db.py index 08bac055..1413c560 100644 --- a/app/create_db.py +++ b/app/create_db.py @@ -436,8 +436,6 @@ def default_values(): {'name': 'roxy-wi-socket', 'current_version': '1.0', 'new_version': '0', 'is_roxy': 1, 'desc': ''}, {'name': 'roxy-wi-prometheus-exporter', 'current_version': '1.0', 'new_version': '0', 'is_roxy': 1, 'desc': ''}, {'name': 'roxy-wi-smon', 'current_version': '1.0', 'new_version': '0', 'is_roxy': 1, 'desc': ''}, - {'name': 'prometheus', 'current_version': '1.0', 'new_version': '1.0', 'is_roxy': 0, 'desc': 'Prometheus service'}, - {'name': 'grafana-server', 'current_version': '1.0', 'new_version': '1.0', 'is_roxy': 0, 'desc': 'Grafana service'}, {'name': 'fail2ban', 'current_version': '1.0', 'new_version': '1.0', 'is_roxy': 0, 'desc': 'Fail2ban service'}, {'name': 'rabbitmq-server', 'current_version': '1.0', 'new_version': '1.0', 'is_roxy': 0, 'desc': 'Rabbitmq service'}, ] @@ -613,6 +611,16 @@ def update_db_v_8_0_2(): print("An error occurred:", e) +def update_db_v_8_0_2_1(): + try: + RoxyTool.delete().where(RoxyTool.name == 'prometheus').execute() + RoxyTool.delete().where(RoxyTool.name == 'grafana-server').execute() + except Exception as e: + print("An error occurred:", e) + else: + print("Updating... DB has been updated to version 8.0.2-1") + + def update_ver(): try: Version.update(version='8.0.2').execute() @@ -640,4 +648,5 @@ def update_all(): update_db_v_7_4() update_db_v_8() update_db_v_8_0_2() + update_db_v_8_0_2_1() update_ver() diff --git a/app/modules/service/exporter_installation.py b/app/modules/service/exporter_installation.py index 4040a17b..7d44396f 100644 --- a/app/modules/service/exporter_installation.py +++ b/app/modules/service/exporter_installation.py @@ -4,11 +4,10 @@ import app.modules.db.sql as sql from app.modules.service.installation import run_ansible -def generate_exporter_inc(server_ip: str, ext_prom: int, ver: str, exporter: str) -> object: +def generate_exporter_inc(server_ip: str,ver: str, exporter: str) -> object: inv = {"server": {"hosts": {}}} server_ips = [server_ip] inv['server']['hosts'][server_ip] = { - 'EXP_PROM': ext_prom, f'{exporter}_exporter_version': ver, 'service': f'{exporter} exporter' } @@ -28,10 +27,10 @@ def generate_exporter_inc(server_ip: str, ext_prom: int, ver: str, exporter: str return inv, server_ips -def install_exporter(server_ip: str, ver: str, ext_prom: int, exporter: str) -> object: +def install_exporter(server_ip: str, ver: str, exporter: str) -> object: service = f'{exporter.title()} exporter' try: - inv, server_ips = generate_exporter_inc(server_ip, ext_prom, ver, exporter) + inv, server_ips = generate_exporter_inc(server_ip, ver, exporter) return run_ansible(inv, server_ips, f'{exporter}_exporter'), 201 except Exception as e: raise Exception(f'error: Cannot install {service}: {e}') diff --git a/app/modules/service/installation.py b/app/modules/service/installation.py index 90069920..05648091 100644 --- a/app/modules/service/installation.py +++ b/app/modules/service/installation.py @@ -59,15 +59,6 @@ def generate_geoip_inv(server_ip: str, installed_service: str, geoip_update: int return inv, server_ips -def generate_grafana_inv() -> object: - inv = {"server": {"hosts": {}}} - server_ips = [] - inv['server']['hosts']['localhost'] = {} - server_ips.append('localhost') - - return inv, server_ips - - def generate_kp_inv(json_data: json, installed_service) -> object: inv = {"server": {"hosts": {}}} server_ips = [] diff --git a/app/routes/admin/routes.py b/app/routes/admin/routes.py index 0a7ef5a5..cdcb13d5 100644 --- a/app/routes/admin/routes.py +++ b/app/routes/admin/routes.py @@ -1,5 +1,5 @@ import pytz -from flask import render_template, request, g +from flask import render_template, g from flask_jwt_extended import jwt_required from app import scheduler @@ -13,7 +13,6 @@ from app.middleware import get_user_params import app.modules.roxywi.roxy as roxy import app.modules.roxywi.auth as roxywi_auth import app.modules.roxywi.common as roxywi_common -import app.modules.tools.smon as smon_mod import app.modules.tools.common as tools_common import app.modules.server.ssh as ssh_mod from app.views.admin.views import SettingsView diff --git a/app/routes/install/routes.py b/app/routes/install/routes.py index af1f6741..42405dca 100644 --- a/app/routes/install/routes.py +++ b/app/routes/install/routes.py @@ -50,13 +50,12 @@ def install_exporter(exporter): json_data = request.get_json() server_ip = common.is_ip_or_dns(json_data['server_ip']) ver = common.checkAjaxInput(json_data['exporter_v']) - ext_prom = common.checkAjaxInput(json_data['ext_prom']) if exporter not in ('haproxy', 'nginx', 'apache', 'keepalived', 'node'): return jsonify({'status': 'failed', 'error': 'Wrong exporter'}) try: - return exp_installation.install_exporter(server_ip, ver, ext_prom, exporter) + return exp_installation.install_exporter(server_ip, ver, exporter) except Exception as e: return jsonify({'status': 'failed', 'error': f'Cannot install {exporter.title()} exporter: {e}'}) @@ -67,15 +66,6 @@ def get_exporter_version(exporter, server_ip): return service_common.get_exp_version(server_ip, exporter) -@bp.route('/grafana') -def install_grafana(): - try: - inv, server_ips = service_mod.generate_grafana_inv() - return service_mod.run_ansible(inv, server_ips, 'grafana'), 201 - except Exception as e: - return f'{e}' - - @bp.post('/waf//') def install_waf(service, server_ip): server_ip = common.is_ip_or_dns(server_ip) diff --git a/app/scripts/ansible/roles/grafana.yml b/app/scripts/ansible/roles/grafana.yml deleted file mode 100644 index a3eda312..00000000 --- a/app/scripts/ansible/roles/grafana.yml +++ /dev/null @@ -1,97 +0,0 @@ -- hosts: localhost - become: yes - become_method: sudo - roles: - - role: cloudalchemy.prometheus - environment: - http_proxy: "{{PROXY}}" - https_proxy: "{{PROXY}}" - vars: - prometheus_targets: - node: - - targets: - - "{{ansible_hostname}}:9100" - - - role: cloudalchemy.grafana - environment: - http_proxy: "{{PROXY}}" - https_proxy: "{{PROXY}}" - vars: - grafana_security: - admin_user: admin - admin_password: admin - grafana_datasources: - - name: prometheus - type: prometheus - url: "http://{{ansible_default_ipv4.address}}:9090" - basicAuth: false - grafana_dashboards: - - dashboard_id: 2428 - revision_id: 7 - datasource: prometheus - - dashboard_id: 11879 - revision_id: 3 - datasource: prometheus - - dashboard_id: 11074 - revision_id: 9 - datasource: prometheus - 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" ] - - - name: Ensure group "grafana" exists - ansible.builtin.group: - name: grafana - state: present - - - name: Add the Grafana user - user: - name: grafana - shell: /sbin/nologin - groups: grafana - append: yes - - - name: Create a directory if it does not exist - file: - path: "{{ item }}" - state: directory - mode: '0755' - owner: grafana - with_items: - - /var/lib/grafana - - /var/log/grafana - - /etc/grafana - - - name: Create grafana.ini - file: - path: /etc/grafana/grafana.ini - owner: grafana - group: grafana - mode: '0644' - state: touch - - - name: Restart service Grafana, in all cases - service: - name: grafana-server - state: restarted \ No newline at end of file diff --git a/app/templates/ajax/load_services.html b/app/templates/ajax/load_services.html index e1bf51cd..48f63a61 100644 --- a/app/templates/ajax/load_services.html +++ b/app/templates/ajax/load_services.html @@ -7,8 +7,6 @@ 'roxy-wi-smon': { 'name': 'SMON', 'desc': lang.admin_page.desc.smon_desc }, 'roxy-wi-socket': { 'name': 'Socket', 'desc': lang.admin_page.desc.socket_desc }, 'roxy-wi-prometheus-exporter': { 'name': 'Prometheus exporter', 'desc': 'Prometheus exporter exports Roxy-WI metrics' }, - 'prometheus': { 'name': 'Prometheus', 'desc': 'Prometheus server' }, - 'grafana-server': { 'name': 'Grafana', 'desc': 'Grafana server' }, 'fail2ban': { 'name': 'Fail2ban', 'desc': 'Fail2ban scans log files (e.g. /var/log/apache/error_log) and bans IPs that show the malicious signs' }, 'rabbitmq-server': { 'name': 'RabbitMQ', 'desc': 'RabbitMQ server' }, } @@ -41,9 +39,7 @@ {% if 'is not installed' in service.2['current_version'] or not service.2['current_version'] or service.2['current_version'] == '0' %} - {% if service.0 in ('prometheus', 'grafana-server') %} - {{lang.words.install|title()}} - {% elif service.0 in ('rabbitmq-server', 'fail2ban') %} + {% if service.0 in ('rabbitmq-server', 'fail2ban') %} {{lang.words.install|title()}} {% else %} {{lang.words.install|title()}} diff --git a/app/templates/install.html b/app/templates/install.html index c79181f2..0f4a294b 100644 --- a/app/templates/install.html +++ b/app/templates/install.html @@ -145,46 +145,12 @@ {% else %} - {% if g.user_params['role']|int() == 1 %} - - - - - - - - - - - - - - - - -

Grafana {{lang.words.and}} Prometheus {{lang.words.servers}}

{{lang.words.current2|title()}} {{lang.words.installation}}{{lang.words.available|title()}} {{lang.words.versions}}{{lang.words.note|title()}}
- {% if grafana == "active" %} - Grafana {{lang.words.and}} Prometheus {{lang.admin_page.desc.been_installed}} - {% else %} - {{lang.admin_page.desc.there_are_no}} - {% endif %} - - {{lang.admin_page.desc.latest_repo}} Grafana {{lang.words.and}} Prometheus - - {{lang.admin_page.desc.before_install}} Grafana {{lang.words.and}} Prometheus {{lang.words.servers}} - - {% if grafana != "active" %} - {{lang.words.install|title()}} - {% endif %} -
- {% endif %} - @@ -203,7 +169,6 @@ {% endfor %} - @@ -215,7 +180,6 @@ - @@ -234,7 +198,6 @@ {% endfor %} - @@ -246,7 +209,6 @@ - @@ -265,7 +227,6 @@ {% endfor %} - @@ -277,7 +238,6 @@ - @@ -296,7 +256,6 @@ {% endfor %} - @@ -308,7 +267,6 @@ - @@ -327,7 +285,6 @@ {% endfor %} - diff --git a/app/templates/languages/en.html b/app/templates/languages/en.html index 5ca555b0..abb0e489 100644 --- a/app/templates/languages/en.html +++ b/app/templates/languages/en.html @@ -430,7 +430,6 @@ "desc": { "latest_repo": "Roxy-WI will try to install the latest version of the service from the official repository", "install_as_docker": "Install service as a Docker container", - "ext_prom": "This exporter will be used by an external Prometheus. Also use this checkbox if you update the Exporter.", "no_ansible": "You have not installed", "before_install": "Before installing any exporters, first install", "been_installed": "servers have been installed", diff --git a/app/templates/languages/fr.html b/app/templates/languages/fr.html index 32b32081..ecb7d947 100644 --- a/app/templates/languages/fr.html +++ b/app/templates/languages/fr.html @@ -430,7 +430,6 @@ "desc": { "latest_repo": "Roxy-WI va essayer d\'installer la dernière version du service à partir du dépôt officiel.", "install_as_docker": "Installer le service comme un conteneur Docker", - "ext_prom": "Cet Exporter sera utilisé par un Prometheus externe. Utilisez également cette case à cocher si vous mettez à jour l\'Exporter", "no_ansible": "Vous ne l\'avez pas installé", "before_install": "Avant d\'installer l\'Exporter, installez le d\'abord", "been_installed": "les serveurs ont été installés", diff --git a/app/templates/languages/pt-br.html b/app/templates/languages/pt-br.html index 870f9707..7fae3694 100644 --- a/app/templates/languages/pt-br.html +++ b/app/templates/languages/pt-br.html @@ -430,7 +430,6 @@ "desc": { "latest_repo": "O Roxy-WI tentará instalar a versão mais recente do serviço do repositório oficial", "install_as_docker": "Instalar serviço como um container do Docker", - "ext_prom": "Este exportador será usado para um Prometheus externo. Usa este checkbox para atualizar o Exporter.", "no_ansible": "Você não instalou", "before_install": "Antes de instalar exportadores, primeiro instale", "been_installed": "servidores instalados", diff --git a/app/templates/languages/ru.html b/app/templates/languages/ru.html index 07769bd6..003dc94b 100644 --- a/app/templates/languages/ru.html +++ b/app/templates/languages/ru.html @@ -430,7 +430,6 @@ "desc": { "latest_repo": "Roxy-WI попытается установить последнюю версию сервиса из официального репозитория", "install_as_docker": "Установить сервис как контейнер Docker", - "ext_prom": "Этот экспортер будет использоваться внешним Prometheus. Также используйте этот флажок, если вы обновляете экспортер.", "no_ansible": "You have not installed", "before_install": "Прежде чем устанавливать какие-либо экспортеры, сначала установите", "been_installed": "сервера были установлены",

HAProxy Exporter

{{lang.words.current2|title()}} {{lang.words.installation}} {{lang.words.available|title()}} {{lang.words.versions}} {{lang.words.server|title()}}{{lang.words.external|title()}} Prometheus
{{ checkbox('haproxy_ext_prom', title=lang.admin_page.desc.ext_prom) }} {{lang.words.install|title()}} {{lang.words.current2|title()}} {{lang.words.installation}} {{lang.words.available|title()}} {{lang.words.versions}} {{lang.words.server|title()}}{{lang.words.external|title()}} Prometheus
{{ checkbox('nginx_ext_prom', title=lang.admin_page.desc.ext_prom) }} {{lang.words.install|title()}} {{lang.words.current2|title()}} {{lang.words.installation}} {{lang.words.available|title()}} {{lang.words.versions}} {{lang.words.server|title()}}{{lang.words.external|title()}} Prometheus
{{ checkbox('apache_ext_prom', title=lang.admin_page.desc.ext_prom) }} {{lang.words.install|title()}} {{lang.words.current2|title()}} {{lang.words.installation}} {{lang.words.available|title()}} {{lang.words.versions}} {{lang.words.server|title()}}{{lang.words.external|title()}} Prometheus
{{ checkbox('keepalived_ext_prom', title=lang.admin_page.desc.ext_prom) }} {{lang.words.install|title()}} {{lang.words.current2|title()}} {{lang.words.installation}} {{lang.words.available|title()}} {{lang.words.versions}} {{lang.words.server|title()}}{{lang.words.external|title()}} Prometheus
{{ checkbox('node_ext_prom', title=lang.admin_page.desc.ext_prom) }} {{lang.words.install|title()}}