// Aula 13 - Criando uma HTTP Service Discovery parte 2 # pip install Flask-BasicAuth # cd /etc/prometheus/ # openssl genrsa -out chave_privada.pem 2048 # openssl req -new -x509 -sha256 -key chave_privada.pem -out certificado_publico.pem -days 365 Agora, temos que editar o arquivo 'prometheus.yml' e atualizar todo o seu 'job_name': - job_name: servicos http_sd_configs: - url: https://192.168.15.141:8080/servicos basic_auth: username: 'usuario' password: 'senha' tls_config: insecure_skip_verify: true metrics_path: '/servicos' scheme: 'https' relabel_configs: - source_labels: [__address__] target_label: instance # sudo systemctl restart prometheus # curl -X POST -H "Content-Type: application/json" -d '{"targets": [ "windows2012:9100", "windows2016:9100" ], "labels": {"team": "servidor", "job": "windows"}' -u usuario:senha https://192.168.15.141:8080/servicos --insecure O arquivo completo ficou assim: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- # httpsd.py import ssl import os from flask import Flask, jsonify, request from flask_basicauth import BasicAuth from servicos import servicos app = Flask(__name__) app.config['BASIC_AUTH_USERNAME'] = 'usuario' app.config['BASIC_AUTH_PASSWORD'] = 'senha' basic_auth = BasicAuth(app) # Adicionar um novo serviço novo_servico = { "targets": [ "windows2008:9100", "windows2022:9100" ], "labels": { "team": "banco de dados", "job": "windows" } } servicos.append(novo_servico) # Imprimir a lista atualizada de serviços print(servicos) @app.route('/servicos', methods=['GET']) @basic_auth.required def listar_servicos(): return jsonify(servicos) @app.route('/servicos', methods=['POST']) def adicionar_servico(): novo_servico = request.json servicos.append(novo_servico) return jsonify(novo_servico) ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS) cert_file = os.path.join(os.path.dirname(__file__), 'certificado_publico.pem') key_file = os.path.join(os.path.dirname(__file__), 'chave_privada.pem') ssl_context.load_cert_chain(cert_file, key_file) if __name__ == '__main__': app.run(host='0.0.0.0', port=8080, ssl_context=ssl_context) Arquivo "servicos.py": #!/usr/bin/env python3 # -*- coding: UTF-8 -*- # servicos.py servicos = [ { "targets": [ "windows2012:9100", "rockylinux1:9100" ], "labels": { "team": "infra", "job": "windows" } }, { "targets": [ "ubuntuserver:9090" ], "labels": { "team": "monitoring", "job": "prometheus" } } ]