Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import json
- import requests
- PROMETHEUS_IP = "192.168.0.121"
- PROMETHEUS_PORT = "9090"
- QUERY_METRIC = 'node_load5{instance=~"atlas-nsk-mysqldb-.*"}'
- url_metrics = "http://" + PROMETHEUS_IP + ":" + PROMETHEUS_PORT + "/api/v1/query?query=" + QUERY_METRIC
- max_load = 50
- session = requests.Session()
- call = getattr(session, 'get')
- res_metrics = call(url_metrics)
- if res_metrics.status_code == 200:
- print(f"Status: {res_metrics.status_code} OK")
- elif res_metrics.status_code == 400:
- print(f"Status: {res_metrics.status_code} Bad request. The request could not be understood by the server due to malformed syntax. ")
- exit(1)
- elif res_metrics.status_code == 401:
- print(f"Status: {res_metrics.status_code} Unauthorized ")
- exit(1)
- elif res_metrics.status_code == 403:
- print(f"Status: {res_metrics.status_code} Forbidden. The request was a legal request, but the server is refusing to respond to it. ")
- exit(1)
- elif res_metrics.status_code == 404:
- print(f"Status: {res_metrics.status_code} The requested resource could not be found.")
- exit(1)
- elif res_metrics.status_code == 500:
- print(f"Status: {res_metrics.status_code} Internal server error.")
- exit(1)
- binary = res_metrics.content
- output = json.loads(binary)
- # Вывожу данные в переменные + перевожу из значения str в float а затем округляю и перевожу в int
- for k in output['data']['result']:
- if k['metric']['instance'] == 'atlas-nsk-mysqldb-new-01':
- timestamp, v = k['value']
- f = float(v)
- MYSQLDB_NEW_01_VALUE = round(f)
- elif k['metric']['instance'] == 'atlas-nsk-mysqldb-02':
- timestamp, v = k['value']
- f = float(v)
- MYSQLDB_02_VALUE = round(f)
- elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-02':
- timestamp, v = k['value']
- f = float(v)
- MYSQLDB_SLAVE_02_VALUE = round(f)
- elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-03':
- timestamp, v = k['value']
- f = float(v)
- MYSQLDB_SLAVE_03_VALUE = round(f)
- elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-04':
- timestamp, v = k['value']
- f = float(v)
- MYSQLDB_SLAVE_04_VALUE = round(f)
- elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-05':
- timestamp, v = k['value']
- f = float(v)
- MYSQLDB_SLAVE_05_VALUE = round(f)
- elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-06':
- timestamp, v = k['value']
- f = float(v)
- MYSQLDB_SLAVE_06_VALUE = round(f)
- else:
- pass
- if MYSQLDB_NEW_01_VALUE < 0.001:
- MYSQLDB_NEW_01_VALUE = 0.001
- if MYSQLDB_NEW_01_VALUE > max_load:
- MYSQLDB_NEW_01_VALUE = max_load
- if MYSQLDB_02_VALUE < 0.001:
- MYSQLDB_02_VALUE = 0.001
- if MYSQLDB_02_VALUE > max_load:
- MYSQLDB_02_VALUE = max_load
- if MYSQLDB_SLAVE_02_VALUE < 0.001:
- MYSQLDB_SLAVE_02_VALUE = 0.001
- if MYSQLDB_SLAVE_02_VALUE > max_load:
- MYSQLDB_SLAVE_02_VALUE = max_load
- if MYSQLDB_SLAVE_03_VALUE < 0.001:
- MYSQLDB_SLAVE_03_VALUE = 0.001
- if MYSQLDB_SLAVE_03_VALUE > max_load:
- MYSQLDB_SAVEE_03_VALUE = max_load
- if MYSQLDB_SLAVE_04_VALUE < 0.001:
- MYSQLDB_SLAVE_04_VALUE = 0.001
- if MYSQLDB_SLAVE_04_VALUE > max_load:
- MYSQLDB_SAVEE_04_VALUE = max_load
- if MYSQLDB_SLAVE_05_VALUE < 0.001:
- MYSQLDB_SLAVE_05_VALUE = 0.001
- if MYSQLDB_SLAVE_05_VALUE > max_load:
- MYSQLDB_SAVEE_05_VALUE = max_load
- if MYSQLDB_SLAVE_06_VALUE < 0.001:
- MYSQLDB_SLAVE_06_VALUE = 0.001
- if MYSQLDB_SLAVE_06_VALUE > max_load:
- MYSQLDB_SAVEE_06_VALUE = max_load
- # Вычисляем веса по формуле для каждого инстанса и записываем значения в переменные
- MYSQLDB_NEW_01_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_NEW_01_VALUE ) ) + 1 )
- MYSQLDB_02_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_02_VALUE ) ) + 1 )
- MYSQLDB_SLAVE_02_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_02_VALUE ) ) + 1 )
- MYSQLDB_SLAVE_03_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_03_VALUE ) ) + 1 )
- MYSQLDB_SLAVE_04_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_04_VALUE ) ) + 1 )
- MYSQLDB_SLAVE_05_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_05_VALUE ) ) + 1 )
- MYSQLDB_SLAVE_06_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_06_VALUE ) ) + 1 )
- print(f"""MySQL Nodes:
- atlas-nsk-mysqldb-new-01 = LA: {MYSQLDB_NEW_01_VALUE}, WEIGHT: {MYSQLDB_NEW_01_WEIGHT}
- atlas-nsk-mysqldb-02 = LA: {MYSQLDB_02_VALUE}, WEIGHT: {MYSQLDB_02_WEIGHT}
- atlas-nsk-mysqldb-slave-02 = LA: {MYSQLDB_SLAVE_02_VALUE}, WEIGHT: {MYSQLDB_SLAVE_02_WEIGHT}
- atlas-nsk-mysqldb-slave-03 = LA: {MYSQLDB_SLAVE_03_VALUE}, WEIGHT: {MYSQLDB_SLAVE_03_WEIGHT}
- atlas-nsk-mysqldb-slave-04 = LA: {MYSQLDB_SLAVE_04_VALUE}, WEIGHT: {MYSQLDB_SLAVE_04_WEIGHT}
- atlas-nsk-mysqldb-slave-05 = LA: {MYSQLDB_SLAVE_05_VALUE}, WEIGHT: {MYSQLDB_SLAVE_05_WEIGHT}
- atlas-nsk-mysqldb-slave-06 = LA: {MYSQLDB_SLAVE_06_VALUE}, WEIGHT: {MYSQLDB_SLAVE_06_WEIGHT}""")
- # exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement