Class CassandraStorage.Builder

    • Method Detail

      • keyspace

        public CassandraStorage.Builder keyspace​(java.lang.String keyspace)
        Keyspace to store span and index data. Defaults to "zipkin"
      • contactPoints

        public CassandraStorage.Builder contactPoints​(java.lang.String contactPoints)
        Comma separated list of host addresses part of Cassandra cluster. You can also specify a custom port with 'host:port'. Defaults to localhost on port 9042 *
      • localDc

        public CassandraStorage.Builder localDc​(@Nullable
                                                java.lang.String localDc)
        Name of the datacenter that will be considered "local" for latency load balancing. When unset, load-balancing is round-robin.
      • maxConnections

        public CassandraStorage.Builder maxConnections​(int maxConnections)
        Max pooled connections per datacenter-local host. Defaults to 8
      • ensureSchema

        public CassandraStorage.Builder ensureSchema​(boolean ensureSchema)
        Ensures that schema exists, if enabled tries to execute script io.zipkin:zipkin-cassandra-core/cassandra-schema.cql. Defaults to true.
      • username

        public CassandraStorage.Builder username​(@Nullable
                                                 java.lang.String username)
        Will throw an exception on startup if authentication fails. No default.
      • password

        public CassandraStorage.Builder password​(@Nullable
                                                 java.lang.String password)
        Will throw an exception on startup if authentication fails. No default.
      • maxTraceCols

        public CassandraStorage.Builder maxTraceCols​(int maxTraceCols)
        Spans have multiple values for the same id. For example, a client and server contribute to the same span id. When searching for spans by id, the amount of results may be larger than the ids. This defines a threshold which accommodates this situation, without looking for an unbounded number of results.
      • spanTtl

        @Deprecated
        public CassandraStorage.Builder spanTtl​(int spanTtl)
        Deprecated.
        current schema uses default ttls. This parameter will be removed in Zipkin 2
        Time-to-live in seconds for span data. Defaults to 604800 (7 days)
      • indexTtl

        @Deprecated
        public CassandraStorage.Builder indexTtl​(int indexTtl)
        Deprecated.
        current schema uses default ttls. This parameter will be removed in Zipkin 2
        Time-to-live in seconds for index data. Defaults to 259200 (3 days)
      • indexCacheMax

        public CassandraStorage.Builder indexCacheMax​(int indexCacheMax)
        Indicates the maximum trace index metadata entries to cache. Zero disables the feature. Defaults to 100000.

        This is used to obviate redundant inserts into Tables.SERVICE_NAME_INDEX, Tables.SERVICE_REMOTE_SERVICE_NAME_INDEX, Tables.SERVICE_SPAN_NAME_INDEX and Tables.ANNOTATIONS_INDEX.

        Corresponds to the count of rows inserted into between indexCacheTtl and now. This is bounded so that collectors that get large trace volume don't run out of memory before indexCacheTtl passes.

        Note: It is hard to estimate precisely how many is the right number, particularly as binary annotation values are included in partition keys (meaning each cache entry can vary in size considerably). A good guess might be 5 x spans per indexCacheTtl, memory permitting.

      • indexCacheTtl

        public CassandraStorage.Builder indexCacheTtl​(int indexCacheTtl)
        Indicates how long in seconds to cache trace index metadata. Defaults to 1 minute. This is only read when indexCacheMax is greater than zero.

        You should pick a value that is longer than the gap between the root span's timestamp and its latest descendant span's timestamp. More simply, if 95% of your trace durations are under 1 minute, use 1 minute.

      • indexFetchMultiplier

        public CassandraStorage.Builder indexFetchMultiplier​(int indexFetchMultiplier)
        How many more index rows to fetch than the user-supplied query limit. Defaults to 3.

        Backend requests will request QueryRequest.limit() times this factor rows from Cassandra indexes in attempts to return QueryRequest.limit() traces.

        Indexing in cassandra will usually have more rows than trace identifiers due to factors including table design and collection implementation. As there's no way to DISTINCT out duplicates server-side, this over-fetches client-side when indexFetchMultiplier > 1.