OpenTSDB Configuration
Options:
user
(object|string)
The Unix OpenTSDB login name or a user object (see Nikita User documentation).group
(object|string)
The Unix OpenTSDB group name or a group object (see Nikita Group documentation).
Example:
"opentsdb": {
"user": {
"name": "opentsdb", "system": true, "gid": "opentsdb",
"comment": "OpenTSDB User", "home": "/usr/share/opentsdb"
},
"group": {
"name": "Opentsdb", "system": true
}
}
module.exports = (service) ->
throw Error 'No HBase regionservers configured' unless service.deps.hbase_regionserver.length > 0
{options} = service
Identities
# Groups
options.group = name: options.group if typeof options.group is 'string'
options.group ?= {}
options.group.name ?= 'opentsdb'
options.group.system ?= true
# User
options.user = name: options.user if typeof options.user is 'string'
options.user ?= {}
options.user.name ?= 'opentsdb'
options.user.system ?= true
options.user.comment ?= 'OpenTSDB User'
options.user.home = '/usr/share/opentsdb'
options.user.gid = options.group.name
options.user.limits ?= {}
options.user.limits.nofile ?= 65535
options.user.limits.nproc ?= true
Package
options.version ?= '2.3.0'
options.source ?= "https://github.com/OpenTSDB/opentsdb/releases/download/v#{options.version}/opentsdb-#{options.version}.rpm"
Kerberos
options.krb5 ?= {}
options.krb5.realm ?= service.deps.krb5_client.options.etc_krb5_conf?.libdefaults?.default_realm
throw Error 'Required Options: "realm"' unless options.krb5.realm
options.krb5.admin ?= service.deps.krb5_client.options.admin[options.krb5.realm]
Configuration
options.iptables ?= service.deps.iptables and service.deps.iptables.options.action is 'start'
options.fqdn ?= service.node.fqdn
options.hbase ?= {}
options.hbase.default_namespace ?= "opentsdb"
options.hbase.bloomfilter ?= 'ROW'
options.hbase.compression ?= 'SNAPPY'
throw Error "Invalid hbase.bloomfilter '#{options.hbase.bloomfilter}' (NONE|ROW|ROWCOL)" unless options.hbase.bloomfilter in ['NONE', 'ROW', 'ROWCOL']
throw Error "Invalid hbase.compression '#{options.hbase.compression}' (NONE|LZO|GZIP|SNAPPY)" unless options.hbase.compression in ['NONE', 'LZO', 'GZIP', 'SNAPPY']
# Config
options.config ?= {}
options.config['tsd.core.auto_create_metrics'] ?= 'true'
options.config['tsd.http.staticroot'] ?= "#{options.user.home}/static/"
options.config['tsd.http.cachedir'] ?= '/tmp/opentsdb'
options.config['tsd.core.plugin_path'] ?= "#{options.user.home}/plugins"
options.config['tsd.core.meta.enable_realtime_ts'] ?= 'true'
options.config['tsd.http.request.cors_domains'] ?= '*'
options.config['tsd.network.port'] ?= 4242
# Zookeeper
# Get ZooKeeper Quorum
options.config['tsd.storage.hbase.zk_quorum'] ?= (
for srv in service.deps.zookeeper_server
continue unless srv.options.config['peerType'] is 'participant'
"#{srv.node.fqdn}:#{srv.options.config['clientPort']}"
).join ','
options.config['tsd.storage.hbase.zk_basedir'] ?= service.deps.hbase_regionserver[0].options.hbase_site['zookeeper.znode.parent']
options.config['tsd.storage.fix_duplicates'] ?= 'true'
options.config['tsd.storage.repair_appends'] ?= 'true'
ns = (table) -> if options.hbase.default_namespace? then "#{options.hbase.default_namespace}:#{table}" else table
options.config['tsd.storage.hbase.data_table'] ?= ns 'tsdb'
options.config['tsd.storage.hbase.uid_table'] ?= ns 'tsdb-uid'
options.config['tsd.storage.hbase.tree_table'] ?= ns 'tsdb-tree'
options.config['tsd.storage.hbase.meta_table'] ?= ns 'tsdb-meta'
options.config['tsd.query.allow_simultaneous_duplicates'] ?= 'true'
options.config['hbase.security.authentication'] ?= service.deps.hbase_regionserver[0].options.hbase_site['hbase.security.authentication']
if options.config['hbase.security.authentication'] is 'kerberos'
options.config['hbase.security.auth.enable'] ?= 'true'
options.config['hbase.kerberos.regionserver.principal'] ?= service.deps.hbase_regionserver[0].options.hbase_site['hbase.regionserver.kerberos.principal']
options.config['java.security.auth.login.config'] ?= '/etc/opentsdb/opentsdb.jaas'
options.config['hbase.sasl.clientconfig'] ?= 'Client'
# Env
options.env ?= {}
options.env['java.security.auth.login.config'] ?= options.config['java.security.auth.login.config']
# Opts
options.java_opts ?= ''
Ranger Admin properties
options.install ?= {}
options.install['POLICY_MGR_URL'] ?= service.deps.ranger_admin.options.install['policymgr_external_url']
options.install['REPOSITORY_NAME'] ?= 'hadoop-ryba-hbase'
Ranger Plugin User
Create the opentsdb user if ranger hbase plugin is enabled.
if service.deps.ranger_plugin_hbase
options.plugin_user = merge
'name': options.user.name
'firstName': ''
'lastName': ''
'emailAddress': ''
'password': null
'userSource': 1
'userRoleList': ['ROLE_USER']
'groups': []
'status': 1
, options.plugin_user
throw Error 'Required Option: plugin_user.password' unless options.plugin_user.password