Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.09 KB | None | 0 0
  1. import sys
  2. import json
  3. import requests
  4.  
  5. PROMETHEUS_IP = "192.168.0.121"
  6. PROMETHEUS_PORT = "9090"
  7. QUERY_METRIC = 'node_load5{instance=~"atlas-nsk-mysqldb-.*"}'
  8. url_metrics = "http://" + PROMETHEUS_IP + ":" + PROMETHEUS_PORT + "/api/v1/query?query=" + QUERY_METRIC
  9. max_load = 50
  10.  
  11. session = requests.Session()
  12.  
  13. call = getattr(session, 'get')
  14. res_metrics = call(url_metrics)
  15.  
  16. if res_metrics.status_code == 200:
  17. print(f"Status: {res_metrics.status_code} OK")
  18. elif res_metrics.status_code == 400:
  19. print(f"Status: {res_metrics.status_code} Bad request. The request could not be understood by the server due to malformed syntax. ")
  20. exit(1)
  21. elif res_metrics.status_code == 401:
  22. print(f"Status: {res_metrics.status_code} Unauthorized ")
  23. exit(1)
  24. elif res_metrics.status_code == 403:
  25. print(f"Status: {res_metrics.status_code} Forbidden. The request was a legal request, but the server is refusing to respond to it. ")
  26. exit(1)
  27. elif res_metrics.status_code == 404:
  28. print(f"Status: {res_metrics.status_code} The requested resource could not be found.")
  29. exit(1)
  30. elif res_metrics.status_code == 500:
  31. print(f"Status: {res_metrics.status_code} Internal server error.")
  32. exit(1)
  33.  
  34. binary = res_metrics.content
  35. output = json.loads(binary)
  36. # Вывожу данные из JSON в переменные + конвертирую значения str в float
  37. for k in output['data']['result']:
  38. if k['metric']['instance'] == 'atlas-nsk-mysqldb-new-01':
  39. timestamp, v = k['value']
  40. MYSQLDB_NEW_01_VALUE = float(v)
  41. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-02':
  42. timestamp, v = k['value']
  43. MYSQLDB_02_VALUE = float(v)
  44. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-02':
  45. timestamp, v = k['value']
  46. f = float(v)
  47. MYSQLDB_SLAVE_02_VALUE = float(v)
  48. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-03':
  49. timestamp, v = k['value']
  50. MYSQLDB_SLAVE_03_VALUE = float(v)
  51. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-04':
  52. timestamp, v = k['value']
  53. MYSQLDB_SLAVE_04_VALUE = float(v)
  54. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-05':
  55. timestamp, v = k['value']
  56. MYSQLDB_SLAVE_05_VALUE = float(v)
  57. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-06':
  58. timestamp, v = k['value']
  59. MYSQLDB_SLAVE_06_VALUE = float(v)
  60. else:
  61. pass
  62.  
  63. if MYSQLDB_NEW_01_VALUE < 0.001:
  64. MYSQLDB_NEW_01_VALUE = 0.001
  65. if MYSQLDB_NEW_01_VALUE > max_load:
  66. MYSQLDB_NEW_01_VALUE = max_load
  67.  
  68. if MYSQLDB_02_VALUE < 0.001:
  69. MYSQLDB_02_VALUE = 0.001
  70. if MYSQLDB_02_VALUE > max_load:
  71. MYSQLDB_02_VALUE = max_load
  72.  
  73. if MYSQLDB_SLAVE_02_VALUE < 0.001:
  74. MYSQLDB_SLAVE_02_VALUE = 0.001
  75. if MYSQLDB_SLAVE_02_VALUE > max_load:
  76. MYSQLDB_SLAVE_02_VALUE = max_load
  77.  
  78. if MYSQLDB_SLAVE_03_VALUE < 0.001:
  79. MYSQLDB_SLAVE_03_VALUE = 0.001
  80. if MYSQLDB_SLAVE_03_VALUE > max_load:
  81. MYSQLDB_SAVEE_03_VALUE = max_load
  82.  
  83. if MYSQLDB_SLAVE_04_VALUE < 0.001:
  84. MYSQLDB_SLAVE_04_VALUE = 0.001
  85. if MYSQLDB_SLAVE_04_VALUE > max_load:
  86. MYSQLDB_SAVEE_04_VALUE = max_load
  87.  
  88. if MYSQLDB_SLAVE_05_VALUE < 0.001:
  89. MYSQLDB_SLAVE_05_VALUE = 0.001
  90. if MYSQLDB_SLAVE_05_VALUE > max_load:
  91. MYSQLDB_SAVEE_05_VALUE = max_load
  92.  
  93. if MYSQLDB_SLAVE_06_VALUE < 0.001:
  94. MYSQLDB_SLAVE_06_VALUE = 0.001
  95. if MYSQLDB_SLAVE_06_VALUE > max_load:
  96. MYSQLDB_SAVEE_06_VALUE = max_load
  97.  
  98.  
  99. # Вычисляем веса по формуле для каждого инстанса и записываем значения в переменные
  100. MYSQLDB_NEW_01_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_NEW_01_VALUE ) ) + 1 )
  101. MYSQLDB_02_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_02_VALUE ) ) + 1 )
  102. MYSQLDB_SLAVE_02_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_02_VALUE ) ) + 1 )
  103. MYSQLDB_SLAVE_03_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_03_VALUE ) ) + 1 )
  104. MYSQLDB_SLAVE_04_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_04_VALUE ) ) + 1 )
  105. MYSQLDB_SLAVE_05_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_05_VALUE ) ) + 1 )
  106. MYSQLDB_SLAVE_06_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_06_VALUE ) ) + 1 )
  107.  
  108. print(f"""MySQL Nodes:
  109. atlas-nsk-mysqldb-new-01 = LA: {MYSQLDB_NEW_01_VALUE}, WEIGHT: {MYSQLDB_NEW_01_WEIGHT}
  110. atlas-nsk-mysqldb-02 = LA: {MYSQLDB_02_VALUE}, WEIGHT: {MYSQLDB_02_WEIGHT}
  111. atlas-nsk-mysqldb-slave-02 = LA: {MYSQLDB_SLAVE_02_VALUE}, WEIGHT: {MYSQLDB_SLAVE_02_WEIGHT}
  112. atlas-nsk-mysqldb-slave-03 = LA: {MYSQLDB_SLAVE_03_VALUE}, WEIGHT: {MYSQLDB_SLAVE_03_WEIGHT}
  113. atlas-nsk-mysqldb-slave-04 = LA: {MYSQLDB_SLAVE_04_VALUE}, WEIGHT: {MYSQLDB_SLAVE_04_WEIGHT}
  114. atlas-nsk-mysqldb-slave-05 = LA: {MYSQLDB_SLAVE_05_VALUE}, WEIGHT: {MYSQLDB_SLAVE_05_WEIGHT}
  115. atlas-nsk-mysqldb-slave-06 = LA: {MYSQLDB_SLAVE_06_VALUE}, WEIGHT: {MYSQLDB_SLAVE_06_WEIGHT}""")
  116. # exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement