.. This work is licensed under a Creative Commons Attribution 4.0 International License. .. SPDX-License-Identifier: CC-BY-4.0 .. (c) Cisco Systems, Inc NFVbench Fluentd Integration ============================================ NFVbench has an optional fluentd integration to save logs and results. Configuring Fluentd to receive NFVbench logs and results -------------------------------------------------------- The following configurations should be added to Fluentd configuration file to enable logs or results. To receive logs, and forward to a storage server: In the example below nfvbench is the tag name for logs (which should be matched with logging_tag under NFVbench configuration), and storage backend is elasticsearch which is running at localhost:9200. .. code-block:: bash @type copy @type elasticsearch host localhost port 9200 logstash_format true logstash_prefix nfvbench utc_index false flush_interval 15s To receive results, and forward to a storage server: In the example below resultnfvbench is the tag name for results (which should be matched with result_tag under NFVbench configuration), and storage backend is elasticsearch which is running at localhost:9200. .. code-block:: bash @type copy @type elasticsearch host localhost port 9200 logstash_format true logstash_prefix resultnfvbench utc_index false flush_interval 15s Configuring NFVbench to connect Fluentd --------------------------------------- To configure NFVbench to connect Fluentd, fill following configuration parameters in the configuration file +------------------------------------------------------+------------------------------------------------------+ | Configuration | Description | +======================================================+======================================================+ | logging_tag | Tag for NFVbench logs, it should be the same tag | | | defined in Fluentd configuration | +------------------------------------------------------+------------------------------------------------------+ | result_tag | Tag for NFVbench results, it should be the same tag | | | defined in Fluentd configuration | +------------------------------------------------------+------------------------------------------------------+ | ip | ip address of Fluentd server | +------------------------------------------------------+------------------------------------------------------+ | port | port number of Fluentd serverd | +------------------------------------------------------+------------------------------------------------------+ An example of configuration for Fluentd working at 127.0.0.1:24224 and tags for logging is nfvbench and result is resultnfvbench .. code-block:: bash fluentd: # by default (logging_tag is empty) nfvbench log messages are not sent to fluentd # to enable logging to fluents, specify a valid fluentd tag name to be used for the # log records logging_tag: nfvbench # by default (result_tag is empty) nfvbench results are not sent to fluentd # to enable sending nfvbench results to fluentd, specify a valid fluentd tag name # to be used for the results records, which is different than logging_tag result_tag: resultnfvbench # IP address of the server, defaults to loopback ip: 127.0.0.1 # port # to use, by default, use the default fluentd forward port port: 24224 Example of logs and results --------------------------- An example of log obtained from fluentd by elasticsearch: .. code-block:: bash { "_index": "nfvbench-2017.10.17", "_type": "fluentd", "_id": "AV8rhnCjTgGF_dX8DiKK", "_version": 1, "_score": 3, "_source": { "loglevel": "INFO", "message": "Service chain 'PVP' run completed.", "@timestamp": "2017-10-17T18:09:09.516897+0000", "runlogdate": "2017-10-17T18:08:51.851253+0000" }, "fields": { "@timestamp": [ 1508263749516 ] } } For each packet size and rate a result record is sent. Users can label those results by passing --user-label parameter to NFVbench run .. code-block::bash nfvbench --rate 1% --user-label nfvbench-label And the results of this command obtained from fluentd by elasticsearch: .. code-block:: bash { "_index": "resultnfvbench-2017.10.17", "_type": "fluentd", "_id": "AV8rjYlbTgGF_dX8Drl1", "_version": 1, "_score": null, "_source": { "compute_nodes": [ "nova:compute-3" ], "total_orig_rate_bps": 200000000, "@timestamp": "2017-10-17T18:16:43.755240+0000", "frame_size": "64", "forward_orig_rate_pps": 148809, "flow_count": 10000, "avg_delay_usec": 6271, "total_tx_rate_pps": 283169, "total_tx_rate_bps": 190289668, "forward_tx_rate_bps": 95143832, "reverse_tx_rate_bps": 95145836, "forward_tx_rate_pps": 141583, "chain_analysis_duration": "60.091", "service_chain": "PVP", "version": "1.0.10.dev1", "runlogdate": "2017-10-17T18:10:12.134260+0000", "Encapsulation": "VLAN", "user_label": "nfvbench-label", "min_delay_usec": 70, "profile": "traffic_profile_64B", "reverse_rx_rate_pps": 68479, "reverse_rx_rate_bps": 46018044, "reverse_orig_rate_pps": 148809, "total_rx_rate_bps": 92030085, "drop_rate_percent": 51.6368455626846, "forward_orig_rate_bps": 100000000, "bidirectional": true, "vSwitch": "OPENVSWITCH", "sc_count": 1, "total_orig_rate_pps": 297618, "type": "single_run", "reverse_orig_rate_bps": 100000000, "total_rx_rate_pps": 136949, "max_delay_usec": 106850, "forward_rx_rate_pps": 68470, "forward_rx_rate_bps": 46012041, "reverse_tx_rate_pps": 141586 }, "fields": { "@timestamp": [ 1508264203755 ] }, "sort": [ 1508264203755 ] }