diff --git a/Dockerfile b/Dockerfile index cfcf1fc..ae683c4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,16 @@ EXPOSE 9999 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 + +# Entry point for the container +CMD ["python", "python-node-exporter.py"] \ No newline at end of file diff --git a/app/.pypirc b/app/.pypirc new file mode 100644 index 0000000..3128b30 --- /dev/null +++ b/app/.pypirc @@ -0,0 +1,3 @@ +[pypi] + username = __token__ + password = pypi-AgEIcHlwaS5vcmcCJDZlMmZlNTc4LTI2NTgtNDVlZS04MDA2LTVmMGUzNTQyMzFmZAACKlszLCJjNTQzODQ3Yy1iOGQ1LTQwZDAtOTU5Yy0zNWIxNGVmM2NhNjkiXQAABiBdsEOQWVnk-qd-erTO48YJLKxiztWySeNQ45V6y45fkw diff --git a/app/iops.py b/app/iops.py deleted file mode 100644 index d9d8750..0000000 --- a/app/iops.py +++ /dev/null @@ -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) - - - - - - diff --git a/app/python-node-exporter.py b/app/python-node-exporter.py index 2cb941e..eddfd64 100644 --- a/app/python-node-exporter.py +++ b/app/python-node-exporter.py @@ -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_pwd = os.environ.get('VCENTER_PASSWORD', 'Zertodata987!') - - # Thread which gets VM level encryption statistics from ZVM API 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_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_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_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_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_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 else: 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']}") diff --git a/docker-compose.yml b/docker-compose.yml index 4be15f5..f75259b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,7 +3,6 @@ version: "3.3" services: zerto-exporter: build: . - command: python python-node-exporter.py ports: - "9999:9999" environment: @@ -17,4 +16,4 @@ services: - VCENTER_USER=administrator@vsphere.local - VCENTER_PASSWORD=Zertodata987! volumes: - - "./app:/usr/src/app:rw" + - "./logs:/usr/src/app/logs/"