mirror of
https://github.com/recklessop/Zerto_Exporter.git
synced 2026-07-03 07:53:15 -04:00
updates for docker environments
This commit is contained in:
+11
-1
@@ -4,6 +4,16 @@ EXPOSE 9999
|
|||||||
|
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
COPY app/* /usr/src/app/
|
# Set PYTHONPATH to include /usr/src/app
|
||||||
|
ENV PYTHONPATH=/usr/src/app
|
||||||
|
|
||||||
|
# Copy the zerto exporter into the container
|
||||||
|
COPY app /usr/src/app/
|
||||||
|
|
||||||
|
# Delete uuid.txt file if it exists
|
||||||
|
RUN [ -f uuid.txt ] && rm uuid.txt || echo "No uuid.txt file to delete"
|
||||||
|
|
||||||
RUN pip install --no-cache-dir -r requirements.txt
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
# Entry point for the container
|
||||||
|
CMD ["python", "python-node-exporter.py"]
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
[pypi]
|
||||||
|
username = __token__
|
||||||
|
password = pypi-AgEIcHlwaS5vcmcCJDZlMmZlNTc4LTI2NTgtNDVlZS04MDA2LTVmMGUzNTQyMzFmZAACKlszLCJjNTQzODQ3Yy1iOGQ1LTQwZDAtOTU5Yy0zNWIxNGVmM2NhNjkiXQAABiBdsEOQWVnk-qd-erTO48YJLKxiztWySeNQ45V6y45fkw
|
||||||
-59
@@ -1,59 +0,0 @@
|
|||||||
from pyVim.connect import SmartConnect, Disconnect
|
|
||||||
from pyVmomi import vim, vmodl
|
|
||||||
import ssl
|
|
||||||
|
|
||||||
# Create an SSL context without certificate verification
|
|
||||||
context = ssl.create_default_context()
|
|
||||||
context.check_hostname = False
|
|
||||||
context.verify_mode = ssl.CERT_NONE
|
|
||||||
|
|
||||||
si = SmartConnect(host='192.168.50.50',
|
|
||||||
user='administrator@vsphere.local',
|
|
||||||
pwd='Zertodata987!',
|
|
||||||
sslContext=context
|
|
||||||
)
|
|
||||||
|
|
||||||
# Find the virtual machine by name
|
|
||||||
vm_name = 'Squid'
|
|
||||||
content = si.RetrieveContent()
|
|
||||||
vm = None
|
|
||||||
|
|
||||||
for obj in content.viewManager.CreateContainerView(content.rootFolder, [vim.VirtualMachine], True).view:
|
|
||||||
if obj.name == vm_name:
|
|
||||||
vm = obj
|
|
||||||
break
|
|
||||||
|
|
||||||
if vm is None:
|
|
||||||
print(f"Virtual machine '{vm_name}' not found")
|
|
||||||
si.Disconnect()
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
# Get performance manager
|
|
||||||
perf_manager = content.perfManager
|
|
||||||
|
|
||||||
# Define the metric ID for write IOPS (counterId = 6)
|
|
||||||
metric_id = vim.PerformanceManager.MetricId(counterId=6, instance="")
|
|
||||||
|
|
||||||
# Create a real-time query specification
|
|
||||||
query_spec = vim.PerformanceManager.QuerySpec(
|
|
||||||
entity=vm,
|
|
||||||
metricId=[metric_id],
|
|
||||||
format="normal",
|
|
||||||
)
|
|
||||||
|
|
||||||
# Query the performance statistics
|
|
||||||
result = perf_manager.QueryStats(querySpec=[query_spec])
|
|
||||||
|
|
||||||
if result:
|
|
||||||
# Get the latest write IOPS value
|
|
||||||
write_iops = result[0].value[0].value
|
|
||||||
print(f"Current write IOPS for {vm_name}: {write_iops}")
|
|
||||||
|
|
||||||
# Disconnect from vCenter Server
|
|
||||||
Disconnect(si)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -42,8 +42,6 @@ vcenter_host = os.environ.get('VCENTER_HOST', '192.168.50.50')
|
|||||||
vcenter_user = os.environ.get('VCENTER_USER', 'administrator@vsphere.local')
|
vcenter_user = os.environ.get('VCENTER_USER', 'administrator@vsphere.local')
|
||||||
vcenter_pwd = os.environ.get('VCENTER_PASSWORD', 'Zertodata987!')
|
vcenter_pwd = os.environ.get('VCENTER_PASSWORD', 'Zertodata987!')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Thread which gets VM level encryption statistics from ZVM API
|
# Thread which gets VM level encryption statistics from ZVM API
|
||||||
|
|
||||||
def GetStatsFunc(zvm_instance):
|
def GetStatsFunc(zvm_instance):
|
||||||
@@ -137,10 +135,10 @@ def GetStatsFunc(zvm_instance):
|
|||||||
metricsDictionary["vm_WriteCounterInMBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentWriteCounterInMBs
|
metricsDictionary["vm_WriteCounterInMBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentWriteCounterInMBs
|
||||||
metricsDictionary["vm_SyncCounterInMBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentSyncCounterInMBs
|
metricsDictionary["vm_SyncCounterInMBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentSyncCounterInMBs
|
||||||
metricsDictionary["vm_NetworkTrafficCounterInMBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentNetworkTrafficCounterInMBs
|
metricsDictionary["vm_NetworkTrafficCounterInMBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentNetworkTrafficCounterInMBs
|
||||||
#metricsDictionary["vm_EncryptedDataInLBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentEncryptedLBs
|
metricsDictionary["vm_EncryptedDataInLBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentEncryptedLBs
|
||||||
#metricsDictionary["vm_UnencryptedDataInLBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentUnencryptedLBs
|
metricsDictionary["vm_UnencryptedDataInLBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentUnencryptedLBs
|
||||||
#metricsDictionary["vm_TotalDataInLBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentTotalLBs
|
metricsDictionary["vm_TotalDataInLBs{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentTotalLBs
|
||||||
#metricsDictionary["vm_PercentEncrypted{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentPercentEncrypted
|
metricsDictionary["vm_PercentEncrypted{VpgIdentifier=\"" + vm['VpgIdentifier'] + "\",VmIdentifier=\"" + vm['VmIdentifier'] + "\",VmName=\"" + str(vm['VmName']) + "\",SiteIdentifier=\"" + siteId + "\",SiteName=\"" + siteName + "\"}"] = CurrentPercentEncrypted
|
||||||
else:
|
else:
|
||||||
log.debug(f"VM is only recovering to this site, skipping metrics - {vm['VmIdentifier']}")
|
log.debug(f"VM is only recovering to this site, skipping metrics - {vm['VmIdentifier']}")
|
||||||
#print(f"VM is only recovering to this site, skipping metrics - {vm['VmIdentifier']}")
|
#print(f"VM is only recovering to this site, skipping metrics - {vm['VmIdentifier']}")
|
||||||
|
|||||||
+1
-2
@@ -3,7 +3,6 @@ version: "3.3"
|
|||||||
services:
|
services:
|
||||||
zerto-exporter:
|
zerto-exporter:
|
||||||
build: .
|
build: .
|
||||||
command: python python-node-exporter.py
|
|
||||||
ports:
|
ports:
|
||||||
- "9999:9999"
|
- "9999:9999"
|
||||||
environment:
|
environment:
|
||||||
@@ -17,4 +16,4 @@ services:
|
|||||||
- VCENTER_USER=administrator@vsphere.local
|
- VCENTER_USER=administrator@vsphere.local
|
||||||
- VCENTER_PASSWORD=Zertodata987!
|
- VCENTER_PASSWORD=Zertodata987!
|
||||||
volumes:
|
volumes:
|
||||||
- "./app:/usr/src/app:rw"
|
- "./logs:/usr/src/app/logs/"
|
||||||
|
|||||||
Reference in New Issue
Block a user