Inhoud

Inleiding

Voorwaarden

Vereisten

Gebruikte componenten

Achtergrondinformatie

Probleem

Procedure voor oplossing van MongoPrimaryDB Fragmentation Alert

Inleiding

Dit document beschrijft de procedure om de MongoPrimaryDB Fragmentation-waarschuwing in Cisco Policy Suite (CPS) op te lossen.

Voorwaarden

Vereisten

Cisco raadt kennis van de volgende onderwerpen aan:

- Linux

- CPS

- Mongo DB

Opmerking: Cisco raadt aan dat u bevoorrechte toegang tot CPS CLI moet hebben.

Gebruikte componenten

De informatie in dit document is gebaseerd op de volgende software- en hardware-versies:

- COPS 20,2

- MongoDB v3.6.17

- Unified Computing System (UCS)-B

De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk live is, moet u zorgen dat u de potentiële impact van elke opdracht begrijpt.

Achtergrondinformatie

CPS maakt gebruik van MongoDB, waar goede processen die draaien op Sessionmgr Virtual Machines (VM's) zijn basis DataBase structuur vormen.

Wanneer documenten worden verplaatst of verwijderd, blijven er gaten achter. MongoDB probeert deze gaten voor nieuwe documenten waar mogelijk te hergebruiken, maar na verloop van tijd blijkt dat het een heleboel gaten langzaam en gestaag heeft, die niet kunnen worden hergebruikt omdat documenten er niet in kunnen passen. Dit effect wordt fragmentatie genoemd en is gemeenschappelijk in alle systemen die geheugen toewijzen, dat uw besturingssysteem (OS) omvat.

Het effect van fragmentatie is ruimteverspilling. Vanwege het feit dat MongoDB gebruik maakt van memory-mapped bestanden, weerspiegelt elke fragmentatie op schijf ook in fragmentatie in RAM. Dit resulteert in de creatie van minder van de 'Working Set' pasvorm in RAM en zorgt ervoor dat de schijf meer te ruilen.

CPS ondersteunt KPI's om de fragmentatie van MongoDB-niveau te bewaken door het gebruik van Grafana en genereert een Simple Network Management Protocol (SNMP)-alarm wanneer het percentage MongoDB-fragmenten een bepaalde waarde overschrijdt.

Het /etc/collectd.d/dbMonitorList.cfg het bestand op sessionmgr virtuele machines bevat de lijst van databases en hun respectieve drempelwaarden voor fragmentatie. Standaard bedraagt de fragmentatiedrempelwaarde 40 %. De standaardwaarde voor de fragmentatiedrempel kan naar wens worden gewijzigd.

De Fragmentation statistieken voor sessie_cache, sk_cache, diameter en Subscriber Profile Repository (SPR) databases (door het gebruik van primaire leden) kunnen met deze opdracht worden gecontroleerd:

[root@installer ~]# diagnostics.sh --get_frag

CPS Diagnostics HA Multi-Node Environment

---------------------------

Ping check for qns03 Adding to IGNORED_HOSTS...[FAIL]

|----------------------------------------------------------------------------------------------------------------------------------------|

| Mongo:v3.6.17 DATABASE LEVEL FRAGMENTATION STATUS INFORMATION Date : 2022-09-17 07:19:29 |

| SET TYPE : HA [MEMBER_ROLE : PRIMARY] |

|----------------------------------------------------------------------------------------------------------------------------------------|

| setname dbName storageSize(MB) datasize(MB) indexSize(MB) fileSize(MB) derivedFS(MB) frag% |

|----------------------------------------------------------------------------------------------------------------------------------------|

| ADMIN:set06 |

| Status via sessionmgr01:27721 |

| set06 diameter 9.56 0.04 0.05 64.00 0 NoFrag |

|----------------------------------------------------------------------------------------------------------------------------------------|

| BALANCE:set02 |

| Status via sessionmgr01:27718 |

| set02 balance_mgmt db not found - - - - - - |

|----------------------------------------------------------------------------------------------------------------------------------------|

| SESSION:set01 |

| Status via sessionmgr01:27717 |

| set01 session_cache 0.02 0.00 0.02 16.00 0 NoFrag |

|----------------------------------------------------------------------------------------------------------------------------------------|

| SESSION:set01 |

| Status via sessionmgr01:27717 |

| set01 sk_cache 0.02 0.00 0.01 16.00 0 NoFrag |

|----------------------------------------------------------------------------------------------------------------------------------------|

| SPR:set04 |

| Status via sessionmgr01:27720 |

| set04 spr 0.04 0.00 0.13 64.00 0 NoFrag |

|----------------------------------------------------------------------------------------------------------------------------------------|

[root@installer ~]#

Probleem

Wanneer het fragmentatiepercentage van het primaire lid voor de replicaset de ingestelde drempelfragmentatiewaarde overschrijdt, wordt dit alarm gegenereerd. Als de drempelwaarde niet is ingesteld, wordt het alarm opgeheven als het fragmentatiepercentage de standaardwaarde (40%) overschrijdt.

Steekproef "MongoPrimaryDB fragmentatie overschreden de drempelwaarde" waarschuwing:

id=7100,values={sub_id=7107, event_host=sessionmgr01, status=down, msg=MongoPrimaryDB fragmentation exceeded the threshold value, CURR_FRAG = 40%, THRESHOLD = 40% at sessionmgr01:27717 for session_cac

Procedure voor oplossing van MongoPrimaryDB Fragmentation Alert

Om het fragmentatiepercentage te verminderen, krimpt u de database wanneer er een alarm wordt gegenereerd. Zodra de database is gekrompen (het fragmentatiepercentage daalt), wordt een duidelijk alarm gestuurd.

Deze procedure is om de MongoPrimaryDB fragmentatiewaarschuwing in de verstrekte steekproef op te lossen.

Stap 1. Start deze opdracht vanuit Cluster Manager of pcrfclient om de status van primaire en secundaire leden in de replicaset te controleren.

#diagnostics.sh --get_r

|----------------------------------------------------------------------------------------------------------------------------------------|

|SESSION:set01a|

|Status via sessionmgr01:27717 sessionmgr02:27717 |

|Member-1-27717 : 192.168.29.14-ARBITER-pcrfclient01- ON-LINE--0| --------|

|Member-2-27717 : 192.168.29.35-PRIMARY-sessionmgr01- ON-LINE--3| --------|

|Member-3-27717 : 192.168.29.36-SECONDARY-sessionmgr02- ON-LINE--2| 1 sec|

|----------------------------------------------------------------------------------------------------------------------------------------|

Stap 2. Start deze opdracht vanuit Cluster Manager of pcrfclient om de prioriteit van sessionmgr01 te wijzigen en er een secundair lid van te maken.

#sh set_priority.sh --db session --replSet set01a --asc

Expected output in #diagnostics.sh --get_r

|----------------------------------------------------------------------------------------------------------------------------------------|

|SESSION:set01a|

|Status via sessionmgr02:27717 sessionmgr01:27717 |

|Member-1-27717 : 192.168.29.14-ARBITER-pcrfclient01- ON-LINE--0| --------|

|Member-2-27717 : 192.168.29.35-PRIMARY-sessionmgr02- ON-LINE--3| --------|

|Member-3-27717 : 192.168.29.36-SECONDARY-sessionmgr01- ON-LINE--2| 1 sec|

|----------------------------------------------------------------------------------------------------------------------------------------|

Opmerking: Zorg ervoor dat sessionmgr01 niet primair meer is (diagnostics.sh —get_r) en er is een primair lid beschikbaar voor de replica set.

Stap 3. Start deze opdracht vanuit Sessionmgr01 om de AIDO-client te stoppen.

#monit stop aido_client

Stap 4. Start deze opdracht vanuit Sessionmgr01 om de respectieve Mongo-instantie te stoppen (portNum is het poortnummer van het gefragmenteerde lid).

Command syntax:

#/etc/init.d/sessionmgr-<portNum> stop

Example:

#/etc/init.d/sessionmgr-27717 stop

Stap 5. Om de databasemap in sessionmgr01 te reinigen, verwijdert u de gegevensmap uit het pad dat wordt vermeld met het —dbpath attribuut van de mongo opdracht. Start deze opdracht vanuit Sessionmgr01 om de waarde op te halen (gebruik de portNum van het gefragmenteerde lid).

Opmerking: Aangezien het poortnummer en de directory's die gekoppeld zijn aan andere sessionmgr dbs verschillend zijn, moet u ervoor zorgen dat u de juiste directory's hebt om andere sessionmgr dbs op te schonen.

Command syntax:

#grep -w DBPATH= /etc/init.d/sessionmgr-<portNum>

Example:

#grep -w DBPATH= /etc/init.d/sessionmgr-27717

Sample Output: DBPATH=/var/data/sessions.1/a

Copy the DBPATH from output.

Command syntax:

#rm -rf <DBPATH>/*

Example:

#rm -rf /var/data/sessions.1/a/*

Stap 6. Start deze opdracht vanuit Sessionmgr01 om de bijbehorende Mongo-instantie te starten.

Command syntax:

#/etc/init.d/sessionmgr-<portNum> start

Example:

#/etc/init.d/sessionmgr-27717 start

Stap 7. Start deze opdracht vanaf Sessionmgr01 om de AIDO-client te starten.

#monit start aido_client

Stap 8. Voer deze opdracht uit vanuit Cluster Manager of pcrfclient om de prioriteiten van replica-ingestelde leden te herstellen.

#sh set_priority.sh --db session --replSet set01a

Stap 9. Start deze opdracht vanuit Cluster Manager of pcrfclient om de status van primaire en secundaire leden in de replicaset te controleren.

#diagnostics.sh --get_r

|----------------------------------------------------------------------------------------------------------------------------------------|

|SESSION:set01a|

|Status via sessionmgr01:27717 sessionmgr02:27717 |

|Member-1-27717 : 192.168.29.14-ARBITER-pcrfclient01- ON-LINE--0| --------|

|Member-2-27717 : 192.168.29.35-PRIMARY-sessionmgr01- ON-LINE--3| --------|

|Member-3-27717 : 192.168.29.36-SECONDARY-sessionmgr02- ON-LINE--2| 1 sec|

|----------------------------------------------------------------------------------------------------------------------------------------|