| # |
| # 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. |
| # |
| |
| # default application configuration file for akka |
| include "logging" |
| |
| akka { |
| java-flight-recorder.enabled = false |
| } |
| |
| akka.http { |
| client { |
| parsing.illegal-header-warnings = off |
| parsing.max-chunk-size = 50m |
| parsing.max-content-length = 50m |
| } |
| parsing { |
| max-to-strict-bytes = 50m |
| } |
| |
| host-connection-pool { |
| max-connections = 128 |
| max-open-requests = 1024 |
| } |
| } |
| |
| #kamon related configuration |
| kamon { |
| modules { |
| # Only statsd is enabled by default. |
| statsd-reporter { |
| enabled = true |
| } |
| datadog-agent { |
| enabled = false |
| } |
| datadog-trace-agent { |
| enabled = false |
| } |
| # This should never be set to true as we register Prometheus reporters manually and surface them via akka-http. |
| prometheus-reporter { |
| enabled = false |
| } |
| |
| host-metrics { |
| enabled = false |
| } |
| } |
| |
| environment { |
| # Identifier for this service. For keeping it backward compatible setting to natch previous |
| # statsd name |
| service = "openwhisk-statsd" |
| } |
| metric { |
| tick-interval = 1 second |
| } |
| |
| statsd { |
| # Interval between metrics data flushes to StatsD. It's value must be equal or greater than the |
| # kamon.metrics.tick-interval setting. |
| flush-interval = 1 second |
| |
| # Max packet size for UDP metrics data sent to StatsD. |
| max-packet-size = 1024 bytes |
| |
| # Subscription patterns used to select which metrics will be pushed to StatsD. Note that first, metrics |
| # collection for your desired entities must be activated under the kamon.metrics.filters settings. |
| includes { |
| actor = [ "*" ] |
| trace = [ "*" ] |
| dispatcher = [ "*" ] |
| } |
| |
| metric-key-generator = org.apache.openwhisk.common.WhiskStatsDMetricKeyGenerator |
| } |
| prometheus { |
| # We expose the metrics endpoint over akka http. So default server is disabled |
| start-embedded-http-server = no |
| |
| buckets { |
| custom { |
| //By default retry are configured upto 9. However for certain setups we may increase |
| //it to higher values |
| "histogram.cosmosdb_retry_success" = [1, 2, 3, 5, 7, 10, 12, 15, 20] |
| } |
| } |
| } |
| } |
| |
| whisk { |
| shared-packages-execute-only = false |
| metrics { |
| # Enable/disable Prometheus support. If enabled then metrics would be exposed at `/metrics` endpoint |
| # If Prometheus is enabled then please review `kamon.metric.tick-interval` (set to 1 sec by default above). |
| # It can then be set to scrape interval value which is generally 60 secs |
| prometheus-enabled = false |
| |
| # Enable/disable whether metric information is sent to the configured reporters. |
| kamon-enabled = false |
| kamon-enabled = ${?METRICS_KAMON} |
| |
| # Enable/disable whether to use the Kamon tags when sending metrics. |
| kamon-tags-enabled = false |
| kamon-tags-enabled = ${?METRICS_KAMON_TAGS} |
| |
| # Enable/disable whether the metric information is written out to the log files in logmarker format. |
| logs-enabled = true |
| logs-enabled = ${?METRICS_LOG} |
| } |
| |
| # kafka related configuration, the complete list of parameters is here: |
| # https://kafka.apache.org/documentation/#brokerconfigs |
| kafka { |
| replication-factor = 1 |
| |
| // Used to control the cadence of the consumer lag check interval |
| consumer-lag-check-interval = 60 seconds |
| |
| // The following settings are passed "raw" to the respective Kafka client. Dashes are replaced by dots. |
| common { |
| security-protocol = PLAINTEXT |
| ssl-endpoint-identification-algorithm = "" // restores pre-kafka 2.0.0 default |
| |
| //Enable this for reporting Kafka client metrics |
| //metric-reporters = "org.apache.openwhisk.connector.kafka.KamonMetricsReporter" |
| |
| } |
| producer { |
| acks = 1 |
| request-timeout-ms = 30000 |
| metadata-max-age-ms = 15000 |
| # max-request-size is defined programatically for producers related to the "completed" and "invoker" topics |
| # as ${whisk.activation.kafka.payload.max} + ${whisk.activation.kafka.serdes-overhead}. All other topics use |
| # the default of 1 MB. |
| } |
| consumer { |
| session-timeout-ms = 30000 |
| heartbeat-interval-ms = 10000 |
| enable-auto-commit = false |
| auto-offset-reset = earliest |
| request-timeout-ms = 30000 |
| |
| max-poll-interval-ms = 1800000 // 30 minutes |
| |
| // The maximum amount of time the server will block before answering |
| // the fetch request if there isn't sufficient data to immediately |
| // satisfy the requirement given by fetch.min.bytes. |
| // (default is 500, default of fetch.min.bytes is 1) |
| // On changing fetch.min.bytes, a high value for fetch.max.wait.ms, |
| // could increase latency of activations. |
| // A low value will cause excessive busy-waiting. |
| fetch-max-wait-ms = 500 |
| } |
| |
| topics { |
| cache-invalidation { |
| segment-bytes = 536870912 |
| retention-bytes = 1073741824 |
| retention-ms = 300000 |
| } |
| completed { |
| segment-bytes = 536870912 |
| retention-bytes = 1073741824 |
| retention-ms = 3600000 |
| # max-message-bytes is defined programatically as ${whisk.activation.kafka.payload.max} + |
| # ${whisk.activation.kafka.serdes-overhead}. |
| } |
| health { |
| segment-bytes = 536870912 |
| retention-bytes = 1073741824 |
| retention-ms = 3600000 |
| } |
| invoker { |
| segment-bytes = 536870912 |
| retention-bytes = 1073741824 |
| retention-ms = 172800000 |
| # max-message-bytes is defined programatically as ${whisk.activation.kafka.payload.max} + |
| # ${whisk.activation.kafka.serdes-overhead}. |
| } |
| events { |
| segment-bytes = 536870912 |
| retention-bytes = 1073741824 |
| retention-ms = 3600000 |
| } |
| prefix = "" |
| user-event { |
| prefix = "" |
| } |
| } |
| |
| metrics { |
| // Name of metrics which should be tracked via Kamon |
| // https://docs.confluent.io/current/kafka/monitoring.html |
| names = [ |
| // consumer-fetch-manager-metrics |
| "records-lag-max", // The maximum lag in terms of number of records for any partition in this window |
| "records-consumed-total", // The total number of records consumed |
| |
| //producer-topic-metrics |
| "record-send-total", |
| "byte-total", |
| |
| //producer-metrics |
| "request-total", |
| "request-size-avg" |
| ] |
| |
| report-interval = 10 seconds |
| } |
| } |
| # db related configuration |
| db { |
| subjects-ddoc = "subjects.v2.0.0" |
| actions-ddoc = "whisks.v2.1.0" |
| activations-ddoc = "whisks.v2.1.0" |
| activations-filter-ddoc = "whisks-filters.v2.1.1" |
| |
| # Size limit for inlined attachments. Attachments having size less than this would |
| # be inlined with there content encoded in attachmentName |
| max-inline-size = 16 k |
| } |
| |
| # CouchDB related configuration |
| # For example: |
| # couchdb { |
| # protocol = http # One of "https" or "http" |
| # host = servername # DB Host |
| # port = 5984 # DB Port |
| # username = |
| # password = |
| # provider = # Either "Cloudant" or "CouchDB" |
| # databases { # Database names used for various entity classes |
| # WhiskAuth = |
| # WhiskEntity = |
| # WhiskActivation = |
| # } |
| #} |
| |
| # CosmosDB related configuration |
| # For example: |
| cosmosdb { |
| # endpoint = # Endpoint URL like https://<account>.documents.azure.com:443/ |
| # key = # Access key |
| # db = # Database name |
| # Throughput configured for each collection within this db |
| # This is configured only if collection is created fresh. If collection |
| # already exists then existing throughput would be used |
| throughput = 1000 |
| # Select from one of the supported |
| # https://azure.github.io/azure-cosmosdb-java/1.0.0/com/microsoft/azure/cosmosdb/ConsistencyLevel.html |
| consistency-level = "Session" |
| |
| # TTL duration. By default no TTL is set unless explicitly configured |
| # ENABLING THIS VALUE MEANS YOUR DATA WILL NOT BE PERMANENTLY STORED |
| # Can only be used for `WhiskActivation` for now |
| # time-to-live = 60 s |
| |
| # Specifies the current clusterId whose value is recorded with document upon any update |
| # to indicate which cluster made the change. By default no such value is recorded |
| # cluster-id = |
| |
| # Enables soft delete mode where by the document would not be actually deleted. Instead |
| # it would be marked deleted by setting `_deleted` property to true and then actual delete |
| # happens via TTL. |
| # soft-delete-ttl = 10 h |
| |
| # Frequency at which collection resource usage info like collection size, document count etc is recorded |
| # and exposed as metrics. If any reindexing is in progress then its progress would be logged with this frequency |
| record-usage-frequency = 10 m |
| |
| # Flag to enable collection of retry stats. This feature works by registering with Logback to intercept |
| # log messages and based on that collect stats |
| retry-stats-enabled = true |
| |
| connection-policy { |
| max-pool-size = 1000 |
| # When the value of this property is true, the SDK will direct write operations to |
| # available writable locations of geo-replicated database account |
| using-multiple-write-locations = false |
| |
| # Select from one of the supported connection mode |
| # https://github.com/Azure/azure-cosmosdb-java/blob/master/commons/src/main/java/com/microsoft/azure/cosmosdb/ConnectionMode.java |
| connection-mode = "Gateway" |
| |
| # Sets the preferred locations for geo-replicated database accounts e.g. "East US" |
| # See names at https://azure.microsoft.com/en-in/global-infrastructure/locations/ |
| preferred-locations = [] |
| retry-options { |
| # Sets the maximum number of retries in the case where the request fails |
| # because the service has applied rate limiting on the client. |
| |
| # If this value is changed then adjust the buckets under `kamon.prometehus` |
| max-retry-attempts-on-throttled-requests = 9 |
| |
| # Sets the maximum retry time |
| # If the cumulative wait time exceeds this SDK will stop retrying and return the |
| # error to the application. |
| max-retry-wait-time = 30 s |
| } |
| } |
| |
| # Specify entity specific overrides below. By default all config values would be picked from top level. To override |
| # any config option for specific entity specify them below. Following names can be used |
| # - WhiskAuth |
| # - WhiskEntity |
| # - WhiskActivation |
| # For example if multiple writes need to be enabled for activations then |
| # collections { |
| # WhiskActivation { # Add entity specific overrides here |
| # connection-policy { |
| # using-multiple-write-locations = true |
| # } |
| # } |
| # } |
| } |
| |
| # ActivationStore related configuration |
| # For example: |
| # activationStore { |
| # elasticsearch { |
| # protocol = # "http" or "https" |
| # hosts = # the hosts address of ES, can be multi hosts combined with commas, like "172.17.0.1:9200,172.17.0.2:9200,172.17.0.3:9200" |
| # index-pattern = # the index pattern used to tell which index an activation should be stored to, will be calculated with activation namespace, |
| # for example, if the index-pattern is "openwhisk-%s", then activations under "whisk.system" will be saved in to index |
| # "openwhisk-whisk.system", you can also save all namespaces activations into one index by set index-pattern to a raw string |
| # like "openwhisk" |
| # username = # username of the provide ES |
| # password = # password of the provide ES |
| # } |
| # } |
| |
| azure-blob { |
| # Config property when using AzureBlobAttachmentStore |
| # whisk { |
| # spi { |
| # AttachmentStoreProvider = org.apache.openwhisk.core.database.azblob.AzureBlobAttachmentStoreProvider |
| # } |
| #} |
| |
| # Blob container endpoint like https://foostore.blob.core.windows.net/test-ow-travis |
| # It is of format https://<account-name>.blob.core.windows.net/<container-name> |
| # endpoint = |
| |
| # Storage account name |
| # account-name = |
| |
| # Container name within storage account used to store the blobs |
| # container-name = |
| |
| # Shared key credentials |
| # https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/storage/azure-storage-blob#shared-key-credential |
| # account-key |
| |
| # Folder path within the container (optional) |
| # prefix |
| |
| retry-config { |
| retry-policy-type = FIXED |
| max-tries = 3 |
| try-timeout = 5 seconds |
| retry-delay = 10 milliseconds |
| #secondary-host = "" |
| } |
| #azure-cdn-config { |
| # domain-name = "<your azure cdn domain>" |
| #} |
| } |
| |
| # transaction ID related configuration |
| transactions { |
| header = "X-Request-ID" |
| } |
| # action runtimes configuration |
| runtimes { |
| bypass-pull-for-local-images = false |
| local-image-prefix = "whisk" |
| } |
| |
| # cluster name related etcd configuration |
| cluster { |
| name = "whisk" |
| } |
| |
| user-events { |
| enabled = false |
| } |
| |
| activation { |
| payload { |
| max = 1 m |
| truncation = 1 m |
| } |
| # Action responses sent through Kafka can contain up to 3018 bytes of metadata |
| # CompletionMessage |
| # base 71 |
| # TransactionId |
| # id 32 |
| # start 13 |
| # extraLogging 5 |
| # WhiskActivation |
| # base 368 |
| # activationId 32 |
| # subject 256 |
| # namespace 256 |
| # entity name 256 |
| # path 3x256+2=770 |
| # initTime 64 |
| # waitTime 64 |
| # duration 64 |
| # kind 64 |
| # limits 64*3=192 |
| # version 64x3+2=194 |
| # size 16 |
| # InvokerInstanceId |
| # instance 64 |
| # uniqueName + displayName 253 (max pod name length in Kube) |
| serdes-overhead = 6068 // 3034 bytes of metadata * 2 for extra headroom |
| |
| # Disables database store for blocking + successful activations |
| # invocations made with `X-OW-EXTRA-LOGGING: on` header, will force the activation to be stored |
| disable-store-result = false |
| |
| # Enable metadata logging of activations not stored in the database |
| unstored-logs-enabled = false |
| } |
| |
| # action timelimit configuration |
| time-limit { |
| min = 100 ms |
| max = 5 m |
| std = 1 m |
| } |
| |
| # action memory configuration |
| memory { |
| min = 128 m |
| max = 512 m |
| std = 256 m |
| } |
| |
| # action log-limit configuration |
| log-limit { |
| min = 0 m |
| max = 10 m |
| std = 10 m |
| } |
| |
| # action concurrency-limit configuration |
| concurrency-limit { |
| min = 1 |
| max = 1 |
| std = 1 |
| } |
| |
| # maximum size of the action code |
| exec-size-limit = 48 m |
| |
| query-limit { |
| max-list-limit = 200 # max number of entities that can be requested from a collection on a list operation |
| default-list-limit = 30 # default limit on number of entities returned from a collection on a list operation |
| } |
| |
| mesos { |
| master-url = "http://localhost:5050" //your mesos master |
| master-public-url = "http://localhost:5050" // if mesos-link-log-message == true, this link will be included with the static log message (may or may not be different from master-url) |
| role = "*" //see http://mesos.apache.org/documentation/latest/roles/#associating-frameworks-with-roles |
| mesos-link-log-message = true //If true, display a link to mesos in the static log message, otherwise do not include a link to mesos. |
| constraints = [] //placement constraint strings to use for managed containers e.g. ["att1 LIKE v1", "att2 UNLIKE v2"] |
| blackbox-constraints = [] //placement constraints to use for blackbox containers |
| constraint-delimiter = " "//used to parse constraint strings |
| teardown-on-exit = true //set to true to disable the mesos framework on system exit; set for false for HA deployments |
| offer-refuse-duration = 5 seconds //minimum time until an offer will arrive again at a particular invoker |
| heartbeat-max-failures = 2 //number of missed heartbeats from mesos master until resubscribe |
| timeouts { |
| failover = 0 seconds //Timeout allowed for framework to reconnect after disconnection. |
| task-launch = 45 seconds //timeout for creating mesos tasks (containers) |
| task-delete = 30 seconds //timeout for destroying mesos tasks (containers) |
| subscribe = 10 seconds //timeout for framework subscription handshake |
| teardown = 30 seconds //timeout for framework teardown |
| } |
| health-check {#Remove health-section section to disable healthchecks at action containers |
| port-index = 0 //should always be port 0 (action container should only listen on 1 port) |
| delay = 0 seconds //the amount of time (in seconds) to wait until starting checking the task. |
| interval = 1 seconds //the interval (in seconds) between check attempts. |
| timeout = 1 seconds //the amount of time (in seconds) to wait for the check to complete |
| grace-period = 25 seconds //the amount of time after the task is launched during which health check failures are ignored. |
| max-consecutive-failures = 3 //the number of consecutive failures until the task is killed by the executor. |
| } |
| } |
| |
| yarn { |
| master-url="http://localhost:8088" //YARN Resource Manager endpoint to be accessed from the invoker |
| yarn-link-log-message=true //If true, display a link to YARN in the static log message, otherwise do not include a link to YARN. |
| service-name="openwhisk-action-service" //Name of the YARN Service created by the invoker. The invoker number will be appended. |
| auth-type="simple" //Authentication type for YARN (simple or kerberos) |
| kerberos-principal="" //Kerberos principal to use for the YARN service. Note: must include a hostname |
| kerberos-keytab="" //Location of keytab accessible by all node managers |
| queue="default" //Name of the YARN queue where the service will be created |
| memory=256 //Memory used by each YARN container |
| cpus=1 //CPUs used by each YARN container |
| } |
| |
| logstore { |
| #SplunkLogStore configuration |
| #splunk { |
| # host = "splunkhost" #splunk api hostname |
| # port = 8089 #splunk api port |
| # username = "splunkapiusername" #splunk api username |
| # password = "splunkapipassword" #splunk api password |
| # index = "splunkindex" #splunk index name |
| # log-timestamp-field = "log_timestamp" #splunk field where timestamp is stored (to reflect log event generated time, not splunk's _time) |
| # log-stream-field = "log_stream" #splunk field where stream is stored (stdout/stderr) |
| # log-message-field = "log_message" #splunk field where log message is stored |
| # namespace-field = "namespace" #splunk field where namespace is stored |
| # activation-id-field = "activation_id" #splunk field where activation id is stored |
| # query-constraints = "" #additional constraints for splunk queries |
| # finalize-max-time = 10.seconds #splunk api max_time The number of seconds to run this search before finalizing. Specify 0 to never finalize. |
| # earliest-time-offset = 7.days #splunk query will search for records no older than the offset defined; e.g. "earliest_time=now() - offset" |
| # query-timestamp-offset = 2.seconds #splunk query will be broadened by this 2*<offset value>; e.g. "earliest_time=activation.start - offset" and "latest_time=activation.end + offset" |
| # disable-sni = false #if true, disables hostname validation and cert validation (in case splunk api endpoint is using a self signed cert) |
| #} |
| } |
| |
| # tracing configuration |
| tracing { |
| cache-expiry = 30 seconds #how long to keep spans in cache. Set to appropriate value to trace long running requests |
| #Zipkin configuration. Uncomment following to enable zipkin based tracing |
| #zipkin { |
| # url = "http://localhost:9411" //url to connecto to zipkin server |
| //sample-rate to decide a request is sampled or not. |
| //sample-rate 0.5 eqauls to sampling 50% of the requests |
| //sample-rate of 1 means 100% sampling. |
| //sample-rate of 0 means no sampling |
| # sample-rate = "0.01" // sample 1% of requests by default |
| #} |
| } |
| |
| controller { |
| activation { |
| polling-from-db = true |
| max-wait-for-blocking-activation = 60 seconds |
| } |
| } |
| |
| feature-flags { |
| # Enables support for `provide-api-key` annotation. |
| # See https://github.com/apache/openwhisk/pull/4284 |
| # for details |
| require-api-key-annotation = true |
| |
| # Enables the support to receive the response payload |
| # for POST and DELETE APIs |
| # See: https://github.com/apache/openwhisk/issues/3274 |
| require-response-payload = true |
| } |
| |
| apache-client { |
| # By default Apache HTTP Client would not retry NoHttpResponseException cases |
| # For some setups like Standalone mode this setting may need to be enabled |
| # to work around some Docker network issue |
| # In general this setting should be left to its default disabled state |
| retry-no-http-response-exception = false |
| } |
| # Enabling this will start to encrypt all default parameters for actions and packages. Be careful using this as |
| # it will slowly migrate all the actions that have been 'updated' to use encrypted parameters but going back would |
| # require a currently non-existing migration step. |
| parameter-storage { |
| # The current algorithm to use for parameter encryption, this can be changed but you have to leave all the keys |
| # configured for any algorithm you used previously. |
| # Allowed values: |
| # "off|noop" -> no op/no encryption |
| # "aes-128" -> AES with 128 bit key (given as base64 encoded string) |
| # "aes-256" -> AES with 256 bit key (given as base64 encoded string) |
| current = "off" |
| # Base64 encoded 128 bit key |
| #aes-128 = "" |
| # Base64 encoded 256 bit key |
| #aes-256 = "" |
| } |
| } |
| #placeholder for test overrides so that tests can override defaults in application.conf (todo: move all defaults to reference.conf) |
| test { |
| } |