...
2. MSB Configuration
Register so-orchestrationTasks and so-serviceInstances datalake interface to MSB.
Interface registration can be done through portal.
...
Please find below curl commands with required data to be populated in AAI, provide the worker vm ip for nfsServer. however, you do not need to create these service profiles manually because SO creates them for you in the e2e slice allocation. You only need to do it manually if you are not testing with SO and instead, you are calling UUI & KPI-MS directly (no SO involved)
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://'$nfsServer':30233/aai/v21/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/11a9195f-c060-49dd-8f1b-6a4c8ab5d01n -d '{ "service-instance-name": "e2eService1", "service-type": "embb", "service-role": "service-profile", "environment-context": "01-B989BD", "orchestration-status": "deactivated"}' curl --user AAI:AAI -X PUT -H "X-FromAppId:AAI" -H "X-TransactionId:get_aai_subscr" -H "Accept:application/json" -H "Content-Type:application/json" -k https://'$nfsServer':30233/aai/v21/business/customers/customer/5GCustomer/service-subscriptions/service-subscription/5G/service-instances/service-instance/259fa29d-d589-4142-a4f0-a689a5061878 -d '{ "service-instance-name": "e2eService2", "service-type": "embb", "service-role": "service-profile", "environment-context": "01-497651", "orchestration-status": "deactivated"}' |
...
- VES, PM mapper and DataFile Collector, dcae-mongodb, Datalake Extraction Service(DES) and Datalake-feeder services should be running.
...
4. DCAE-MONGO DB:
- Login to dcae-mongodb container and execute following commands to check if PM data was saved in DB:
- mongo
- use datalake
- db.unauthenticatedperformancemeasurements.find({})
to load sample data:
Code Block title mongodb sample data 1 linenumbers true collapse true db.unauthenticatedperformancemeasurements.insert({ "event": { "commonEventHeader": { "domain": "perf3gpp", "eventId": "dfe43a5c-0868-4275-b1c9-e45945b6a38c", "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult", "lastEpochMicrosec": 1610689590387, "priority": "Normal", "reportingEntityName": "", "sequence": 1, "sourceName": "cucpserver2", "startEpochMicrosec": 1610689590387, "version": 4, "vesEventListenerVersion": "7.1", "timeZoneOffset": "UTC+05:00" }, "perf3gppFields": { "perf3gppFieldsVersion": "1.0", "measDataCollection": { "granularityPeriod": 900, "measuredEntityUserName": "", "measuredEntityDn": "cucpserver2", "measuredEntitySoftwareVersion": "r0.1", "measInfoList": [ { "measInfoId": { "sMeasTypesList": "SLICE" }, "measTypes": { "sMeasTypesList": [ "PDUSessionEstSR.01-B989BD" ] }, "measValuesList": [ { "suspectFlag": false, "measResults": [ { "p": 1, "sValue": "166" } ] } ] } ] } } } })
Code Block title mongodb sample data 2 linenumbers true collapse true db.unauthenticatedperformancemeasurements.insert({ "event": { "commonEventHeader": { "domain": "perf3gpp", "eventId": "4ad683e3-40d0-47f5-8ba0-a8da51ff1ab5", "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult", "lastEpochMicrosec": 1606743157915, "priority": "Normal", "reportingEntityName": "", "sequence": 1, "sourceName": "cucpserver2", "startEpochMicrosec": 1606743157914, "version": 4, "vesEventListenerVersion": "7.1", "timeZoneOffset": "UTC+05:00" }, "perf3gppFields": { "perf3gppFieldsVersion": "1.0", "measDataCollection": { "granularityPeriod": 900, "measuredEntityUserName": "", "measuredEntityDn": "cucpserver2", "measuredEntitySoftwareVersion": "r0.1", "measInfoList": [ { "measInfoId": { "sMeasTypesList": "SLICE" }, "measTypes": { "sMeasTypesList": [ "PDUSessionEstSR.01-B989BD" ] }, "measValuesList": [ { "suspectFlag": false, "measResults": [ { "p": 1, "sValue": "188" } ] } ] } ] } } } })
Code Block title mongodb sample data 3 linenumbers true collapse true db.unauthenticatedperformancemeasurements.insert({ "event": { "commonEventHeader": { "domain": "perf3gpp", "eventId": "5105bf0e-f157-455f-b1eb-d686ddf39aa9", "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult", "lastEpochMicrosec": 1606753197538, "priority": "Normal", "reportingEntityName": "", "sequence": 1, "sourceName": "cucpserver2", "startEpochMicrosec": 1606753197537, "version": 4, "vesEventListenerVersion": "7.1", "timeZoneOffset": "UTC+05:00" }, "perf3gppFields": { "perf3gppFieldsVersion": "1.0", "measDataCollection": { "granularityPeriod": 900, "measuredEntityUserName": "", "measuredEntityDn": "cucpserver2", "measuredEntitySoftwareVersion": "r0.1", "measInfoList": [ { "measInfoId": { "sMeasTypesList": "SLICE" }, "measTypes": { "sMeasTypesList": [ "PDUSessionEstSR.01-B989BD" ] }, "measValuesList": [ { "suspectFlag": false, "measResults": [ { "p": 1, "sValue": "61" } ] } ] } ] } } } })
Code Block title mongodb sample data 4 linenumbers true collapse true db.unauthenticatedperformancemeasurements.insert({ "event": { "commonEventHeader": { "domain": "perf3gpp", "eventId": "24cf31f7-3def-43c1-85d8-4ad8041c5e08", "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult", "lastEpochMicrosec": 1610689590387, "priority": "Normal", "reportingEntityName": "", "sequence": 1, "sourceName": "cucpserver1", "startEpochMicrosec": 1610689590387, "version": 4.0, "vesEventListenerVersion": "7.1", "timeZoneOffset": "UTC+05:30" }, "perf3gppFields": { "perf3gppFieldsVersion": "1.0", "measDataCollection": { "granularityPeriod": 900, "measuredEntityUserName": "", "measuredEntityDn": "cucpserver1", "measuredEntitySoftwareVersion": "r0.1", "measInfoList": [{ "measInfoId": { "sMeasTypesList": "SLICE" }, "measTypes": { "sMeasTypesList": ["PDUSessionEstSR.01-497651"] }, "measValuesList": [{ "suspectFlag": false, "measResults": [{ "p": 1, "sValue": "228" }] }] }] } } } })
Code Block title mongodb sample data 5 linenumbers true collapse true db.unauthenticatedperformancemeasurements.insert({ "event": { "commonEventHeader": { "domain": "perf3gpp", "eventId": "22ad0df1-958b-4136-9053-57c3967a6207", "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult", "lastEpochMicrosec": 1606743157915, "priority": "Normal", "reportingEntityName": "", "sequence": 1, "sourceName": "cucpserver1", "startEpochMicrosec": 1606743157914, "version": 4.0, "vesEventListenerVersion": "7.1", "timeZoneOffset": "UTC+05:30" }, "perf3gppFields": { "perf3gppFieldsVersion": "1.0", "measDataCollection": { "granularityPeriod": 900, "measuredEntityUserName": "", "measuredEntityDn": "cucpserver1", "measuredEntitySoftwareVersion": "r0.1", "measInfoList": [{ "measInfoId": { "sMeasTypesList": "SLICE" }, "measTypes": { "sMeasTypesList": ["PDUSessionEstSR.01-497651"] }, "measValuesList": [{ "suspectFlag": false, "measResults": [{ "p": 1, "sValue": "137" }] }] }] } } } })
Code Block title mongodb sample data 6 linenumbers true collapse true db.unauthenticatedperformancemeasurements.insert({ "event": { "commonEventHeader": { "domain": "perf3gpp", "eventId": "c01bf72b-d4a3-42d6-a0bb-3d96bdacc503", "eventName": "perf3gpp_RnNode-Slicing_pmMeasResult", "lastEpochMicrosec": 1606753197538, "priority": "Normal", "reportingEntityName": "", "sequence": 1, "sourceName": "cucpserver1", "startEpochMicrosec": 1606753197537, "version": 4.0, "vesEventListenerVersion": "7.1", "timeZoneOffset": "UTC+05:30" }, "perf3gppFields": { "perf3gppFieldsVersion": "1.0", "measDataCollection": { "granularityPeriod": 900, "measuredEntityUserName": "", "measuredEntityDn": "cucpserver1", "measuredEntitySoftwareVersion": "r0.1", "measInfoList": [{ "measInfoId": { "sMeasTypesList": "SLICE" }, "measTypes": { "sMeasTypesList": ["PDUSessionEstSR.01-497651"] }, "measValuesList": [{ "suspectFlag": false, "measResults": [{ "p": 1, "sValue": "199" }] }] }] } } } })
...
5. Datalake Extraction Service(DES):
- Build presto image and push the images to a exsting repository
- Download and extract presto package version v0.0.2: presto-v0.0.2.tar.gz
- docker build -t presto:v0.0.2 .
- docker tag presto:v0.0.2 registry.baidubce.com/onap/presto:v0.0.2
- docker push registry.baidubce.com/onap/presto:v0.0.2
- Note: Replace the repository path with your own repository.
- Install presto service
- kubectl -n onap run dl-presto --image=presto:v0.0.2 --env="MongoDB_IP=dcae-mongohost" --env="MongoDB_PORT=27017" --image-pull-policy=IfNotPresent
- kubectl expose pod dl-presto --name=dl-presto --port=9000 --target-port=9000 --type=NodePort -n onap
Login to the dev-dcae-datalake-postgres-primary container and execute following sql commands:
Code Block title datalake-db init_data linenumbers true collapse true psql -Udatalake -ddatalake \dt delete from map_db_topic; delete from map_db_design; delete from db; delete from data_exposure ; insert into db (id, db_type_id, enabled, encrypt, name,host,port,database_name) values (2, 'MONGO', true, true, 'MongoDB 1','dcae-mongohost',27017,'datalake'); insert into map_db_topic(db_id,topic_id) select db.id, topic.id from db_type, db, topic where db.db_type_id=db_type.id and db_type.tool=false; update kafka set secure=true, pass='admin_secret' where id=1; insert into topic_name (id) values ('unauthenticated.PERFORMANCE_MEASUREMENTS'); insert into data_exposure(id, note,sql_template,db_id) values ('pDUSessionEstSR','pm_message', 'SELECT event.perf3gppFields.measDataCollection.measInfoList[1].measValuesList[1].measResults[1].sValue AS pDUSessionEstSR, from_unixtime(event.commonEventHeader.startEpochMicrosec/1000) AS timeStamp FROM unauthenticatedperformancemeasurements WHERE any_match(event.perf3gppFields.measDataCollection.measInfoList[1].measTypes.sMeasTypesList, e -> e like ''${id}'') AND event.commonEventHeader.startEpochMicrosec >= ${timeStamp}',2);
- Execute below request to verify:
curl --header "Content-type: application/json" --request POST --data '{"hours":4,"id":"PDUSessionEstSR.00110010","timeStamp":"1606743157914"}' http://dl-des:1681/datalake/v1/exposure/pDUSessionEstSR -i
...
6. KPI - MS :
Deployment Prerequisite/dependencies
- DCAE and DMaaP pods should be up and running.
- PM mapper service should be running.
...
- curl -k --silent --user 'policyadmin:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes" -H "Accept: application/json" -H "Content-Type: application/json" -d @kpipolicytype.json
- curl -k --silent --user 'policyadmin:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.monitoring.docker.kpims.app/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @kpipolicyinstance.json
- curl --silent -k --user 'policyadmin:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @deploykpipolicy.json
To create the dmaap topic - unauthenticated.DCAE_KPI_OUTPUT ::
curl --header "Content-type: application/json" --request POST --data '{"owner": "","txenabled": false,"kpipolicytype.json
Elite soft json viewer |
---|
{
"policy_types": {
"onap.policies.monitoring.docker.kpims.app": {
"derived_from": "onap.policies.Monitoring:1.0.0",
"description": "KPI ms policy type",
"properties": {
"domain": {
"required": true,
"type": "string"
},
"methodForKpi":{
"type":"list",
"required":true,
"entry_schema":{
"type":"policy.data.methodForKpi_properties"
}
}
},
"version": "1.0.0"
}
},
"data_types": {
"policy.data.methodForKpi_properties": {
"derived_from": "tosca.nodes.Root",
"properties": {
"eventName":{
"type":"string",
"required":true
},
"controlLoopSchemaType":{
"type":"string",
"required":true
},
"policyScope":{
"type":"string",
"required":true
},
"policyName":{
"type":"string",
"required":true
},
"policyVersion":{
"type":"string",
"required":true
},
"kpis":{
"type":"list",
"required":true,
"entry_schema":{
"type":"policy.data.kpis_properties"
}
}
}
},
"policy.data.kpis_properties": {
"derived_from": "tosca.nodes.Root",
"properties": {
"measType":{
"type":"string",
"required":true
},
"operation":{
"type":"string",
"required":true
},
"operands":{
"type":"string",
"required":true
}
}
}
},
"tosca_definitions_version": "tosca_simple_yaml_1_1_0"
} |
kpipolicyinstance.json
Elite soft json viewer |
---|
{
"name": "ToscaServiceTemplateSimple",
"topology_template": {
"policies": [
{
"com.Config_KPIMS_CONFIG_POLICY": {
"type": "onap.policies.monitoring.docker.kpims.app",
"type_version": "1.0.0",
"version": "1.0.0",
"metadata": {
"policy-id": "com.Config_KPIMS_CONFIG_POLICY",
"policy-version": "1"
},
"name": "com.Config_KPIMS_CONFIG_POLICY",
"properties": {
"domain": "measurementsForKpi",
"methodForKpi": [
{
"eventName": "perf3gpp_CORE-AMF_pmMeasResult",
"controlLoopSchemaType": "SLICE",
"policyScope": "resource=networkSlice;type=configuration",
"policyName": "configuration.dcae.microservice.kpi-computation",
"policyVersion": "v0.0.1",
"kpis": [{
"measType": "AMFRegNbr",
"operation": "RATIO",
"operands": ["RM.RegisteredSubNbrMean"]}
]
},
{
"eventName": "perf3gpp_RnNode-Slicing_pmMeasResult",
"controlLoopSchemaType": "SLICE",
"policyScope": "resource=networkSlice;type=configuration",
"policyName": "configuration.dcae.microservice.kpi-computation",
"policyVersion": "v0.0.1",
"kpis": [{
"measType": "PDUSessionEstSR",
"operation": "RATIO",
"operands": ["SM.PDUSessionSetupSucc","SM.PDUSessionSetupReq"]}
]
}
]
}
}
}
]
},
"tosca_definitions_version": "tosca_simple_yaml_1_1_0",
"version": "1.0.0"
}
|
deploykpipolicy.json
Elite soft json viewer |
---|
{
"policies":[
{
"policy-id":"com.Config_KPIMS_CONFIG_POLICY",
"policy-version":1
}
]
} |
To create the dmaap topic - unauthenticated.DCAE_KPI_OUTPUT ::
curl --header "Content-type: application/json" --request POST --data '{"owner": "","txenabled": false,"topicName": "unauthenticated.DCAE_KPI_OUTPUT"}' http://<message-router-ip>:3904/topics/create
...
curl -k https://message-router.onap.svc.cluster.local:3905/events/unauthenticated.DCAE_KPI_OUTPUT/c1/g1
...
7. RANSIM :
Follow the steps below to setup the Ransim environment:
- Clone the repo from : git clone https://gerrit.onap.org/r/integration/simulators/ran-simulator
Import the latest SDNC certificate into ransim
Download the SDNC cacerts from browser.
Import the cacert file into the directory ran-simulator/ransim/docker/config/ransim/ and name it as 'jssecacerts'.(Sample step to import shown below)
keytool -import -noprompt -trustcacerts -alias SDNC -file <certsfile> -keystore /ransim/docker/config/ransim/jssecacerts -storepass changeit
- Go to the ran-simulator/ransim directory and build the project : JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn clean install -P docker
- From docker folder, run the following after building the image locally and updating the SDNR IP address in the docker-compose file : docker-compose up
Run the following command to start the RAN network slice simulation
curl -X POST http://localhost:8081/ransim/api/StartRanSliceSimulation -i
To access the logs:
docker exec –ti ransim bash
policy@ransim:/tmp/ransim-install$ tail -f /opt/app/policy/servers/ransim/logs/ransim-rest.log- Setup honeycomb (Refer HONEYCOMB section)
- You can update/add/delete data(throughput, PRBs, maxNoConns etc) in mariadb container(credentials in docker-compose file) if required before generation of PM data.
- Sample data to be loaded: ransim-intelligent-slicing-data.txt
- To view the CUCP honeycomb containers logs:
- docker exec -ti cucpserver1 bash
- tail -f var/log/honeycomb/honeycomb.log
- docker exec -ti cucpserver2 bash
- tail -f var/log/honeycomb/honeycomb.log
- Check the folder(where SFTP setup is done) to view the generated PM data files.
- Access VES, data file collector, dmaap-dr, PM mapper, ml-prediction-ms and slice-analysis logs to verify.
- To manually generate PM data:
- curl -X POST -H "Content-Type: text/plain" http://localhost:8081/ransim/api/GenerateIntelligentSlicingPmData -i
- curl -X POST -H "Content-Type: text/plain" http://localhost:8081/ransim/api/GenerateIntelligentSlicingPmData -i
- To Stop PM data:
- curl -X POST -H "Content-Type: text/plain" http://localhost:8081/ransim/api/stopIntelligentSlicingPmData -i
...
8. Honeycomb:
Repo URL: https://github.com/onap-oof-pci-poc/ran-sim
...
2. Give chmod 777 to upload folder which will be created automatically in the home dir.
Demo Recording:
View file | ||||
---|---|---|---|---|
|