def ensure_fake_backend(host=None, backend_options=None, fake_services=None): if host is None: host = get_unique_localhost() if fake_services is None: with fake_backend.start(host, **(backend_options or {})) as started_fake_services: yield started_fake_services else: yield fake_services
def fill_in_configmap(self, configmap, agent_yaml): agent_conf = yaml.safe_load(agent_yaml) agent_conf.setdefault("observers", []) agent_conf.setdefault("monitors", []) agent_conf.setdefault("globalDimensions", {"kubernetes_cluster": self.namespace}) agent_conf.setdefault("intervalSeconds", 5) agent_conf.setdefault("enableBuiltInFiltering", True) agent_conf.setdefault("ingestUrl", f"http://{self.fake_services_pod_ip}:{self.fake_services.ingest_port}") agent_conf.setdefault("apiUrl", f"http://{self.fake_services_pod_ip}:{self.fake_services.api_port}") agent_conf.setdefault("internalStatusHost", get_unique_localhost()) configmap["data"]["agent.yaml"] = yaml.dump(agent_conf)
def fill_in_configmap(self, configmap, agent_yaml): agent_conf = yaml.safe_load(agent_yaml) agent_conf.setdefault("observers", []) agent_conf.setdefault("monitors", []) agent_conf.setdefault("writer", {"propertiesSendDelaySeconds": 1}) agent_conf.setdefault("globalDimensions", {"kubernetes_cluster": self.namespace}) agent_conf.setdefault("intervalSeconds", 5) agent_conf.setdefault("logging", {"level": "debug"}) agent_conf.setdefault("ingestUrl", f"http://{self.fake_services_pod_ip}:{self.fake_services.ingest_port}") agent_conf.setdefault("apiUrl", f"http://{self.fake_services_pod_ip}:{self.fake_services.api_port}") agent_conf.setdefault("internalStatusHost", get_unique_localhost()) configmap["data"]["agent.yaml"] = yaml.dump(agent_conf)
def create_agent_configmap(self, configmap_path, agent_yaml=None): configmap_yaml = yaml.load(open(configmap_path).read()) self.configmap_name = configmap_yaml["metadata"]["name"] self.delete_agent_configmap() if agent_yaml: self.agent_yaml = yaml.load(agent_yaml) self.observer = self.agent_yaml.setdefault("observers") self.monitors = self.agent_yaml.setdefault("monitors", []) self.agent_yaml.setdefault( "globalDimensions", {"kubernetes_cluster": self.cluster_name}) self.agent_yaml.setdefault("intervalSeconds", 5) self.agent_yaml.setdefault("sendMachineID", True) self.agent_yaml.setdefault("useFullyQualifiedHost", False) self.agent_yaml.setdefault("internalStatusHost", get_unique_localhost()) if self.backend: self.agent_yaml.setdefault( "ingestUrl", "http://%s:%d" % (self.backend.ingest_host, self.backend.ingest_port)) self.agent_yaml.setdefault( "apiUrl", "http://%s:%d" % (self.backend.api_host, self.backend.api_port)) else: self.agent_yaml = yaml.load(configmap_yaml["data"]["agent.yaml"]) del self.agent_yaml["observers"] if not self.observer and self.agent_yaml.get("observers"): del self.agent_yaml["observers"] elif self.observer == "k8s-api": self.agent_yaml["observers"] = [{ "type": self.observer, "kubernetesAPI": { "authType": "serviceAccount", "skipVerify": False } }] elif self.observer == "k8s-kubelet": self.agent_yaml["observers"] = [{ "type": self.observer, "kubeletAPI": { "authType": "serviceAccount", "skipVerify": True } }] elif self.observer == "docker": self.agent_yaml["observers"] = [{ "type": self.observer, "dockerURL": "unix:///var/run/docker.sock" }] else: self.agent_yaml["observers"] = [{"type": self.observer}] self.agent_yaml["globalDimensions"][ "kubernetes_cluster"] = self.cluster_name self.agent_yaml["intervalSeconds"] = 5 self.agent_yaml["sendMachineID"] = True self.agent_yaml["useFullyQualifiedHost"] = False self.agent_yaml["internalStatusHost"] = get_unique_localhost() if self.backend: self.agent_yaml["ingestUrl"] = "http://%s:%d" % ( self.backend.ingest_host, self.backend.ingest_port) self.agent_yaml["apiUrl"] = "http://%s:%d" % ( self.backend.api_host, self.backend.api_port) if self.agent_yaml.get("metricsToExclude"): del self.agent_yaml["metricsToExclude"] del self.agent_yaml["monitors"] self.agent_yaml["monitors"] = self.monitors configmap_yaml["data"]["agent.yaml"] = yaml.dump(self.agent_yaml) print( "Creating configmap for observer=%s and monitor(s)=%s from %s ..." % (self.observer, ",".join([m["type"] for m in self.monitors ]), configmap_path)) k8s.create_configmap(body=configmap_yaml, namespace=self.namespace) print(self.agent_yaml)