blob: 6f6e8cf467db82b5080451dae1ccdae62baa9136 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package conf
import (
"fmt"
"os"
)
//
// Configuration keys for HTrace.
//
// The platform-specific path separator. Usually slash.
var PATH_SEP string = fmt.Sprintf("%c", os.PathSeparator)
// The platform-specific path list separator. Usually colon.
var PATH_LIST_SEP string = fmt.Sprintf("%c", os.PathListSeparator)
// The name of the XML configuration file to look for.
const CONFIG_FILE_NAME = "htraced-conf.xml"
// An environment variable containing a list of paths to search for the
// configuration file in.
const HTRACED_CONF_DIR = "HTRACED_CONF_DIR"
// The web address to start the REST server on.
const HTRACE_WEB_ADDRESS = "web.address"
// The default port for the Htrace web address.
const HTRACE_WEB_ADDRESS_DEFAULT_PORT = 9095
// The web address to start the REST server on.
const HTRACE_HRPC_ADDRESS = "hrpc.address"
// The default port for the Htrace HRPC address.
const HTRACE_HRPC_ADDRESS_DEFAULT_PORT = 9075
// The directories to put the data store into. Separated by PATH_LIST_SEP.
const HTRACE_DATA_STORE_DIRECTORIES = "data.store.directories"
// Boolean key which indicates whether we should clear data on startup.
const HTRACE_DATA_STORE_CLEAR = "data.store.clear"
// How many writes to buffer before applying backpressure to span senders.
const HTRACE_DATA_STORE_SPAN_BUFFER_SIZE = "data.store.span.buffer.size"
// Path to put the logs from htrace, or the empty string to use stdout.
const HTRACE_LOG_PATH = "log.path"
// The log level to use for the logs in htrace.
const HTRACE_LOG_LEVEL = "log.level"
// The period between datastore heartbeats. This is the approximate interval at which we will
// prune expired spans.
const HTRACE_DATASTORE_HEARTBEAT_PERIOD_MS = "datastore.heartbeat.period.ms"
// The maximum number of addresses for which we will maintain metrics.
const HTRACE_METRICS_MAX_ADDR_ENTRIES = "metrics.max.addr.entries"
// The number of milliseconds we should keep spans before discarding them.
const HTRACE_SPAN_EXPIRY_MS = "span.expiry.ms"
// The period between updates to the span reaper
const HTRACE_REAPER_HEARTBEAT_PERIOD_MS = "reaper.heartbeat.period.ms"
// A host:port pair to send information to on startup. This is used in unit
// tests to determine the (random) port of the htraced process that has been
// started.
const HTRACE_STARTUP_NOTIFICATION_ADDRESS = "startup.notification.address"
// The maximum number of HRPC handler goroutines we will create at once. If
// this is too small, we won't get enough concurrency; if it's too big, we will
// buffer too much data in memory while waiting for the datastore to process
// requests.
const HTRACE_NUM_HRPC_HANDLERS = "num.hrpc.handlers"
// The I/O timeout HRPC will use, in milliseconds. If it takes longer than
// this to read or write a message, we will abort the connection.
const HTRACE_HRPC_IO_TIMEOUT_MS = "hrpc.io.timeout.ms"
// The leveldb write buffer size, or 0 to use the library default, which is 4
// MB in leveldb 1.16. See leveldb's options.h for more details.
const HTRACE_LEVELDB_WRITE_BUFFER_SIZE = "leveldb.write.buffer.size"
// Default values for HTrace configuration keys.
var DEFAULTS = map[string]string{
HTRACE_WEB_ADDRESS: fmt.Sprintf("0.0.0.0:%d", HTRACE_WEB_ADDRESS_DEFAULT_PORT),
HTRACE_HRPC_ADDRESS: fmt.Sprintf("0.0.0.0:%d", HTRACE_HRPC_ADDRESS_DEFAULT_PORT),
HTRACE_DATA_STORE_DIRECTORIES: PATH_SEP + "tmp" + PATH_SEP + "htrace1" +
PATH_LIST_SEP + PATH_SEP + "tmp" + PATH_SEP + "htrace2",
HTRACE_DATA_STORE_CLEAR: "false",
HTRACE_DATA_STORE_SPAN_BUFFER_SIZE: "100",
HTRACE_LOG_PATH: "",
HTRACE_LOG_LEVEL: "INFO",
HTRACE_DATASTORE_HEARTBEAT_PERIOD_MS: fmt.Sprintf("%d", 45*1000),
HTRACE_METRICS_MAX_ADDR_ENTRIES: "100000",
HTRACE_SPAN_EXPIRY_MS: "0",
HTRACE_REAPER_HEARTBEAT_PERIOD_MS: fmt.Sprintf("%d", 90*1000),
HTRACE_NUM_HRPC_HANDLERS: "20",
HTRACE_HRPC_IO_TIMEOUT_MS: "60000",
HTRACE_LEVELDB_WRITE_BUFFER_SIZE: "0",
}
// Values to be used when creating test configurations
func TEST_VALUES() map[string]string {
return map[string]string{
HTRACE_HRPC_ADDRESS: ":0", // use a random port for the HRPC server
HTRACE_LOG_LEVEL: "TRACE", // show all log messages in tests
HTRACE_WEB_ADDRESS: ":0", // use a random port for the REST server
HTRACE_SPAN_EXPIRY_MS: "0", // never time out spans (unless testing the reaper)
}
}