Skip to content

Configuration Details

Sea Yo edited this page Mar 2, 2016 · 29 revisions

Eywa looks at /etc/eywa/eywa.yml for configurations by default. You can pass any file location you want by appending -conf=<your file location> at the time of starting your service:

  eywa serve -conf="my/file/location" &

Here is a table of configs for Eywa:

name description defaults
service.host Host name that Eywa will be binding to. localhost
service.api_port Port that Eywa will be listening to for API's. 8080
service.device_port Port that Eywa will be accepting connections from devices. 8081
service.pid_file File that records the current running Eywa's pid. (Not recommended to change) /var/eywa/eywa.pid
security.dashboard.username Dashboard username. Change it for production use. root
security.dashboard.password Password for the dashboard user. Change it for production use. waterISwide
security.dashboard.token_expiry Settings for token to expire. 24 hours
security.dashboard.aes.key AES key for encrypting auth tokens. You need to change it to 16 bytes string. abcdefg123456789
security.dashboard.aes.iv AES iv for pairing with AES key. You need to change it to 16 bytes string. 123456789abcdefg
security.ssl.certfile Location of SSL certificate file. Leave it blank if you don't want to use SSL.
security.ssl.keyfile Location of SSL key file. Leave it blank if you don't want to use SSL.
websocket_connections.registry Registry which stores the information about the connections. So far we only support in-memory registry. Redis, Dynamo, or Other key-value stores will be supported soon. memory
websocket_connections.nshards Number of shards that tracks websocket connections. Tune this with respect to number of your cpu cores. Suggested value is from 2 x nproc to 3 x nproc. 8
websocket_connections.init_shard_size Initial size of each shard. Increase this if you have more than 10k devices to get connected at the time of starting Eywa. 1024
websocket_connections.request_queue_size Each websocket connection can queue up some requests. Increasing this size if you have bursts of requests going into one single connection and that connection won't be able to consume quickly. Any request that gets backlogged beyond this size, will be dropped and returned as failure. 8
websocket_connections.timeouts.write If the request to the client takes more than this value, connection will be considered dead. 4 seconds
websocket_connections.timeouts.read Websocket clients need to regularly Ping Eywa in order to keep the connection alive. Tune this parameter if your client pings less often than per 5 min. 5 minutes
websocket_connections.timeouts.request If the requests are not sent successfully within this value, request will be considered failure. The cause can either be connection slowness or too many requests are queued up. Connection won't be considered dead as oppose to websocket_connections.timeouts.write. 4 seconds
websocket_connections.timeouts.response For some requests that require clients' response, the requester waits for this amount of time. Increase it if you know you local network is slow. 16 seconds
websocket_connections.buffer_sizes.read The buffer size for reading from the client. 1024 bytes
websocket_connections.buffer_sizes.write The buffer size for writing to the client. 1024 bytes
indices.disable Turn this on if you don't want to index your data. false
indices.host The Elasticsearch host.
indices.port The Elasticsearch port.
indices.number_of_shards The number of shards of time series data. The default value may gave you enough performance already.
indices.number_of_replicas The number of replicas of time series data. If you are running with micro services separately and you need data redundancy, increase this value. But indexing latency will be introduced.
indices.ttl_enabled Enable the data retention. By default, it is disabled.
indices.ttl The time series data retention period.
database.db_type The type of database, default: sqlite3. MySql or Postgres will be supported soon.
database.db_file The database file for sqlite3.
logging.eywa.filename The log filename for Eywa's main logger.
logging.eywa.maxsize The maxsize of the main logger. If it goes beyond this size, Eywa will try to rotate it.
logging.eywa.maxage The number of days to retain old log files based on the timestamp encoded in their filename.
logging.eywa.maxbackups The maximum number of old log files to retain.
logging.eywa.level Log level of Eywa's main logger.
logging.eywa.buffer_size Buffer size of Eywa's main logger. Before it's filled, logs won't be flushed to disk.
logging.indices.filename The log filename for Eywa's indexing logger.
logging.indices.maxsize The maxsize of the indexing logger. If it goes beyond this size, Eywa will try to rotate it.
logging.indices.maxage The number of days to retain old log files based on the timestamp encoded in their filename.
logging.indices.maxbackups The maximum number of old log files to retain.
logging.indices.level Log level of Eywa's indexing logger.
logging.indices.buffer_size Buffer size of Eywa's indexing logger. Before it's filled, logs won't be flushed to disk.
logging.database.filename The log filename for Eywa's database logger.
logging.database.maxsize The maxsize of the database logger. If it goes beyond this size, Eywa will try to rotate it.
logging.database.maxage The number of days to retain old log files based on the timestamp encoded in their filename.
logging.database.maxbackups The maximum number of old log files to retain.
logging.database.level Log level of Eywa's database logger.
logging.database.buffer_size Buffer size of Eywa's database logger. Before it's filled, logs won't be flushed to disk.
Clone this wiki locally