.. 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
]
}