[
    {
        "desc": "Whether to suppress the results of the Log Directory Free Space heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: Log Directory Free Space",
        "name": "role_health_suppression_flume_agent_log_directory_free_space",
        "value": "false"
    },
    {
        "desc": "Enables the health test that the Agent's process state is consistent with the role configuration",
        "display_name": "Agent Process Health Test",
        "name": "flume_agent_scm_health_enabled",
        "value": "true"
    },
    {
        "desc": "When computing the overall Agent health, consider the host's health.",
        "display_name": "Agent Host Health Test",
        "name": "flume_agent_host_health_enabled",
        "value": "true"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Role Triggers parameter.",
        "display_name": "Suppress Parameter Validation: Role Triggers",
        "name": "role_config_suppression_role_triggers",
        "value": "false"
    },
    {
        "desc": "The health test thresholds for unexpected exits encountered within a recent period specified by the unexpected_exits_window configuration for the role.",
        "display_name": "Unexpected Exits Thresholds",
        "name": "unexpected_exits_thresholds",
        "value": "{\"critical\":\"any\",\"warning\":\"never\"}"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Agent Name parameter.",
        "display_name": "Suppress Parameter Validation: Agent Name",
        "name": "role_config_suppression_agent_name",
        "value": "false"
    },
    {
        "desc": "Path to directory where heap dumps are generated when java.lang.OutOfMemoryError error is thrown. This directory is automatically created if it does not exist. If this directory already exists, role user must have write access to this directory. If this directory is shared among multiple roles, it should have 1777 permissions. The heap dump files are created with 600 permissions and are owned by the role user. The amount of free space in this directory should be greater than the maximum Java Process heap size configured for this role.",
        "display_name": "Heap Dump Directory",
        "name": "oom_heap_dump_dir",
        "value": "/tmp"
    },
    {
        "desc": "The directory in which stacks logs are placed. If not set, stacks are logged into a <span class='code'>stacks</span> subdirectory of the role's log directory.",
        "display_name": "Stacks Collection Directory",
        "name": "stacks_collection_directory",
        "value": null
    },
    {
        "desc": "The health test thresholds on the swap memory usage of the process.",
        "display_name": "Process Swap Memory Thresholds",
        "name": "process_swap_memory_thresholds",
        "value": "{\"critical\":\"never\",\"warning\":\"any\"}"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Stacks Collection Directory parameter.",
        "display_name": "Suppress Parameter Validation: Stacks Collection Directory",
        "name": "role_config_suppression_stacks_collection_directory",
        "value": "false"
    },
    {
        "desc": "Whether to suppress the results of the Host Health heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: Host Health",
        "name": "role_health_suppression_flume_agent_host_health",
        "value": "false"
    },
    {
        "desc": "For advanced use only, key-value pairs (one on each line) to be inserted into a role's environment. Applies to configurations of this role except client configuration.",
        "display_name": "Agent Environment Advanced Configuration Snippet (Safety Valve)",
        "name": "AGENT_role_env_safety_valve",
        "value": null
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Agent Logging Advanced Configuration Snippet (Safety Valve) parameter.",
        "display_name": "Suppress Parameter Validation: Agent Logging Advanced Configuration Snippet (Safety Valve)",
        "name": "role_config_suppression_log4j_safety_valve",
        "value": "false"
    },
    {
        "desc": "Number of CPU shares to assign to this role. The greater the number of shares, the larger the share of the host's CPUs that will be given to this role when the host experiences CPU contention. Must be between 2 and 262144. Defaults to 1024 for processes not managed by Cloudera Manager.",
        "display_name": "Cgroup CPU Shares",
        "name": "rm_cpu_shares",
        "value": "1024"
    },
    {
        "desc": "Maximum size in bytes for the Java Process heap memory.  Passed to Java -Xmx.",
        "display_name": "Java Heap Size of Agent in Bytes",
        "name": "agent_java_heapsize",
        "value": "1073741824"
    },
    {
        "desc": "The method used to collect stacks. The jstack option involves periodically running the jstack command against the role's daemon process. The servlet method is available for those roles that have an HTTP server endpoint exposing the current stacks traces of all threads. When the servlet method is selected, that HTTP endpoint is periodically scraped.",
        "display_name": "Stacks Collection Method",
        "name": "stacks_collection_method",
        "value": "jstack"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Rules to Extract Events from Log Files parameter.",
        "display_name": "Suppress Parameter Validation: Rules to Extract Events from Log Files",
        "name": "role_config_suppression_log_event_whitelist",
        "value": "false"
    },
    {
        "desc": "Text that goes verbatim into grok-dictionary.conf file used by the Flume-NG Solr sink.",
        "display_name": "Grok Dictionary File",
        "name": "agent_grok_dictionary_conf_file",
        "value": "USERNAME [a-zA-Z0-9._-]+\nUSER %{USERNAME}\nINT (?:[+-]?(?:[0-9]+))\nBASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+)))\nNUMBER (?:%{BASE10NUM})\nBASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))\nBASE16FLOAT \\b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\\.[0-9A-Fa-f]*)?)|(?:\\.[0-9A-Fa-f]+)))\\b\n\nPOSINT \\b(?:[1-9][0-9]*)\\b\nNONNEGINT \\b(?:[0-9]+)\\b\nWORD \\b\\w+\\b\nNOTSPACE \\S+\nSPACE \\s*\nDATA .*?\nGREEDYDATA .*\n#QUOTEDSTRING (?:(?<!\\\\)(?:\"(?:\\\\.|[^\\\\\"])*\"|(?:'(?:\\\\.|[^\\\\'])*')|(?:`(?:\\\\.|[^\\\\`])*`)))\nQUOTEDSTRING (?>(?<!\\\\)(?>\"(?>\\\\.|[^\\\\\"]+)+\"|\"\"|(?>'(?>\\\\.|[^\\\\']+)+')|''|(?>`(?>\\\\.|[^\\\\`]+)+`)|``))\nUUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}\n\n# Networking\nMAC (?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC})\nCISCOMAC (?:(?:[A-Fa-f0-9]{4}\\.){2}[A-Fa-f0-9]{4})\nWINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})\nCOMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})\nIP (?<![0-9])(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))(?![0-9])\nHOSTNAME \\b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\\.?|\\b)\nHOST %{HOSTNAME}\nIPORHOST (?:%{HOSTNAME}|%{IP})\n#HOSTPORT (?:%{IPORHOST=~/\\./}:%{POSINT}) # WH\n\n# paths\nPATH (?:%{UNIXPATH}|%{WINPATH})\nUNIXPATH (?>/(?>[\\w_%!$@:.,-]+|\\\\.)*)+\n#UNIXPATH (?<![\\w\\/])(?:/[^\\/\\s?*]*)+\nLINUXTTY (?>/dev/pts/%{NONNEGINT})\nBSDTTY (?>/dev/tty[pq][a-z0-9])\nTTY (?:%{BSDTTY}|%{LINUXTTY})\nWINPATH (?>[A-Za-z]+:|\\\\)(?:\\\\[^\\\\?*]*)+\nURIPROTO [A-Za-z]+(\\+[A-Za-z+]+)?\nURIHOST %{IPORHOST}(?::%{POSINT:port})?\n# uripath comes loosely from RFC1738, but mostly from what Firefox\n# doesn't turn into %XX\nURIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=#%_\\-]*)+\n#URIPARAM \\?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?\nURIPARAM \\?[A-Za-z0-9$.+!*'|(){},~#%&/=:;_?\\-\\[\\]]*\nURIPATHPARAM %{URIPATH}(?:%{URIPARAM})?\nURI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?\n\n# Months: January, Feb, 3, 03, 12, December\nMONTH \\b(?:Jan(?:uary)?|Feb(?:ruary)?|Mar(?:ch)?|Apr(?:il)?|May|Jun(?:e)?|Jul(?:y)?|Aug(?:ust)?|Sep(?:tember)?|Oct(?:ober)?|Nov(?:ember)?|Dec(?:ember)?)\\b\nMONTHNUM (?:0?[1-9]|1[0-2])\nMONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])\n\n# Days: Monday, Tue, Thu, etc...\nDAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)\n\n# Years?\nYEAR (?>\\d\\d){1,2}\n# Time: HH:MM:SS\n#TIME \\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?\n# I'm still on the fence about using grok to perform the time match,\n# since it's probably slower.\n# TIME %{POSINT<24}:%{POSINT<60}(?::%{POSINT<60}(?:\\.%{POSINT})?)?\nHOUR (?:2[0123]|[01]?[0-9])\nMINUTE (?:[0-5][0-9])\n# '60' is a leap second in most time standards and thus is valid.\nSECOND (?:(?:[0-5][0-9]|60)(?:[:.,][0-9]+)?)\nTIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])\n# datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)\nDATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}\nDATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}\nISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))\nISO8601_SECOND (?:%{SECOND}|60)\nTIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?\nDATE %{DATE_US}|%{DATE_EU}\nDATESTAMP %{DATE}[- ]%{TIME}\nTZ (?:[PMCE][SD]T)\nDATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}\nDATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}\n\n# Syslog Dates: Month Day HH:MM:SS\nSYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}\nPROG (?:[\\w._/%-]+)\nSYSLOGPROG %{PROG:program}(?:\\[%{POSINT:pid}\\])?\nSYSLOGHOST %{IPORHOST}\nSYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>\nHTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}\n\n# Shortcuts\nQS %{QUOTEDSTRING}\n\n# Log formats\nSYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:\nCOMBINEDAPACHELOG %{IPORHOST:clientip} %{USER:ident} %{USER:auth} \\[%{HTTPDATE:timestamp}\\] \"(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{QS:referrer} %{QS:agent}\n\n# Log Levels\nLOGLEVEL ([T|t]race|TRACE|[D|d]ebug|DEBUG|[N|n]otice|NOTICE|[I|i]nfo|INFO|[W|w]arn?(?:ing)?|WARN?(?:ING)?|[E|e]rr?(?:or)?|ERR?(?:OR)?|[C|c]rit?(?:ical)?|CRIT?(?:ICAL)?|[F|f]atal|FATAL|[S|s]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)"
    },
    {
        "desc": "The minimum log level for Agent logs",
        "display_name": "Agent Logging Threshold",
        "name": "log_threshold",
        "value": "INFO"
    },
    {
        "desc": "Used to select an agent configuration to use from flume.conf. Multiple agents may share the same agent name, in which case they will be assigned the same agent configuration.",
        "display_name": "Agent Name",
        "name": "agent_name",
        "value": "tier1"
    },
    {
        "desc": "The health test thresholds for monitoring of free space on the filesystem that contains this role's log directory. Specified as a percentage of the capacity on that filesystem. This setting is not used if a Log Directory Free Space Monitoring Absolute Thresholds setting is configured.",
        "display_name": "Log Directory Free Space Monitoring Percentage Thresholds",
        "name": "log_directory_free_space_percentage_thresholds",
        "value": "{\"critical\":\"never\",\"warning\":\"never\"}"
    },
    {
        "desc": "Text that goes verbatim into custom-mimetypes.xml file used by the Flume-NG Solr sink.",
        "display_name": "Custom Mime-types File",
        "name": "agent_custom_mimetypes_file",
        "value": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor\n  license agreements. See the NOTICE file distributed with this work for additional\n  information regarding copyright ownership. The ASF licenses this file to\n  You under the Apache License, Version 2.0 (the \"License\"); you may not use\n  this file except in compliance with the License. You may obtain a copy of\n  the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required\n  by applicable law or agreed to in writing, software distributed under the\n  License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS\n  OF ANY KIND, either express or implied. See the License for the specific\n  language governing permissions and limitations under the License. -->\n\n<mime-info>\n\n  <mime-type type=\"text/space-separated-values\">\n    <glob pattern=\"*.ssv\"/>\n  </mime-type>\n\n  <mime-type type=\"avro/binary\">\n    <magic priority=\"50\">\n      <match value=\"0x4f626a01\" type=\"string\" offset=\"0\"/>       \n    </magic>\n    <glob pattern=\"*.avro\"/>\n  </mime-type>\n\n  <mime-type type=\"mytwittertest/json+delimited+length\">\n    <magic priority=\"50\">\n      <match value=\"[0-9]+(\\r)?\\n\\\\{&quot;\" type=\"regex\" offset=\"0:16\"/>       \n    </magic>\n  </mime-type>\n  \n  <mime-type type=\"application/hadoop-sequence-file\">\n    <magic priority=\"50\">\n      <match value=\"SEQ[\\0-\\6]\" type=\"regex\" offset=\"0\"/>\n    </magic>\n  </mime-type>\n  \n</mime-info>"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Grok Dictionary File parameter.",
        "display_name": "Suppress Parameter Validation: Grok Dictionary File",
        "name": "role_config_suppression_agent_grok_dictionary_conf_file",
        "value": "false"
    },
    {
        "desc": "When set, a SIGKILL signal is sent to the role process when java.lang.OutOfMemoryError is thrown.",
        "display_name": "Kill When Out of Memory",
        "name": "oom_sigkill_enabled",
        "value": "true"
    },
    {
        "desc": "Enables the health test that the Cloudera Manager Agent can successfully contact and gather metrics from the web server.",
        "display_name": "Web Metric Collection",
        "name": "agent_web_metric_collection_enabled",
        "value": "true"
    },
    {
        "desc": "The health test thresholds on the duration of the metrics request to the web server.",
        "display_name": "Web Metric Collection Duration",
        "name": "agent_web_metric_collection_thresholds",
        "value": "{\"critical\":\"never\",\"warning\":\"10000.0\"}"
    },
    {
        "desc": "Whether to suppress the results of the Web Server Status heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: Web Server Status",
        "name": "role_health_suppression_flume_agent_web_metric_collection",
        "value": "false"
    },
    {
        "desc": "When set, generates heap dump file when java.lang.OutOfMemoryError is thrown.",
        "display_name": "Dump Heap When Out of Memory",
        "name": "oom_heap_dump_enabled",
        "value": "false"
    },
    {
        "desc": "The maximum number of rolled log files to keep for Agent logs.  Typically used by log4j or logback.",
        "display_name": "Agent Maximum Log File Backups",
        "name": "max_log_backup_index",
        "value": "10"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Flume Home Directory parameter.",
        "display_name": "Suppress Parameter Validation: Flume Home Directory",
        "name": "role_config_suppression_agent_home_dir",
        "value": "false"
    },
    {
        "desc": "Whether or not periodic stacks collection is enabled.",
        "display_name": "Stacks Collection Enabled",
        "name": "stacks_collection_enabled",
        "value": "false"
    },
    {
        "desc": "If configured, overrides the process soft and hard rlimits (also called ulimits) for file descriptors to the configured value.",
        "display_name": "Maximum Process File Descriptors",
        "name": "rlimit_fds",
        "value": null
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the CDH Version Validator configuration validator.",
        "display_name": "Suppress Configuration Validator: CDH Version Validator",
        "name": "role_config_suppression_cdh_version_validator",
        "value": "false"
    },
    {
        "desc": "Whether to suppress the results of the Unexpected Exits heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: Unexpected Exits",
        "name": "role_health_suppression_flume_agent_unexpected_exits",
        "value": "false"
    },
    {
        "desc": "Whether to suppress the results of the Swap Memory Usage heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: Swap Memory Usage",
        "name": "role_health_suppression_flume_agent_swap_memory_usage",
        "value": "false"
    },
    {
        "desc": "Disables import of ZooKeeper configuration from the HBase classpath. This prevents zoo.cfg from overriding hbase-site.xml for Zookeeper quorum information. This option is only supported on CDH 4.4 or later deployments.",
        "display_name": "HBase sink prefer hbase-site.xml over Zookeeper config",
        "name": "agent_disable_zoo_cfg",
        "value": "true"
    },
    {
        "desc": "Whether to suppress the results of the Heap Dump Directory Free Space heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: Heap Dump Directory Free Space",
        "name": "role_health_suppression_flume_agent_heap_dump_directory_free_space",
        "value": "false"
    },
    {
        "desc": "Whether to suppress the results of the File Descriptors heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: File Descriptors",
        "name": "role_health_suppression_flume_agent_file_descriptor",
        "value": "false"
    },
    {
        "desc": "Soft memory limit to assign to this role, enforced by the Linux kernel. When the limit is reached, the kernel will reclaim pages charged to the process if and only if the host is facing memory pressure. If reclaiming fails, the kernel may kill the process. Both anonymous as well as page cache pages contribute to the limit. Use a value of -1 B to specify no limit. By default processes not managed by Cloudera Manager will have no limit.",
        "display_name": "Cgroup Memory Soft Limit",
        "name": "rm_memory_soft_limit",
        "value": "-1"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Flume Agent Log Directory parameter.",
        "display_name": "Suppress Parameter Validation: Flume Agent Log Directory",
        "name": "role_config_suppression_flume_agent_log_dir",
        "value": "false"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Morphlines File parameter.",
        "display_name": "Suppress Parameter Validation: Morphlines File",
        "name": "role_config_suppression_agent_morphlines_conf_file",
        "value": "false"
    },
    {
        "desc": "These arguments will be passed as part of the Java command line. Commonly, garbage collection flags or extra debugging flags would be passed here. Note that Flume agent only uses options that start with -D and -X (including -XX).",
        "display_name": "Java Configuration Options for Flume Agent",
        "name": "flume_agent_java_opts",
        "value": ""
    },
    {
        "desc": "Text that goes into morphlines.conf file used by the Flume-NG Solr sink. The text goes verbatim into the config file except that $ZK_HOST is replaced by the ZooKeeper quorum of the Solr service.",
        "display_name": "Morphlines File",
        "name": "agent_morphlines_conf_file",
        "value": "# Licensed to the Apache Software Foundation (ASF) under one\n# or more contributor license agreements.  See the NOTICE file\n# distributed with this work for additional information\n# regarding copyright ownership.  The ASF licenses this file\n# to you under the Apache License, Version 2.0 (the\n# \"License\"); you may not use this file except in compliance\n# with the License.  You may obtain a copy of the License at\n#\n#  http://www.apache.org/licenses/LICENSE-2.0\n#\n# Unless required by applicable law or agreed to in writing,\n# software distributed under the License is distributed on an\n# \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n# KIND, either express or implied.  See the License for the\n# specific language governing permissions and limitations\n# under the License.\n\n# Application configuration file in HOCON format (Human-Optimized Config Object Notation). \n# HOCON syntax is defined at http://github.com/typesafehub/config/blob/master/HOCON.md\n# and also used by Akka (http://www.akka.io) and Play (http://www.playframework.org/).\n# For more examples see http://doc.akka.io/docs/akka/2.1.2/general/configuration.html\n\n# morphline.conf example file\n# this is a comment\n\n# Specify server locations in a SOLR_LOCATOR variable; used later in variable substitutions:\nSOLR_LOCATOR : {\n  # Name of solr collection\n  collection : collection1\n  \n  # ZooKeeper ensemble\n  zkHost : \"$ZK_HOST\"\n  \n  # Relative or absolute path to a directory containing conf/solrconfig.xml and conf/schema.xml\n  # If this path is uncommented it takes precedence over the configuration stored in ZooKeeper.  \n  # solrHomeDir : \"example/solr/collection1\"\n  \n  # The maximum number of documents to send to Solr per network batch (throughput knob)\n  # batchSize : 100\n}\n\n# Specify an array of one or more morphlines, each of which defines an ETL \n# transformation chain. A morphline consists of one or more (potentially \n# nested) commands. A morphline is a way to consume records (e.g. Flume events, \n# HDFS files or blocks), turn them into a stream of records, and pipe the stream \n# of records through a set of easily configurable transformations on it's way to \n# Solr (or a MapReduceIndexerTool RecordWriter that feeds via a Reducer into Solr).\nmorphlines : [\n  {\n    # Name used to identify a morphline. E.g. used if there are multiple morphlines in a \n    # morphline config file\n    id : morphline1 \n    \n    # Import all morphline commands in these java packages and their subpackages.\n    # Other commands that may be present on the classpath are not visible to this morphline.\n    importCommands : [\"org.kitesdk.**\", \"org.apache.solr.**\"]\n    \n    commands : [                    \n      { \n        # Parse Avro container file and emit a record for each avro object\n        readAvroContainer {\n          # Optionally, require the input record to match one of these MIME types:\n          # supportedMimeTypes : [avro/binary]\n          \n          # Optionally, use a custom Avro schema in JSON format inline:\n          # schemaString : \"\"\"<json can go here>\"\"\"\n          \n          # Optionally, use a custom Avro schema file in JSON format:\n          # schemaFile : /path/to/syslog.avsc\n        }\n      } \n      \n      { \n        # Consume the output record of the previous command and pipe another record downstream.\n        #\n        # extractAvroPaths is a command that uses zero or more avro path expressions to extract \n        # values from an Avro object. Each expression consists of a record output field name (on \n        # the left side of the colon ':') as well as zero or more path steps (on the right hand \n        # side), each path step separated by a '/' slash. Avro arrays are traversed with the '[]'\n        # notation.\n        #\n        # The result of a path expression is a list of objects, each of which is added to the \n        # given record output field.\n        # \n        # The path language supports all Avro concepts, including nested structures, records, \n        # arrays, maps, unions, etc, as well as a flatten option that collects the primitives in \n        # a subtree into a flat list.\n        extractAvroPaths {\n          flatten : false\n          paths : { \n            id : /id            \n            text : /text      \n            user_friends_count : /user_friends_count\n            user_location : /user_location\n            user_description : /user_description\n            user_statuses_count : /user_statuses_count\n            user_followers_count : /user_followers_count\n            user_name : /user_name\n            user_screen_name : /user_screen_name\n            created_at : /created_at\n            retweet_count : /retweet_count\n            retweeted : /retweeted\n            in_reply_to_user_id : /in_reply_to_user_id\n            source : /source\n            in_reply_to_status_id : /in_reply_to_status_id\n            media_url_https : /media_url_https\n            expanded_url : /expanded_url\n          }\n        }\n      }\n      \n      # Consume the output record of the previous command and pipe another record downstream.\n      #\n      # convert timestamp field to native Solr timestamp format\n      # e.g. 2012-09-06T07:14:34Z to 2012-09-06T07:14:34.000Z\n      {\n        convertTimestamp {\n          field : created_at\n          inputFormats : [\"yyyy-MM-dd'T'HH:mm:ss'Z'\", \"yyyy-MM-dd\"]\n          inputTimezone : America/Los_Angeles\n#          outputFormat : \"yyyy-MM-dd'T'HH:mm:ss.SSSZ\"                                 \n          outputTimezone : UTC\n        }\n      }\n      \n      # Consume the output record of the previous command and pipe another record downstream.\n      #\n      # Command that sanitizes record fields that are unknown to Solr schema.xml by either \n      # deleting them (renameToPrefix is absent or a zero length string), or by moving them to a\n      # field prefixed with the given renameToPrefix (e.g. renameToPrefix = \"ignored_\" to use \n      # typical dynamic Solr fields).\n      #\n      # Recall that Solr throws an exception on any attempt to load a document that contains a \n      # field that isn't specified in schema.xml.\n      {\n        sanitizeUnknownSolrFields {\n          # Location from which to fetch Solr schema\n          solrLocator : ${SOLR_LOCATOR}\n          \n          # renameToPrefix : \"ignored_\"\n        }\n      }  \n            \n      # log the record at DEBUG level to SLF4J\n      { logDebug { format : \"output record: {}\", args : [\"@{}\"] } }    \n      \n      # load the record into a SolrServer or MapReduce SolrOutputFormat.\n      { \n        loadSolr {\n          solrLocator : ${SOLR_LOCATOR}\n        }\n      }\n    ]\n  }\n]\n"
    },
    {
        "desc": "Verbatim contents of flume.conf. Multiple agents may be configured from the same configuration file; the Agent Name setting can be overridden to select which agent configuration to use for each agent.<br/><br/>To integrate with a secured cluster, you can use the substitution strings \"<code>$KERBEROS_PRINCIPAL</code>\" and \"<code>$KERBEROS_KEYTAB</code>\", which will be replaced by the principal name and the keytab path respectively.",
        "display_name": "Configuration File",
        "name": "agent_config_file",
        "value": "# Please paste flume.conf here. Example:\n\n# Sources, channels, and sinks are defined per\n# agent name, in this case 'tier1'.\ntier1.sources  = source1\ntier1.channels = channel1\ntier1.sinks    = sink1\n\n# For each source, channel, and sink, set\n# standard properties.\ntier1.sources.source1.type     = netcat\ntier1.sources.source1.bind     = 127.0.0.1\ntier1.sources.source1.port     = 9999\ntier1.sources.source1.channels = channel1\ntier1.channels.channel1.type   = memory\ntier1.sinks.sink1.type         = logger\ntier1.sinks.sink1.channel      = channel1\n\n# Other properties are specific to each type of\n# source, channel, or sink. In this case, we\n# specify the capacity of the memory channel.\ntier1.channels.channel1.capacity = 100\n"
    },
    {
        "desc": "Whether to suppress the results of the Process Status heath test. The results of suppressed health tests are ignored when computing the overall health of the associated host, role or service, so suppressed health tests will not generate alerts.",
        "display_name": "Suppress Health Test: Process Status",
        "name": "role_health_suppression_flume_agent_scm_health",
        "value": "false"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Java Configuration Options for Flume Agent parameter.",
        "display_name": "Suppress Parameter Validation: Java Configuration Options for Flume Agent",
        "name": "role_config_suppression_flume_agent_java_opts",
        "value": "false"
    },
    {
        "desc": "The period to review when computing unexpected exits.",
        "display_name": "Unexpected Exits Monitoring Period",
        "name": "unexpected_exits_window",
        "value": "5"
    },
    {
        "desc": "Directory where Flume Agent will place its log files.",
        "display_name": "Flume Agent Log Directory",
        "name": "flume_agent_log_dir",
        "value": "/var/log/flume-ng"
    },
    {
        "desc": "<p>This file contains the rules which govern how log messages are turned into events by the custom log4j appender that this role loads. It is in JSON format, and is composed of a list of rules. Every log message is evaluated against each of these rules in turn to decide whether or not to send an event for that message.</p><p>Each rule has some or all of the following fields:</p><ul><li><span class='code'>alert</span> - whether or not events generated from this rule should be promoted to alerts. A value of \"true\" will cause alerts to be generated. If not specified, the default is \"false\".</li><li><span class='code'>rate</span> <strong>(mandatory)</strong> - the maximum number of log messages matching this rule that may be sent as events every minute. If more than <tt>rate</tt> matching log messages are received in a single minute, the extra messages are ignored. If rate is less than 0, the number of messages per minute is unlimited.</li><li><span class='code'>periodminutes</span>  - the number of minutes during which the publisher will only publish <tt>rate</tt> events or fewer. If not specified, the default is <strong>one minute</strong></li><li><span class='code'>threshold</span> - apply this rule only to messages with this log4j severity level or above. An example is \"WARN\" for warning level messages or higher.</li><li><span class='code'>content</span> - match only those messages whose contents match this regular expression.</li><li><span class='code'>exceptiontype</span> - match only those messages which are part of an exception message. The exception type must match this regular expression.</li></ul><br/><p>Example:<span class='code'>{\"alert\": false, \"rate\": 10, \"exceptiontype\": \"java.lang.StringIndexOutOfBoundsException\"}</span></p><p>This rule will send events to Cloudera Manager for every <span class='code'>StringIndexOutOfBoundsException</span>, up to a maximum of 10 every minute.</p>",
        "display_name": "Rules to Extract Events from Log Files",
        "name": "log_event_whitelist",
        "value": "{\n  \"version\": \"0\",\n  \"rules\": [\n    {\"alert\": false, \"rate\": 1, \"periodminutes\": 1, \"threshold\":\"FATAL\"},\n    {\"alert\": false, \"rate\": 0, \"threshold\":\"WARN\", \"content\": \".* is deprecated. Instead, use .*\"},\n    {\"alert\": false, \"rate\": 0, \"threshold\":\"WARN\", \"content\": \".* is deprecated. Use .* instead\"},\n    {\"alert\": false, \"rate\": 1, \"periodminutes\": 2, \"exceptiontype\": \".*\"},\n    {\"alert\": false, \"rate\": 1, \"periodminutes\": 1, \"threshold\":\"WARN\"}\n  ]\n}\n"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Custom Mime-types File parameter.",
        "display_name": "Suppress Parameter Validation: Custom Mime-types File",
        "name": "role_config_suppression_agent_custom_mimetypes_file",
        "value": "false"
    },
    {
        "desc": "The health test thresholds for monitoring of free space on the filesystem that contains this role's heap dump directory.",
        "display_name": "Heap Dump Directory Free Space Monitoring Absolute Thresholds",
        "name": "heap_dump_directory_free_space_absolute_thresholds",
        "value": "{\"critical\":\"5.36870912E9\",\"warning\":\"1.073741824E10\"}"
    },
    {
        "desc": "The amount of stacks data that is retained. After the retention limit is reached, the oldest data is deleted.",
        "display_name": "Stacks Collection Data Retention",
        "name": "stacks_collection_data_retention",
        "value": "104857600"
    },
    {
        "desc": "When set, this role's process is automatically (and transparently) restarted in the event of an unexpected failure.",
        "display_name": "Automatically Restart Process",
        "name": "process_auto_restart",
        "value": "true"
    },
    {
        "desc": "<p>The configured triggers for this role. This is a JSON formatted list of triggers. These triggers are evaluated as part as the health system. Every trigger expression is parsed, and if the trigger condition is met, the list of actions provided in the trigger expression is executed.</p><p>Each trigger has the following fields:</p><ul><li><code>triggerName</code> <strong>(mandatory)</strong> - The name of the trigger. This value must be unique for the specific role. </li><li><code>triggerExpression</code> <strong>(mandatory)</strong> - A tsquery expression representing the trigger. </li><li><code>streamThreshold</code> <strong>(optional)</strong> - The maximum number of streams that can satisfy a condition of a trigger before the condition fires. By default set to 0, and any stream returned causes the condition to fire. </li><li><code>enabled</code> <strong> (optional)</strong> - By default set to 'true'. If set to 'false', the trigger is not evaluated.</li><li><code>expressionEditorConfig</code> <strong> (optional)</strong> - Metadata for the trigger editor. If present, the trigger should only be edited from the Edit Trigger page; editing the trigger here can lead to inconsistencies.</li></ul></p><p>For example, the following JSON formatted trigger configured for a DataNode fires if the DataNode has more than 1500 file descriptors opened:</p><p><pre>[{\"triggerName\": \"sample-trigger\",\n  \"triggerExpression\": \"IF (SELECT fd_open WHERE roleName=$ROLENAME and last(fd_open) > 1500) DO health:bad\",\n  \"streamThreshold\": 0, \"enabled\": \"true\"}]</pre></p><p>See the trigger rules documentation for more details on how to write triggers using tsquery.</p><p>The JSON format is evolving and may change and, as a result, backward compatibility is not guaranteed between releases.</p>",
        "display_name": "Role Triggers",
        "name": "role_triggers",
        "value": "[]"
    },
    {
        "desc": "The health test thresholds of the number of file descriptors used. Specified as a percentage of file descriptor limit.",
        "display_name": "File Descriptor Monitoring Thresholds",
        "name": "flume_agent_fd_thresholds",
        "value": "{\"critical\":\"70.0\",\"warning\":\"50.0\"}"
    },
    {
        "desc": "List of Flume plugin directories. This overrides the default Flume plugin directory.",
        "display_name": "Plugin directories",
        "name": "agent_plugin_dirs",
        "value": "/usr/lib/flume-ng/plugins.d:/var/lib/flume-ng/plugins.d"
    },
    {
        "desc": "The maximum size, in megabytes, per log file for Agent logs.  Typically used by log4j or logback.",
        "display_name": "Agent Max Log Size",
        "name": "max_log_size",
        "value": "200"
    },
    {
        "desc": "The frequency with which stacks are collected.",
        "display_name": "Stacks Collection Frequency",
        "name": "stacks_collection_frequency",
        "value": "5.0"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Plugin directories parameter.",
        "display_name": "Suppress Parameter Validation: Plugin directories",
        "name": "role_config_suppression_agent_plugin_dirs",
        "value": "false"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Configuration File parameter.",
        "display_name": "Suppress Parameter Validation: Configuration File",
        "name": "role_config_suppression_agent_config_file",
        "value": "false"
    },
    {
        "desc": "Home directory for Flume user. The File Channel uses paths for checkpoint and data directories that are within the user home.",
        "display_name": "Flume Home Directory",
        "name": "agent_home_dir",
        "value": "/var/lib/flume-ng"
    },
    {
        "desc": "For advanced use only, a string to be inserted into <strong>log4j.properties</strong> for this role only.",
        "display_name": "Agent Logging Advanced Configuration Snippet (Safety Valve)",
        "name": "log4j_safety_valve",
        "value": null
    },
    {
        "desc": "The port on which the Flume web server listens for requests.",
        "display_name": "HTTP Port",
        "name": "agent_http_port",
        "value": "41414"
    },
    {
        "desc": "When set, Cloudera Manager will send alerts when the health of this role reaches the threshold specified by the EventServer setting eventserver_health_events_alert_threshold",
        "display_name": "Enable Health Alerts for this Role",
        "name": "enable_alerts",
        "value": "true"
    },
    {
        "desc": "When set, Cloudera Manager will send alerts when this entity's configuration changes.",
        "display_name": "Enable Configuration Change Alerts",
        "name": "enable_config_alerts",
        "value": "false"
    },
    {
        "desc": "Hard memory limit to assign to this role, enforced by the Linux kernel. When the limit is reached, the kernel will reclaim pages charged to the process. If reclaiming fails, the kernel may kill the process. Both anonymous as well as page cache pages contribute to the limit. Use a value of -1 B to specify no limit. By default processes not managed by Cloudera Manager will have no limit.",
        "display_name": "Cgroup Memory Hard Limit",
        "name": "rm_memory_hard_limit",
        "value": "-1"
    },
    {
        "desc": "Weight for the read I/O requests issued by this role. The greater the weight, the higher the priority of the requests when the host experiences I/O contention. Must be between 100 and 1000. Defaults to 1000 for processes not managed by Cloudera Manager.",
        "display_name": "Cgroup I/O Weight",
        "name": "rm_io_weight",
        "value": "500"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Heap Dump Directory parameter.",
        "display_name": "Suppress Parameter Validation: Heap Dump Directory",
        "name": "role_config_suppression_oom_heap_dump_dir",
        "value": "false"
    },
    {
        "desc": "The health test thresholds for monitoring of free space on the filesystem that contains this role's log directory.",
        "display_name": "Log Directory Free Space Monitoring Absolute Thresholds",
        "name": "log_directory_free_space_absolute_thresholds",
        "value": "{\"critical\":\"5.36870912E9\",\"warning\":\"1.073741824E10\"}"
    },
    {
        "desc": "Whether to suppress configuration warnings produced by the built-in parameter validation for the Agent Environment Advanced Configuration Snippet (Safety Valve) parameter.",
        "display_name": "Suppress Parameter Validation: Agent Environment Advanced Configuration Snippet (Safety Valve)",
        "name": "role_config_suppression_agent_role_env_safety_valve",
        "value": "false"
    },
    {
        "desc": "The health test thresholds for monitoring of free space on the filesystem that contains this role's heap dump directory. Specified as a percentage of the capacity on that filesystem. This setting is not used if a Heap Dump Directory Free Space Monitoring Absolute Thresholds setting is configured.",
        "display_name": "Heap Dump Directory Free Space Monitoring Percentage Thresholds",
        "name": "heap_dump_directory_free_space_percentage_thresholds",
        "value": "{\"critical\":\"never\",\"warning\":\"never\"}"
    }
]