Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.23 KB | None | 0 0
  1. import wmi
  2. import psutil
  3. import boto3
  4. import datetime
  5.  
  6.  
  7. # Config boto3
  8. region = ""
  9. aws_key_id = ""
  10. aws_secret_key = ""
  11.  
  12.  
  13. c = wmi.WMI()
  14. client = boto3.client('cloudwatch', region_name=region, aws_access_key_id=aws_key_id, aws_secret_access_key=aws_secret_key)
  15.  
  16. cpu_percent = []
  17. ram_percent = []
  18. disk_percent = []
  19.  
  20. class Metrics:
  21.  
  22. def __init__(self):
  23. try:
  24. self.get_metrics()
  25. self.push_metrics_cpu()
  26. self.push_metrics_ram()
  27. self.push_metrics_disk()
  28. print "."
  29. except:
  30. print "Error"
  31.  
  32.  
  33. def get_metrics(self):
  34. """ Obtiene las metricas y las imprime por pantalla"""
  35. try:
  36. self.delete_elements_in_array()
  37. except:
  38. pass
  39.  
  40. for i in range(5):
  41. utilizations = [cpu.LoadPercentage for cpu in c.Win32_Processor()]
  42. percent_used_cpu = int(sum(utilizations) / len(utilizations))
  43. ram = psutil.virtual_memory()[2]
  44. disk = psutil.disk_usage('/')[3]
  45.  
  46. self.save_metrics(percent_used_cpu, ram, disk)
  47.  
  48. # print "CPU: {}%".format(percent_used_cpu)
  49. # print "RAM: {}%".format(ram)
  50. # print "Disk: {}% ".format(disk)
  51. # print "============"
  52.  
  53.  
  54. def delete_elements_in_array(self):
  55. """ Elimina todos los elementos de dentro de la array """
  56. for i in range(len(cpu_percent)):
  57. cpu_percent.pop()
  58. ram_percent.pop()
  59. disk_percent.pop()
  60.  
  61.  
  62. def save_metrics(self, cpu, ram, disk):
  63. """ Guarda las metricas en las array"""
  64. cpu_percent.append(cpu)
  65. ram_percent.append(ram)
  66. disk_percent.append(disk)
  67.  
  68.  
  69. def push_metrics_cpu(self):
  70. """ Sube las metricas de cpu a AWS """
  71. actual_date = datetime.datetime.utcnow()
  72.  
  73. response = client.put_metric_data(
  74. Namespace='Metricas',
  75. MetricData=[
  76. {
  77. 'MetricName': 'CPUUtilization',
  78. 'Dimensions': [
  79. {
  80. 'Name': 'InstanceId',
  81. 'Value': 'i-015d868e1a67641ae'
  82. },
  83. ],
  84. 'Timestamp': actual_date,
  85. 'StatisticValues': {
  86. 'SampleCount': 5,
  87. 'Sum': sum(cpu_percent),
  88. 'Minimum': min(cpu_percent),
  89. 'Maximum': max(cpu_percent)
  90. },
  91. },
  92. ]
  93. )
  94.  
  95. def push_metrics_ram(self):
  96. """ Sube las metricas de ram a AWS """
  97. actual_date = datetime.datetime.utcnow()
  98.  
  99. response = client.put_metric_data(
  100. Namespace='Metricas',
  101. MetricData=[
  102. {
  103. 'MetricName': 'MemoryUtilization',
  104. 'Dimensions': [
  105. {
  106. 'Name': 'InstanceId',
  107. 'Value': 'i-015d868e1a67641ae'
  108. },
  109. ],
  110. 'Timestamp': actual_date,
  111. 'StatisticValues': {
  112. 'SampleCount': 5,
  113. 'Sum': sum(ram_percent),
  114. 'Minimum': min(ram_percent),
  115. 'Maximum': max(ram_percent)
  116. },
  117. },
  118. ]
  119. )
  120.  
  121. def push_metrics_disk(self):
  122. """ Sube las metricas de dicso a AWS """
  123. actual_date = datetime.datetime.utcnow()
  124.  
  125. response = client.put_metric_data(
  126. Namespace='Metricas',
  127. MetricData=[
  128. {
  129. 'MetricName': 'C: DISK SPACE',
  130. 'Dimensions': [
  131. {
  132. 'Name': 'InstanceId',
  133. 'Value': 'i-015d868e1a67641ae'
  134. },
  135. ],
  136. 'Timestamp': actual_date,
  137. 'StatisticValues': {
  138. 'SampleCount': 5,
  139. 'Sum': sum(disk_percent),
  140. 'Minimum': min(disk_percent),
  141. 'Maximum': max(disk_percent)
  142. },
  143. },
  144. ]
  145. )
  146.  
  147.  
  148. Metrics()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement