PREREQUISITES:

Clone the OAM simulator from https://gerrit.o-ran-sc.org/r/admin/repos/oam. 


RUN THE SIMULATOR:

a. Change directory to folder /oam/solution/dev/client-scripts-ves-v7. 
Edit the "config" file and update value of properties as mentioned below. urlVes=http://<IP address of the host>:9999/eventListener/v7/events
basicAuthVes=user:password

b. run ./_example.sh. It will generate few events each of pnf, fault, threshold and measurement domains.

c. To generate events of Heartbeat domain, edit config.yaml file and update configuration as mentioned below.
vesEndpoint:
url: http://<IP address of the host>:9999/eventListener/v7/events
username: user
password: password

d. Execute sendVesHeartbeat.py to generate heartbeat events. Example: python3 sendVesHeartbeat.py


  • No labels

42 Comments

  1. One question, after device send the PNF registeration to ves collector, does SMO will trigger the O1 connection with device(netconf server) automaticly?

    1. Ideally ,it should be handled by O1 itself since  O1 have dmaap-listener running there 

    2. We will be adding this capability in the G-release. To be able to test this, we will need the PNF to send the event. How do we simulate that?

      1. I believe in ONAP PNF PnP use case is already implemented and ONAP uses SDNC and Dmaap for it. So  in the same way it can be achievable.

  2. How to distinguish the different node in the ves event?

    1. I am not sure I understand the question. What do you mean by different node in the VES event? Do you mean which Network Function (NF) in the RAN core send the event?

      p.s. I do not know why this message posted in March is showing up now in my mailbox.

  3. Hi, is there any simulated node capable of generating Performance data to be transferred over O1? Tried NF Simulator — onap master documentation - but it seems there are some build issues.

    1. Isn't performance data supposed to transferred over the O1/VES interface?

      1. Yes. Is there any simulated node which can act as the MnS Provider capable of producing PM files, to be transferred over O1/VES?

        1. You might want to look at the SIM project and talk to Alexandru Stancuabout using a simulator to run PM events.

          1. Thank you for the suggestion.

  4. While running _example.sh we are getting curl: (52) Empty reply from server - is this the expected response?

    1. Assuming this is for the O1/VES interface. Adding santanu deto the thread.

  5. Syama Nair , have you set correct information of below keys in config file?

    urlVes=https://localhost:9999/eventListener/v7/events
    basicAuthVes=user:password

  6. Hi, yes that is set correctly. The ves-collector is running on port 9999 as well.

    1. Could you share which collector you are running? If you have expected payload handy, you can compare the expected one with the actual one.

      1. Hi santanu de , I am running the ves-collector available here "https://gerrit.o-ran-sc.org/r/smo/ves". Could you also please let me know what the expected response is from the collector, after running _example.sh?

        1. You suppose to get 202 as response. Here is sample response .....


          ################################################################################
          # send 15min performance values

          eventType: O_RAN_COMPONENT
          pnfId:
          controllerName: ORAN-DEV
          intervalStartTime: Fri, 25 Nov 2022 09:30:00 +0000
          model:
          eventId: _1669369500_PM15min
          collectionEndTime: 1669369500000000
          granularity: PM15min
          intervalEndTime: Fri, 25 Nov 2022 09:45:00 +0000
          vendor:
          domain: measurement
          eventTime: 2022-11-25T09:48:05.305108Z
          collectionStartTime: 1669368600000000
          type: 1OSF
          timestamp: 1669369685305108
          interface:

          HTTP/1.1 202 Accepted
          Date: Fri, 25 Nov 2022 09:48:05 GMT
          Transfer-Encoding: chunked

          1. I recloned the latest version of the OAM repo, but still getting curl: (52) Empty reply from server while running _eample.sh as well as other scripts. 

            python3 sendVesHeartbeat.py has the following response: # send SDN-Controller heartbeat
            ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
            1. Syama Nair

              Could you share how are you running OAM simulator? If you attach any screenshot it would be great.

              1. Hi, I am trying to execute the steps mentioned in the beginning of this page - change config files and then execute _example.sh as well as send15minpm.sh. I am using WSL.


                1. There are 2 possibilities for getting "curl: (52) Empty reply from server"

                  1. The collector is not running on SSH. Are you able to access https://[IP or hostname]:9999/eventListener/v7/events url on browser? Collector must run on SSH.
                  2. Check "urlVes" in config file of the OAM simulator. Is it http or https?
                  1. Hi, santanu de

                    1.The url https://[IP or hostname]:9999/eventListener/v7/events is  not accessible (running locally).

                    2. urlVes is "http" in the config file.

                    1. It indicates that the collector is not running on https. Check this page https://docs.o-ran-sc.org/projects/o-ran-sc-smo-ves/en/latest/installation-guide.html regarding how to create self signed certificates.

                      Once done, collector should be accessible via https:// , then rectify the "urlVes" in config file of the OAM simulator.



                      1. Sure. Thank you so much for your help.

                      2. santanu desend15minpm.sh receiving 202 success response. Thank you so much for your help.

  7. Hi, when I was running the _example.sh, some events get 500 Internal server errors and some events get 401 unauthorized. I have set the URL and basicAuthVes in the config file.  And also checked the ves collector is also listening with port 9999. 

    Also, if I used curl in the terminal directly, I got a response with 400 bad request. Is there any suggestion that I need to check or fix to post it successfully?


    Thanks 

    1. Could you share which collector you are running on port 9999 ? Error code 400 indicates that the payload send by VES Simulator is different that what collector is expected.

      1. Hi santanu de,

        Thanks for your reply. I just follow this website to install the collector. Here is the link that I downloaded the collector. 


        Here is the URL I used and the JSON I sent. If you need more information, please let me know. Thank you so much.

        URL:  https://192.168.1.224:9999/eventListener/v7/events

        JSON:

        {
          "event": {
            "commonEventHeader": {
                "version": 3.0,
                "domain": "fault",
                "eventId": "fault0000000001",
                "eventName": "Fault_ricp_E2 CONNECTIVITY LOST TO E-NODEB",
                "lastEpochMicrosec": 1630681725452103,
                "nfNamingCode": "ricp",
                "nfcNamingCode": "ssc",
                "priority": "High",
                "reportingEntityId": "D703291B-8EE8-4F91-AE1C-E7BC6CE72EE9",
                "reportingEntityName": "Vespa",
                "sequence": 1,
                "sourceId": "de305d54-75b4-431b-adb2-eb6b9e546014",
                "sourceName": "RIC",
                "startEpochMicrosec": 1630681725452103
            },
            "faultFields": {
                "alarmCondition": "E2 CONNECTIVITY LOST TO E-NODEB",
                "eventSeverity": "CRITICAL",
                "eventSourceType": "virtualMachine",
                "faultFieldsVersion": 2,
                "specificProblem": "INFO-1:-",
                "vfStatus": "Active"
            }
          }
        }


        1. Are you using older version of OAM simulator? I compare the payload of Fault event with what I am running. I notice lot's of difference in payload. For example, your version is 3.0 where as mine is 4.1.


          {

          "event": {

          "commonEventHeader": {

          "domain": "fault",

          "eventId": "ORAN-DEV_northbound-interface_connectionLossNe",

          "eventName": "fault_ONAP_SDNR_Controller_Alarms_connectionLossNe",

          "eventType": "ONAP_SDNR_Controller_Alarms",

          "lastEpochMicrosec": 1669371523576057,

          "nfNamingCode": "SDNR",

          "nfVendorName": "ONAP",

          "priority": "High",

          "reportingEntityId": "",

          "reportingEntityName": "ORAN-DEV",

          "sequence": 0,

          "sourceId": "",

          "sourceName": "ORAN-DEV",

          "startEpochMicrosec": 1669371523576057,

          "timeZoneOffset": "+00:00",

          "version": "4.1",

          "vesEventListenerVersion": "7.2.1"

          },

          "faultFields": {

          "alarmAdditionalInformation": {

          "equipType": "SDNR",

          "eventTime": "2022-11-25T10:18:43.576057Z",

          "model": "ONAP Controller for Radio",

          "vendor": "ONAP"

          },

          "alarmCondition": "connectionLossNe",

          "alarmInterfaceA": "northbound-interface",

          "eventSeverity": "MAJOR",

          "eventSourceType": "ONAP_SDNR_Controller",

          "faultFieldsVersion": "4.0",

          "specificProblem": "connectionLossNe",

          "vfStatus": "Active"

          }

          }

          }


          1. Hi, santanu de,


            I used your JSON format and try it again and I got a different response after I tried. Usually, I just used curl to send the VES collector a request. Here is the command I used.

            $ curl -i -u admin:Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U -X POST -d @event.json --header "Content-Type: application/json" https://192.168.1.224:9999/eventListener/v5 -k


            The event.json is a JSON file as same as yours. And after I send a request. I got a response which is 401 Unauthorized. So, I am wondering if my command is wrong or not. Or I should change the user and password in the -u parameters? 


            Thanks & Regards



          2. Hi, santanu de


            I found that my user and password are wrong. After I changed it, it worked and I received 202 Accepted. But when I executed the ./_example.sh, some responses I got 202 but I also got 500 internal server errors. The figure is a result I executed the ./_example.sh. Is that a normal situation or do I need to config some files?


            Another question is once I send a request and got an accepted response, why it doesn't show the message the fault on the ONAP platform? Should I connect to another service so that I can see the message I send on the ONAP platform?


            Thanks & Regards



            1. Hi Marrrchia ,

              Glad to know that you able to send event to the O1/Ves interface. When you execute _example.sh, it sends different kind of events to the collector. You are getting 505 error for standardDefined event where as rest of events are perfect. If you are not worried about standardDefined event then you can ignore this error.


              I don't have any idea about ONAP project. I won't able to answer your question.

              1. Thanks for your help. Regards

  8. Hi santanu de

    Could you please help how to save data in historicalperformance15min-v6 or historicalperformance24h-v6 indexes. I am sending measurements(./oam/solution/dev/client-scripts-ves-v7/send15minPm.sh) to ves-collector and ves collector successfully sent event to onap-dmaap but I am not seeing any data in SDNR db for performance measurement events.

    could you please help me how to save data in sndr for performance measurement data.


    Thanks,

    Rani

    1. Hi Rani Borusu ,

      I am not sure about save data in historicalperformance15min-v6 or historicalperformance24h-v6 indexes. However collector saves event data in InfluxDB. You can access those data via API of InfluxDB, for example: http://smo-influxdb:8086/query?u=root&p=root&db=eventsdb&q=SELECT%20moving_average(%22cpuUsageUser%22,%205)%20FROM%20%22measurementcpuusage%22%20WHERE%20(%22system%22%20=~%20/^(unknown|ORAN-DEV)$/)%20AND%20time%20%3E=%20now()%20-%205m%20GROUP%20BY%20%22system%22,%20%22cpuIdentifier%22


  9. Hi santanu de Alexandru Stancu ,

    I was trying to send ves-pm-file-ready notifications from simulated RU/DU using ODLUX GUI to the ves-collector running at localhost:9999. But, the server is constantly sending an error status back. Could you please kindly help me with this? Thanks in advance.

    1. Syama Nair 

      Could you share the payload you are sending to the ves-collector?

      1. Sure. We are using a sample json file from the OAM project. It is kept at in a ftp server setup at local machine , which is given as the file location in the file ready notification.

        {
            "event": {
                "commonEventHeader": {
                    "domain": "measurement",
                    "eventId": "_1671443100_PM15min",
                    "eventName": "measurement_O_RAN_COMPONENT_PM15min",
                    "eventType": "O_RAN_COMPONENT_PM15min",
                    "sequence": 0,
                    "priority": "Low",
                    "reportingEntityId": "",
                    "reportingEntityName": "WSL-349.Aspire.lan",
                    "sourceId": "",
                    "sourceName": "",
                    "startEpochMicrosec": 1671442200000000,
                    "lastEpochMicrosec": 1671443100000000,
                    "internalHeaderFields": {
                        "intervalStartTime": "Mon, 19 Dec 2022 09:30:00 +0000",
                        "intervalEndTime": "Mon, 19 Dec 2022 09:45:00 +0000"
                    },
                    "version": "4.1",
                    "vesEventListenerVersion": "7.2.1"
                },
                "measurementFields": {
                    "additionalFields": {},
                    "additionalMeasurements": [{
                            "name": "-1",
                            "hashMap": {
                                "es": "0",
                                "ses": "1",
                                "cses": "0",
                                "unavailability": "0"
                            }
                        },
                        {
                            "name": "-2",
                            "hashMap": {
                                "es": "0",
                                "ses": "1",
                                "cses": "0",
                                "unavailability": "0"
                            }
                        }
                    ],
                    "networkSliceArray": [
                        {
                            "DRB.UEThpDl.SNSSAI": 5000,
                            "DRB.UEThpUl.SNSSAI": 4500,
                            "networkSliceIdentifier": "255FFFFFF"
                        },
                        {
                            "DRB.UEThpDl.SNSSAI": 4500,
                            "DRB.UEThpUl.SNSSAI": 5000,
                            "networkSliceIdentifier": "001FFFFFA"
                        }
                    ],
                    "additionalObjects": [],
                    "codecUsageArray": [],
                    "concurrentSessions": 2,
                    "configuredEntities": 2,
                    "cpuUsageArray": [],
                    "diskUsageArray": [],
                    "featureUsageArray": {
                        "https://www.itu.int/rec/T-REC-G.841": "true"
                    },
                    "filesystemUsageArray": [],
                    "hugePagesArray": [],
                    "ipmi": {},
                    "latencyDistribution": [],
                    "loadArray": [],
                    "machineCheckExceptionArray": [],
                    "meanRequestLatency": 1000,
                    "measurementInterval": 234,
                    "measurementFieldsVersion": "4.0",
                    "memoryUsageArray": [],
                    "numberOfMediaPortsInUse": 234,
                    "requestRate": 23,
                    "nfcScalingMetric": 3,
                    "nicPerformanceArray": [],
                    "processStatsArray": []
                }
            }
        }

        1. Syama Nair ,

          Payload is looking good. What's the error you are getting from ves-collector?

          I am assuming that ves-collector is running on HTTPS ( https://HOST:9999/eventListener/v7/events) and you put correct url in simulator.

          1. The ves event has not reached the ves-collector (running on HTTPS and succesfully receiving events from OAM repo and displaying on grafana). The error is originating from the simulated node itself. The simulator allows configuration of the ipaddress and port of ves endpoint, but I could not find any options for configuring the ves-url.