diff --git a/config/config.yaml b/config/config.yaml index 506166e9..a7866b53 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -85,6 +85,9 @@ telemetry: - "(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+Z).+" # 2023-09-15T11:20:36.123425532Z log oc_cli_path: /usr/bin/oc # optional, if not specified will be search in $PATH events_backup: True # enables/disables cluster events collection +elastic: + elastic_url: "" # To track results in elasticsearch, give url to server here; will post telemetry details when url and index not blank + elastic_index: "" # Elastic search index pattern to post results to diff --git a/config/config_performance.yaml b/config/config_performance.yaml index 368b8415..ec22023b 100644 --- a/config/config_performance.yaml +++ b/config/config_performance.yaml @@ -77,3 +77,8 @@ telemetry: - "kinit (\\d+/\\d+/\\d+\\s\\d{2}:\\d{2}:\\d{2})\\s+" # kinit 2023/09/15 11:20:36 log - "(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d+Z).+" # 2023-09-15T11:20:36.123425532Z log oc_cli_path: /usr/bin/oc # optional, if not specified will be search in $PATH +elastic: + elastic_url: "" # To track results in elasticsearch, give url to server here; will post telemetry details when url and index not blank + elastic_index: "" # Elastic search index pattern to post results to + + diff --git a/requirements.txt b/requirements.txt index 3a5e1ec0..cbbb2275 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,13 +10,12 @@ itsdangerous==2.0.1 coverage==7.4.1 datetime==5.4 docker==7.0.0 -docker-compose==1.29.2 gitpython==3.1.41 google-api-python-client==2.116.0 ibm_cloud_sdk_core==3.18.0 ibm_vpc==0.20.0 jinja2==3.1.3 -krkn-lib==1.4.9 +krkn-lib==1.4.11 lxml==5.1.0 kubernetes==26.1.0 oauth2client==4.1.3 @@ -31,11 +30,11 @@ python-ipmi==0.5.4 python-openstackclient==6.5.0 requests==2.31.0 service_identity==24.1.0 -PyYAML==5.4.1 +PyYAML==6.0 setuptools==65.5.1 werkzeug==3.0.1 wheel==0.42.0 zope.interface==5.4.0 git+https://github.com/krkn-chaos/arcaflow-plugin-kill-pod.git -git+https://github.com/vmware/vsphere-automation-sdk-python.git@v8.0.0.0 \ No newline at end of file +git+https://github.com/vmware/vsphere-automation-sdk-python.git@v8.0.0.0 diff --git a/run_kraken.py b/run_kraken.py index d08237b4..0793893e 100644 --- a/run_kraken.py +++ b/run_kraken.py @@ -27,6 +27,7 @@ import server as server from kraken import plugins from krkn_lib.k8s import KrknKubernetes from krkn_lib.ocp import KrknOpenshift +from krkn_lib.telemetry.elastic import KrknElastic from krkn_lib.telemetry.k8s import KrknTelemetryKubernetes from krkn_lib.telemetry.ocp import KrknTelemetryOpenshift from krkn_lib.models.telemetry import ChaosRunTelemetry @@ -94,6 +95,9 @@ def main(cfg): config["performance_monitoring"], "check_critical_alerts", False ) telemetry_api_url = config["telemetry"].get("api_url") + elastic_config = get_yaml_item_value(config,"elastic",{}) + elastic_url = get_yaml_item_value(elastic_config,"elastic_url","") + elastic_index = get_yaml_item_value(elastic_config,"elastic_index","") # Initialize clients if (not os.path.isfile(kubeconfig_path) and @@ -129,8 +133,6 @@ def main(cfg): except: kubecli.initialize_clients(None) - - # find node kraken might be running on kubecli.find_kraken_node() @@ -175,7 +177,7 @@ def main(cfg): # KrknTelemetry init telemetry_k8s = KrknTelemetryKubernetes(safe_logger, kubecli) telemetry_ocp = KrknTelemetryOpenshift(safe_logger, ocpcli) - + telemetry_elastic = KrknElastic(safe_logger,elastic_url) if enable_alerts: prometheus = KrknPrometheus(prometheus_url, prometheus_bearer_token) @@ -378,7 +380,7 @@ def main(cfg): decoded_chaos_run_telemetry = ChaosRunTelemetry(json.loads(chaos_telemetry.to_json())) logging.info(f"Telemetry data:\n{decoded_chaos_run_telemetry.to_json()}") - + telemetry_elastic.upload_data_to_elasticsearch(decoded_chaos_run_telemetry.to_json(), elastic_index) if config["telemetry"]["enabled"]: logging.info(f"telemetry data will be stored on s3 bucket folder: {telemetry_api_url}/download/{telemetry_request_id}") logging.info(f"telemetry upload log: {safe_logger.log_file_name}")