| 1 | # yamllint disable rule:line-length |
| 2 | --- |
| 3 | id: 'export-aws-kinesis' |
| 4 | meta: |
| 5 | name: 'AWS Kinesis' |
| 6 | link: 'https://aws.amazon.com/kinesis/' |
| 7 | categories: |
| 8 | - export |
| 9 | icon_filename: 'aws-kinesis.svg' |
| 10 | keywords: |
| 11 | - exporter |
| 12 | - AWS |
| 13 | - Kinesis |
| 14 | overview: |
| 15 | exporter_description: | |
| 16 | Export metrics to AWS Kinesis Data Streams |
| 17 | exporter_limitations: '' |
| 18 | setup: |
| 19 | prerequisites: |
| 20 | list: |
| 21 | - title: '' |
| 22 | description: | |
| 23 | - First [install](https://docs.aws.amazon.com/en_us/sdk-for-cpp/v1/developer-guide/setup.html) AWS SDK for C++ |
| 24 | - Here are the instructions when building from source, to ensure 3rd party dependencies are installed: |
| 25 | ```bash |
| 26 | git clone --recursive https://github.com/aws/aws-sdk-cpp.git |
| 27 | cd aws-sdk-cpp/ |
| 28 | git submodule update --init --recursive |
| 29 | mkdir BUILT |
| 30 | cd BUILT |
| 31 | cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_ONLY=kinesis .. |
| 32 | make |
| 33 | make install |
| 34 | ``` |
| 35 | - `libcrypto`, `libssl`, and `libcurl` are also required to compile Netdata with Kinesis support enabled. |
| 36 | - Next, Netdata should be re-installed from the source. The installer will detect that the required libraries are now available. |
| 37 | configuration: |
| 38 | file: |
| 39 | name: 'exporting.conf' |
| 40 | options: |
| 41 | description: | |
| 42 | Netdata automatically computes a partition key for every record with the purpose to distribute records across available shards evenly. |
| 43 | The following options can be defined for this exporter. |
| 44 | folding: |
| 45 | title: 'Config options' |
| 46 | enabled: true |
| 47 | list: |
| 48 | - name: 'enabled' |
| 49 | default_value: 'no' |
| 50 | description: 'Enables or disables an exporting connector instance (yes|no).' |
| 51 | required: true |
| 52 | - name: 'destination' |
| 53 | default_value: 'no' |
| 54 | description: 'Accepts a space separated list of hostnames, IPs (IPv4 and IPv6) and ports to connect to. Netdata will use the first available to send the metrics.' |
| 55 | required: true |
| 56 | detailed_description: | |
| 57 | The format of each item in this list, is: [PROTOCOL:]IP[:PORT]. |
| 58 | - PROTOCOL can be udp or tcp. tcp is the default and only supported by the current exporting engine. |
| 59 | - IP can be XX.XX.XX.XX (IPv4), or [XX:XX...XX:XX] (IPv6). For IPv6 you can to enclose the IP in [] to separate it from the port. |
| 60 | - PORT can be a number of a service name. If omitted, the default port for the exporting connector will be used. |
| 61 | |
| 62 | Example IPv4: |
| 63 | ```yaml |
| 64 | destination = 10.11.14.2:4242 10.11.14.3:4242 10.11.14.4:4242 |
| 65 | ``` |
| 66 | Example IPv6 and IPv4 together: |
| 67 | ```yaml |
| 68 | destination = [ffff:...:0001]:2003 10.11.12.1:2003 |
| 69 | ``` |
| 70 | When multiple servers are defined, Netdata will try the next one when the previous one fails. |
| 71 | - name: 'username' |
| 72 | default_value: 'my_username' |
| 73 | description: 'Username for HTTP authentication' |
| 74 | required: false |
| 75 | - name: 'password' |
| 76 | default_value: 'my_password' |
| 77 | description: 'Password for HTTP authentication' |
| 78 | required: false |
| 79 | - name: 'data source' |
| 80 | default_value: '' |
| 81 | description: 'Selects the kind of data that will be sent to the external database. (as collected|average|sum)' |
| 82 | required: false |
| 83 | - name: 'hostname' |
| 84 | default_value: '[global].hostname' |
| 85 | description: 'The hostname to be used for sending data to the external database server.' |
| 86 | required: false |
| 87 | - name: 'prefix' |
| 88 | default_value: 'Netdata' |
| 89 | description: 'The prefix to add to all metrics.' |
| 90 | required: false |
| 91 | - name: 'update every' |
| 92 | default_value: '10' |
| 93 | description: | |
| 94 | Frequency of sending sending data to the external database, in seconds. |
| 95 | required: false |
| 96 | detailed_description: | |
| 97 | Netdata will add some randomness to this number, to prevent stressing the external server when many Netdata servers |
| 98 | send data to the same database. This randomness does not affect the quality of the data, only the time they are sent. |
| 99 | - name: 'buffer on failures' |
| 100 | default_value: '10' |
| 101 | description: | |
| 102 | The number of iterations (`update every` seconds) to buffer data, when the external database server is not available. |
| 103 | required: false |
| 104 | detailed_description: | |
| 105 | If the server fails to receive the data after that many failures, data loss on the connector instance is expected (Netdata will also log it). |
| 106 | - name: 'timeout ms' |
| 107 | default_value: '2 * update_every * 1000' |
| 108 | description: 'The timeout in milliseconds to wait for the external database server to process the data.' |
| 109 | required: false |
| 110 | - name: 'send hosts matching' |
| 111 | default_value: 'localhost *' |
| 112 | description: | |
| 113 | Hosts filter. Determines which hosts will be sent to the external database. The syntax is [simple patterns](https://github.com/netdata/netdata/tree/master/src/libnetdata/simple_pattern#simple-patterns). |
| 114 | required: false |
| 115 | detailed_description: | |
| 116 | Includes one or more space separated patterns, using * as wildcard (any number of times within each pattern). |
| 117 | The patterns are checked against the hostname (the localhost is always checked as localhost), allowing us to |
| 118 | filter which hosts will be sent to the external database when this Netdata is a central Netdata aggregating multiple hosts. |
| 119 | |
| 120 | A pattern starting with `!` gives a negative match. So to match all hosts named `*db*` except hosts containing `*child*`, |
| 121 | use `!*child* *db*` (so, the order is important: the first pattern matching the hostname will be used - positive or negative). |
| 122 | - name: 'send charts matching' |
| 123 | default_value: '*' |
| 124 | description: | |
| 125 | One or more space separated patterns (use * as wildcard) checked against both chart id and chart name. |
| 126 | required: false |
| 127 | detailed_description: | |
| 128 | A pattern starting with ! gives a negative match. So to match all charts named apps.* except charts ending in *reads, |
| 129 | use !*reads apps.* (so, the order is important: the first pattern matching the chart id or the chart name will be used, |
| 130 | positive or negative). There is also a URL parameter filter that can be used while querying allmetrics. The URL parameter |
| 131 | has a higher priority than the configuration option. |
| 132 | - name: 'send names instead of ids' |
| 133 | default_value: '' |
| 134 | description: 'Controls the metric names Netdata should send to the external database (yes|no).' |
| 135 | required: false |
| 136 | detailed_description: | |
| 137 | Netdata supports names and IDs for charts and dimensions. Usually IDs are unique identifiers as read by the system and names |
| 138 | are human friendly labels (also unique). Most charts and metrics have the same ID and name, but in several cases they are |
| 139 | different : disks with device-mapper, interrupts, QoS classes, statsd synthetic charts, etc. |
| 140 | - name: 'send configured labels' |
| 141 | default_value: '' |
| 142 | description: 'Controls if host labels defined in the `[host labels]` section in `netdata.conf` should be sent to the external database (yes|no).' |
| 143 | required: false |
| 144 | - name: 'send automatic labels' |
| 145 | default_value: '' |
| 146 | description: 'Controls if automatically created labels, like `_os_name` or `_architecture` should be sent to the external database (yes|no).' |
| 147 | required: false |
| 148 | examples: |
| 149 | folding: |
| 150 | enabled: true |
| 151 | title: '' |
| 152 | list: |
| 153 | - name: 'Example configuration' |
| 154 | folding: |
| 155 | enabled: false |
| 156 | description: 'Basic configuration' |
| 157 | config: | |
| 158 | [kinesis:my_instance] |
| 159 | enabled = yes |
| 160 | destination = us-east-1 |
| 161 | - name: 'Configuration with AWS credentials' |
| 162 | folding: |
| 163 | enabled: false |
| 164 | description: 'Add `:https` modifier to the connector type if you need to use the TLS/SSL protocol. For example: `remote_write:https:my_instance`.' |
| 165 | config: | |
| 166 | [kinesis:my_instance] |
| 167 | enabled = yes |
| 168 | destination = us-east-1 |
| 169 | # AWS credentials |
| 170 | aws_access_key_id = your_access_key_id |
| 171 | aws_secret_access_key = your_secret_access_key |
| 172 | # destination stream |
| 173 | stream name = your_stream_name |