Search code examples
amazon-web-servicesopensearchzipkin

Compatability between Zipkin and AWS Hosted Opensearch


Can someone tell me how Zipkin determines if it connects to AWS Open search or Elasticsearch? I am starting Zipkin like below

/opt/openjdk-17/bin/java -XX:+UseContainerSupport -Djava.security.egd=file:/dev/./urandom \
                         -DSTORAGE_TYPE=elasticsearch \
                         -DES_HOSTS="https://${LOGGING_HOSTS}" \
                         -jar /app/zipkin.jar 

I looked into BaseVersion.java, which determines whether it is Opensearch or Elasticsearch based on the distribution field.

We are using "AWS Hosted Opensearch 1.3" and there we receive responses like the below

{
  "name" : "923fe41cf27f72842c0fcff17586cf3e",
  "cluster_name" : "873909615026:duploservices-stage-stg",
  "cluster_uuid" : "jic6RIwlQty78iWoC6IDqg",
  "version" : {
    "number" : "7.10.2",
    "build_type" : "tar",
    "build_hash" : "unknown",
    "build_date" : "2023-08-16T09:53:55.986046Z",
    "build_snapshot" : false,
    "lucene_version" : "8.10.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "The OpenSearch Project: https://opensearch.org/"
}

So it looks like Zipkin will think it is Elasticsearch even though it is "AWS Hosted OpenSearch." Can someone let me know if this is expected? Is Zipkin supported with OpenSearch 1.3? I could not find any compatibility guide between Zipkin and OpenSearch.


Solution

  • Zipkin Opensearch compatibility is mentioned in the doc.

    Zipkin's Elasticsearch storage component supports versions Elasticsearch 7-8.x and OpenSearch 2.x and applies when STORAGE_TYPE is set to elasticsearch.

    If Compatability Mode is enabled in AWS Opensearch as shown below

    enter image description here

    If Compatability Mode is disabled by executing the below query

    PUT /_cluster/settings
    {
      "persistent" : {
        "compatibility.override_main_response_version" : false
      }
    }
    

    Then AWS Opensearch returns the response like below

    {
      "name" : "7f48bd47ee6aabf0f334179bd6a7eed0",
      "cluster_name" : "240774922464:duploservices-bat-log",
      "cluster_uuid" : "WmGjppzSRoa4JIat446nXA",
      "version" : {
        "distribution" : "opensearch",
        "number" : "1.3.2",
        "build_type" : "tar",
        "build_hash" : "unknown",
        "build_date" : "2024-04-25T14:22:00.314080Z",
        "build_snapshot" : false,
        "lucene_version" : "8.10.1",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "The OpenSearch Project: https://opensearch.org/"
    }