From 891c51a278a7aeb4957fabbee4bc8c975392c7db Mon Sep 17 00:00:00 2001 From: rasmus Date: Tue, 29 Dec 2020 20:59:48 +0200 Subject: [PATCH] Add git hash to metrics. --- prom.py | 9 ++++++++- prom_servers.py | 9 +++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/prom.py b/prom.py index 17f0e67..4ae5237 100644 --- a/prom.py +++ b/prom.py @@ -15,11 +15,18 @@ import os # for ENV arguments import scraperMain, prom_servers +### ENV Vars ### hostname = str(os.environ['SSH_HOSTNAME']) encname = str(os.environ['ENC_NAME']) sshkeypath = os.getenv('SSH_KEYPATH','/bss/.ssh/id_rsa') PREFIX = os.getenv('PREFIX','bladetest_') +### Get git hash ### +with open('.git/HEAD', 'r') as file: + current_branch = file.read().replace('\n', '').replace('ref: ', '') +with open('.git/' + current_branch, 'r') as file: + git_hash = file.read().replace('\n', '') + ### FLASK ### app = Flask(__name__) @app.route('/metrics', methods=['GET']) @@ -29,6 +36,6 @@ def parse_request(): # If somebody accesses us #with open("prom_servers.out", "a") as f: # DO NOT UNCOMMENT IN PROD # print(data, file=f) - response_list = prom_servers.prom_servers(PREFIX, data[0], data[1]) # Convert our python lists to prometheus format whatever. + response_list = prom_servers.prom_servers(git_hash, PREFIX, data[0], data[1]) # Convert our python lists to prometheus format whatever. response = '\n'.join(response_list) # Oh you still don't want a list? Fine, newlines! return Response(response + '\n', mimetype='text/plain') # The pizza is already cold. diff --git a/prom_servers.py b/prom_servers.py index 7f3b675..1050d36 100644 --- a/prom_servers.py +++ b/prom_servers.py @@ -21,8 +21,10 @@ def prom_header(desc, item, promtype): return(item) -def prom_servers(PREFIX, baysInUseCount, servers): +def prom_servers(git_hash, PREFIX, baysInUseCount, servers): # Input validation + if not type(git_hash) is str: + raise TypeError("git_hash: desc must be a string, '" + str(git_hash) + "' is not.") if not type(baysInUseCount) is int: raise TypeError("parseServers: baysInUseCount must be an integer, '" + str(baysInUseCount) + "' is not.") if not type(servers) is list: @@ -99,6 +101,8 @@ def prom_servers(PREFIX, baysInUseCount, servers): prom_disp_servers = prom_disp_servers + prom_header('Number of blades with bad health.', errorsHealth_prom, 'counter') errors_prom = [PREFIX + 'errors_total{} ' + str(float(errors))] prom_disp_servers = prom_disp_servers + prom_header('Number of errors or warnings encountered during the gathering of data see logs of promServers in blade-ssh-scraper', errors_prom, 'counter') + prom_git_hash = [PREFIX + 'info{git_hash="' + git_hash + '"} 1.0'] + prom_disp_servers = prom_disp_servers + prom_header('Git hash of HEAD on current branch, version', prom_git_hash, 'gauge') #prom_disp_servers = '\n'.join(prom_disp_servers) #breakpoint() @@ -106,10 +110,11 @@ def prom_servers(PREFIX, baysInUseCount, servers): return(prom_disp_servers) # Test data +#git_hash = 'fakegithash' #PREFIX = 'bladetest_' #baysInUseCount = 11 # 0~ 1~ 2~ 3~ 4~ 5~ 6~ 7~ 8~ # [BayNumber "Server Name", "Serial Number", "Status", "Power", "UID Partner", presentPowerDirectDC, relativeUsageAC, "encname"] #servers = [[1, 'foo-lab-1', '', 'OK', 'On', 'Off', 142, 222, "k-space-blade-02"], [2, 'foo-lab-2', 'CZ302243P9', 'OK', 'On', 'Off', 87, 136, "k-space-blade-02"], [3, 'foo-lab-3', 'CZJI441OKP', 'Failed', 'On', 'Off', 127, 198, "k-space-blade-02"], [4, 'kspve1', 'CZJ18450FK', 'OK', 'On', 'Off', 86, 134, "k-space-blade-02"], [5, 'kspve2-2', '', 'OK', 'On', 'Off', 71, 111, "k-space-blade-02"], [6, 'kspve3', '', 'OK', 'On', 'Off', 80, 125, "k-space-blade-02"], [7, 'foo-blade', '', 'OK', 'On', 'Off', 81, 127, "k-space-blade-02"], [8, 'Bar-01', 'CZ241274CC', 'OK', 'On', 'Off', 126, 197, "k-space-blade-02"], [9, 'baz-sar', 'CZ3217FNYE', 'OK', 'On', 'Off', 129, 202, "k-space-blade-02"], [10, 'baz-sar2', 'CZ3217FFSS', 'OK', 'On', 'Off', 97, 152, "k-space-blade-02"], [12, 'bee-bar', '', 'OK', 'On', 'Off', 86, 134, "k-space-blade-02"]] -#print(prom_servers(PREFIX, baysInUseCount, servers)) +#print(prom_servers(git_hash, PREFIX, baysInUseCount, servers))