Hello @Krishna Raju G V S S R Penumatsa
I can give you some highlevel steps and headstart with this, If you facing any issues, I would recommend raising a support ticket with Azure Service Fabric technical support team.
Running Geneva Agent on Service Fabric via VMSS Extension:
Steps required to run Geneva Agent via Geneva Extension on Service Fabric
- New customers (who are not using Service Fabric Monitoring Application)
- Configure GCS parameters in Geneva Extension section
- Configure Service Fabric VM extension to synchronize with Geneva Extension (to avoid race condition)
- If you want to capture health events emitted by SF runtime, then you will need to use
FabricMonitoringServiceType
from Service Fabric Monitoring Application along with Geneva vmss extension.
- Existing customers (who are using Service Fabric Monitoring Application)
- Update Service Fabric Monitoring Application to version 8.3. This version supports live migration to Geneva Extension without requiring VM reboot.
- Configure GCS parameters in Geneva Extension section
- Configure Service Fabric VM extension to synchronize with Geneva Extension (to avoid race condition)
If you are using Managed Service Fabric clusters, refer to this public documentation for how to configure VM extensions in ARM template.
Configure Environment variables required by ServiceFabricEvents.xml
ServiceFabricEvents.xml
is a config file which you can import in your GCS config. This file contains out of the box configuration for collecting common events and metrics when running on Service Fabric. This file uses several environment variables to parameterize the configuration. If you are importing this file in your GCS confuguration, you need to set these environment variables via Geneva Extension settings as shown below.
Environment Variable | Description |
---|---|
MONITORING_TENANT | Tenant part of agent identity This corresponds to the ClusterName parameter for SF Monitoring Application. Make sure that value is same if you are migrating from SF Monitoring App to Geneva Extension. |
MONITORING_TENANT | Tenant part of agent identity This corresponds to the ClusterName parameter for SF Monitoring Application. Make sure that value is same if you are migrating from SF Monitoring App to Geneva Extension. |
MONITORING_ROLE | Role part of agent identity If you are using SF Monitoring App, this may be set to a constant value fabric__SFRP_Monitoring . Please check existing value in your logs account and make sure that the value is set accordingly. |
MONITORING_NODETYPE | Set to VMSS name depending on existing value. |
MONITORING_ROLE_INSTANCE | RoleInstance part of agent identity. MA_RoleEnvironment_VMName is a variable set by Multi-Tenant MA service. To use this value, use the %% syntax so that variable is expanded. You may set this to %MA_RoleEnvironment_VMName%" |
MONITORING_NODENAME | This value should be same as Service Fabric node name. If you have your role name of the format _<vmname> , you can set the value as _%MA_RoleEnvironment_VMName% . Or else simply use %MA_RoleEnvironment_VMName% |
MONITORING_MDM_ACCOUNT_NAME | Required |
"ConstantVariables": {
"MONITORING_TENANT": "<Tenant>",
"MONITORING_ROLE": "<Role>",
"MONITORING_NODETYPE": "[parameters('vmNodeType0Name')]"
},
"ExpandVariables": {
"MONITORING_ROLE_INSTANCE": "%MA_RoleEnvironment_VMName%",
"MONITORING_NODENAME": "_%MA_RoleEnvironment_VMName%"
}
To avoid race condition between user applications and Geneva Agent during startup, you need to configure Service Fabric VM extension to wait for Geneva Extension before bootstrapping Service Fabric node.
To avoid the race, we need explicit configuration to express soft dependency between the two extensions. When following settings are added to Service Fabric extension, it periodically checks if Geneva Extension has launched agent instances and waits for a configured period of time for this process to complete.
Setting | Value | Description |
---|---|---|
WaitForProvisioningComplete | bool | Enable synchronization with Geneva extension. Default value is false. Allows customers to opt-in to the new behavior. |
WaitForProvisioningComplete | bool | Enable synchronization with Geneva extension. Default value is false. Allows customers to opt-in to the new behavior. |
ProvisioningCheckIntervalInSeconds | int | Interval to check Geneva Agent status using the contract provided by Geneva Extension. When all configured Geneva Agent instances are in ready state, the Service Fabric extension proceeds to bootstrap the node. |
MaxWaitDurationInSeconds | int | At the end of max wait duration, Service Fabric extension will stop checking and proceed regardless the state of the Geneva Agent. |
If I have answered your query, please click "Accept as answer" as a token of appreciation