summaryrefslogtreecommitdiffstats
path: root/docs/testing/user/userguide/fluentd.rst
blob: 465d0a3164b3694c6dedb003c66c7bb2b3a37903 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
.. 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
    <match nfvbench.**>
    @type copy
    <store>
        @type elasticsearch
        host localhost
        port 9200
        logstash_format true
        logstash_prefix nfvbench
        utc_index false
        flush_interval 15s
    </store>
    </match>

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
    <match resultnfvbench.**>
    @type copy
    <store>
        @type elasticsearch
        host localhost
        port 9200
        logstash_format true
        logstash_prefix resultnfvbench
        utc_index false
        flush_interval 15s
    </store>
    </match>

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