Пример #1
0
class VersionCollector(Collector):

    def __init__(self, artifactory):
        super().__init__(artifactory)
        self.name = "version_collector"
        self.version_gauge = Gauge("artifactory_system_version", "Artifactory version", ["version"])

    def run(self):
        data = self._artifactory.get_version()
        self.version_gauge.labels(data["version"]).set(data["revision"])
        return self.version_gauge.collect()
Пример #2
0
class UserCollector(Collector):

    def __init__(self, artifactory):
        super().__init__(artifactory)
        self.name = "user_collector"
        self.user_gauge = Gauge("artifactory_users", "Number of users", ["realm"])

    def run(self):
        logging.debug("Starting collect storage info...")
        users = self._artifactory.get_users()
        internal = 0
        ldap = 0
        for u in users:
            if u["realm"] == "internal":
                internal += 1
            elif u["realm"] == "ldap":
                ldap += 1
        self.user_gauge.labels("internal").set(internal)
        self.user_gauge.labels("ldap").set(ldap)
        return self.user_gauge.collect()
Пример #3
0
class StorageInfoCollector(Collector):

    def __init__(self, artifactory):
        super().__init__(artifactory)
        self.name = "storage_collector"
        self.binaries_count = Gauge("artifactory_storage_binaries_count",
                                    "Number of binaries")
        self.binaries_size = Gauge("artifactory_storage_binaries_size_megabytes",
                                   "Total size of binaries (MB)")
        self.artifacts_size = Gauge("artifactory_storage_artifacts_size_megabytes",
                                    "Total size of artifacts (MB)")
        self.artifacts_count = Gauge("artifactory_storage_artifacts_count",
                                     "The total number of artifacts pointing to "
                                     "the physical binaries stored on the system")
        self.item_count = Gauge("artifactory_storage_item_count",
                                "The total number of items (both files and folders) in the system")
        self.total = Gauge("artifactory_total_storage_megabytes",
                           "Total storage of the system (MB)")
        self.used = Gauge("artifactory_used_storage_megabytes",
                          "Total storage of the system (MB)")
        self.free = Gauge("artifactory_free_storage_megabytes",
                          "Total storage of the system (MB)")
        self.repo_used_space = Gauge("artifactory_repo_used_space_megabytes",
                                     "Used space of the repo in MB",
                                     ["repoKey", "repoType", "packageType"])
        self.repo_file = Gauge("artifactory_repo_files",
                               "Number of files in the repo",
                               ["repoKey", "repoType", "packageType"])
        self.repo_item = Gauge("artifactory_repo_items",
                               "Number of items in the repo",
                               ["repoKey", "repoType", "packageType"])

    def run(self):
        logging.debug("Starting collect storage info...")
        result = []
        data = self._artifactory.get_storage_info()

        binaries_summary = data["binariesSummary"]

        self.binaries_count.set(int(binaries_summary["binariesCount"].replace(",", "")))
        result.extend(self.binaries_count.collect())

        self.binaries_size.set(str_to_megabytes(binaries_summary["binariesSize"]))
        result.extend(self.binaries_size.collect())

        self.artifacts_size.set(str_to_megabytes(binaries_summary['artifactsSize']))
        result.extend((self.artifacts_size.collect()))

        self.artifacts_count.set(str_to_int(binaries_summary['artifactsCount']))
        result.extend(self.artifacts_count.collect())

        self.item_count.set(str_to_int(binaries_summary['itemsCount']))
        result.extend(self.item_count.collect())

        file_store_summary = data["fileStoreSummary"]
        self.total.set(str_to_megabytes(file_store_summary["totalSpace"]))
        result.extend(self.total.collect()[:])

        self.used.set(str_to_megabytes("%s %s" %
                                       (file_store_summary["usedSpace"].split(" ")[0],
                                        file_store_summary["usedSpace"].split(" ")[1])))
        result.extend(self.used.collect()[:])

        self.free.set(str_to_megabytes("%s %s" %
                                       (file_store_summary["freeSpace"].split(" ")[0],
                                        file_store_summary["freeSpace"].split(" ")[1])))
        result.extend(self.free.collect())

        for repo in data["repositoriesSummaryList"]:
            repo_key = repo["repoKey"]
            repo_type = repo["repoType"]
            package_type = "NA"
            if repo_key != "TOTAL":
                package_type = repo["packageType"]
            self.repo_used_space.labels(repo_key, repo_type, package_type).set(str_to_megabytes(repo["usedSpace"]))
            self.repo_file.labels(repo_key, repo_type, package_type).set(repo["filesCount"])
            self.repo_item.labels(repo_key, repo_type, package_type).set(repo["itemsCount"])
        result.extend(self.repo_used_space.collect())
        result.extend(self.repo_file.collect())
        result.extend(self.repo_item.collect())
        logging.debug("Storage info collected")
        return result