Я уже создал кластер Service Fabric с диагностикой Azure, и в настоящее время он работает, когда мои службы развернуты в этом кластере. В моей службе есть ETW EventSource, из которого я хотел бы начать сбор событий, поскольку мой код службы уже использует этот источник событий для записи событий, связанных с моей службой. Поскольку кластер уже включен для диагностики Azure, а мои службы уже развернуты в этом кластере, я думаю, что достаточно просто обновить поставщика ETW с помощью моего источника событий в этом кластере фабрики служб. Вот экспортированный шаблон (показана только его часть, актуальная для диагностики Azure):
{
"properties": {
"publisher": "Microsoft.Azure.Diagnostics",
"type": "IaaSDiagnostics",
"typeHandlerVersion": "1.5",
"autoUpgradeMinorVersion": true,
"settings": {
"WadCfg": {
"DiagnosticMonitorConfiguration": {
"overallQuotaInMB": "50000",
"EtwProviders": {
"EtwEventSourceProviderConfiguration": [
{
"provider": "Microsoft-ServiceFabric-Actors",
"scheduledTransferKeywordFilter": "1",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableActorEventTable"
}
},
{
"provider": "Microsoft-ServiceFabric-Services",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
},
{
"provider": "Bb.ServiceFabric.Infrastructure.Container",
"scheduledTransferPeriod": "PT1M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
],
"EtwManifestProviderConfiguration": [
{
"provider": "cbd93bc2-71e5-4566-b3a7-595d8eeca6e8",
"scheduledTransferLogLevelFilter": "Information",
"scheduledTransferKeywordFilter": "4611686018427387904",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricSystemEventTable"
}
}
]
}
}
},
"StorageAccount": "sfdgsmsraghuplaygrou6827"
}
},
"name": "VMDiagnosticsVmExt_vmNodeType0Name"
}
Я хотел бы обновить следующие EtwProviders/EtwEventSourceProviderConfiguration, чтобы они содержали следующий раздел (поскольку MyCompany.MyServices.MyStatelessService — это имя EventSource моей службы):
{
"provider": "MyCompany.MyServices.MyStatelessService",
"scheduledTransferPeriod": "PT5M",
"DefaultEvents": {
"eventDestination": "ServiceFabricReliableServiceEventTable"
}
}
Вот мои вопросы:
- Является ли это правильным способом вставки поставщика ETW/EventSource (из моей службы) в существующий кластер (который уже включен с диагностикой Azure)?
- Можно ли добавить этот источник событий (в качестве поставщика источника событий ETW) с помощью команд PowerShell?
- Если да, то какова точная команда powershell (с использованием всей информации из приведенного выше фрагмента кода)?
Примечание. Я использую .net framework 4.5.2.