Advertisement
Guest User

Untitled

a guest
Aug 22nd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 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. # Вывожу данные в переменные + перевожу из значения str в float а затем округляю и перевожу в int
  37. for k in output['data']['result']:
  38. if k['metric']['instance'] == 'atlas-nsk-mysqldb-new-01':
  39. timestamp, v = k['value']
  40. f = float(v)
  41. MYSQLDB_NEW_01_VALUE = round(f)
  42. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-02':
  43. timestamp, v = k['value']
  44. f = float(v)
  45. MYSQLDB_02_VALUE = round(f)
  46. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-02':
  47. timestamp, v = k['value']
  48. f = float(v)
  49. MYSQLDB_SLAVE_02_VALUE = round(f)
  50. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-03':
  51. timestamp, v = k['value']
  52. f = float(v)
  53. MYSQLDB_SLAVE_03_VALUE = round(f)
  54. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-04':
  55. timestamp, v = k['value']
  56. f = float(v)
  57. MYSQLDB_SLAVE_04_VALUE = round(f)
  58. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-05':
  59. timestamp, v = k['value']
  60. f = float(v)
  61. MYSQLDB_SLAVE_05_VALUE = round(f)
  62. elif k['metric']['instance'] == 'atlas-nsk-mysqldb-slave-06':
  63. timestamp, v = k['value']
  64. f = float(v)
  65. MYSQLDB_SLAVE_06_VALUE = round(f)
  66. else:
  67. pass
  68.  
  69. if MYSQLDB_NEW_01_VALUE < 0.001:
  70. MYSQLDB_NEW_01_VALUE = 0.001
  71. if MYSQLDB_NEW_01_VALUE > max_load:
  72. MYSQLDB_NEW_01_VALUE = max_load
  73.  
  74. if MYSQLDB_02_VALUE < 0.001:
  75. MYSQLDB_02_VALUE = 0.001
  76. if MYSQLDB_02_VALUE > max_load:
  77. MYSQLDB_02_VALUE = max_load
  78.  
  79. if MYSQLDB_SLAVE_02_VALUE < 0.001:
  80. MYSQLDB_SLAVE_02_VALUE = 0.001
  81. if MYSQLDB_SLAVE_02_VALUE > max_load:
  82. MYSQLDB_SLAVE_02_VALUE = max_load
  83.  
  84. if MYSQLDB_SLAVE_03_VALUE < 0.001:
  85. MYSQLDB_SLAVE_03_VALUE = 0.001
  86. if MYSQLDB_SLAVE_03_VALUE > max_load:
  87. MYSQLDB_SAVEE_03_VALUE = max_load
  88.  
  89. if MYSQLDB_SLAVE_04_VALUE < 0.001:
  90. MYSQLDB_SLAVE_04_VALUE = 0.001
  91. if MYSQLDB_SLAVE_04_VALUE > max_load:
  92. MYSQLDB_SAVEE_04_VALUE = max_load
  93.  
  94. if MYSQLDB_SLAVE_05_VALUE < 0.001:
  95. MYSQLDB_SLAVE_05_VALUE = 0.001
  96. if MYSQLDB_SLAVE_05_VALUE > max_load:
  97. MYSQLDB_SAVEE_05_VALUE = max_load
  98.  
  99. if MYSQLDB_SLAVE_06_VALUE < 0.001:
  100. MYSQLDB_SLAVE_06_VALUE = 0.001
  101. if MYSQLDB_SLAVE_06_VALUE > max_load:
  102. MYSQLDB_SAVEE_06_VALUE = max_load
  103.  
  104.  
  105. # Вычисляем веса по формуле для каждого инстанса и записываем значения в переменные
  106. MYSQLDB_NEW_01_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_NEW_01_VALUE ) ) + 1 )
  107. MYSQLDB_02_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_02_VALUE ) ) + 1 )
  108. MYSQLDB_SLAVE_02_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_02_VALUE ) ) + 1 )
  109. MYSQLDB_SLAVE_03_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_03_VALUE ) ) + 1 )
  110. MYSQLDB_SLAVE_04_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_04_VALUE ) ) + 1 )
  111. MYSQLDB_SLAVE_05_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_05_VALUE ) ) + 1 )
  112. MYSQLDB_SLAVE_06_WEIGHT = int( ( (255 / max_load) * ( ( max_load + 0.001 ) - MYSQLDB_SLAVE_06_VALUE ) ) + 1 )
  113.  
  114. print(f"""MySQL Nodes:
  115. atlas-nsk-mysqldb-new-01 = LA: {MYSQLDB_NEW_01_VALUE}, WEIGHT: {MYSQLDB_NEW_01_WEIGHT}
  116. atlas-nsk-mysqldb-02 = LA: {MYSQLDB_02_VALUE}, WEIGHT: {MYSQLDB_02_WEIGHT}
  117. atlas-nsk-mysqldb-slave-02 = LA: {MYSQLDB_SLAVE_02_VALUE}, WEIGHT: {MYSQLDB_SLAVE_02_WEIGHT}
  118. atlas-nsk-mysqldb-slave-03 = LA: {MYSQLDB_SLAVE_03_VALUE}, WEIGHT: {MYSQLDB_SLAVE_03_WEIGHT}
  119. atlas-nsk-mysqldb-slave-04 = LA: {MYSQLDB_SLAVE_04_VALUE}, WEIGHT: {MYSQLDB_SLAVE_04_WEIGHT}
  120. atlas-nsk-mysqldb-slave-05 = LA: {MYSQLDB_SLAVE_05_VALUE}, WEIGHT: {MYSQLDB_SLAVE_05_WEIGHT}
  121. atlas-nsk-mysqldb-slave-06 = LA: {MYSQLDB_SLAVE_06_VALUE}, WEIGHT: {MYSQLDB_SLAVE_06_WEIGHT}""")
  122. # exit(0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement