GaugeMetricFamily('zstack_vip_in_bytes', 'VIP inbound traffic in bytes', labels=[VIP_LABEL_NAME]), 'zstack_vip_in_packages': GaugeMetricFamily('zstack_vip_in_packages', 'VIP inbound traffic packages', labels=[VIP_LABEL_NAME]) } for ip, (vip_uuid, vnic_ip) in eips.items(): collect(ip, vip_uuid, vnic_ip) return metrics.values() kvmagent.register_prometheus_collector(collect_vip_statistics) class DEip(kvmagent.KvmAgent): APPLY_EIP_PATH = "/flatnetworkprovider/eip/apply" DELETE_EIP_PATH = "/flatnetworkprovider/eip/delete" BATCH_APPLY_EIP_PATH = "/flatnetworkprovider/eip/batchapply" BATCH_DELETE_EIP_PATH = "/flatnetworkprovider/eip/batchdelete" def start(self): http_server = kvmagent.get_http_server() http_server.register_async_uri(self.APPLY_EIP_PATH, self.apply_eip) http_server.register_async_uri(self.BATCH_APPLY_EIP_PATH, self.apply_eips)
if bash_r("dmsetup table %s | grep multipath" % pv) == 0: multipath_wwid = bash_o("udevadm info -n %s | grep -E '^S: disk/by-id/dm-uuid' | awk -F '-' '{print $NF}'" % pv).strip() disks = linux.get_physical_disk(pv, False) for disk in disks: disk_name = disk.split("/")[-1].strip() wwids = bash_o("udevadm info -n %s | grep -E '^S: disk/by-id' | awk -F '/' '{print $NF}' | grep -v '^lvm-pv' | sort" % disk).strip().splitlines() if multipath_wwid is not None: wwids.append(multipath_wwid) if len(wwids) > 0: metrics['node_disk_wwid'].add_metric([disk_name, ";".join([w.strip() for w in wwids])], 1) collect_node_disk_wwid_last_result = metrics.values() return metrics.values() kvmagent.register_prometheus_collector(collect_host_network_statistics) kvmagent.register_prometheus_collector(collect_host_capacity_statistics) kvmagent.register_prometheus_collector(collect_vm_statistics) kvmagent.register_prometheus_collector(collect_node_disk_wwid) if misc.isMiniHost(): kvmagent.register_prometheus_collector(collect_lvm_capacity_statistics) kvmagent.register_prometheus_collector(collect_raid_state) kvmagent.register_prometheus_collector(collect_equipment_state) class PrometheusPlugin(kvmagent.KvmAgent): COLLECTD_PATH = "/prometheus/collectdexporter/start" @kvmagent.replyerror
eips[ip] = (vip_uuid, vnic_ip, version) VIP_LABEL_NAME = 'VipUUID' metrics = { 'zstack_vip_out_bytes': GaugeMetricFamily('zstack_vip_out_bytes', 'VIP outbound traffic in bytes', labels=[VIP_LABEL_NAME]), 'zstack_vip_out_packages': GaugeMetricFamily('zstack_vip_out_packages', 'VIP outbound traffic packages', labels=[VIP_LABEL_NAME]), 'zstack_vip_in_bytes': GaugeMetricFamily('zstack_vip_in_bytes', 'VIP inbound traffic in bytes', labels=[VIP_LABEL_NAME]), 'zstack_vip_in_packages': GaugeMetricFamily('zstack_vip_in_packages', 'VIP inbound traffic packages', labels=[VIP_LABEL_NAME]) } for ip, (vip_uuid, vnic_ip, version) in eips.items(): collect(ip, vip_uuid, vnic_ip, version) return metrics.values() kvmagent.register_prometheus_collector(collect_vip_statistics) class DEip(kvmagent.KvmAgent): APPLY_EIP_PATH = "/flatnetworkprovider/eip/apply" DELETE_EIP_PATH = "/flatnetworkprovider/eip/delete" BATCH_APPLY_EIP_PATH = "/flatnetworkprovider/eip/batchapply" BATCH_DELETE_EIP_PATH = "/flatnetworkprovider/eip/batchdelete" def start(self): http_server = kvmagent.get_http_server() http_server.register_async_uri(self.APPLY_EIP_PATH, self.apply_eip) http_server.register_async_uri(self.BATCH_APPLY_EIP_PATH, self.apply_eips) http_server.register_async_uri(self.DELETE_EIP_PATH, self.delete_eip) http_server.register_async_uri(self.BATCH_DELETE_EIP_PATH, self.delete_eips)
'ZStack used capacity in bytes') } zstack_used_capacity = 0 for dir in zstack_dir: if not os.path.exists(dir): continue cmd = "du -bs %s | awk {\'print $1\'}" % dir res = bash_o(cmd) zstack_used_capacity += int(res) metrics['zstack_used_capacity_in_bytes'].add_metric([], float(zstack_used_capacity)) return metrics.values() kvmagent.register_prometheus_collector(collect_host_network_statistics) kvmagent.register_prometheus_collector(collect_host_capacity_statistics) class PrometheusPlugin(kvmagent.KvmAgent): COLLECTD_PATH = "/prometheus/collectdexporter/start" @kvmagent.replyerror @in_bash def start_collectd_exporter(self, req): @in_bash def start_exporter(cmd): conf_path = os.path.join(os.path.dirname(cmd.binaryPath), 'collectd.conf') conf = '''Interval {{INTERVAL}}