إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
توفر هذه المقالة عينة من استعلامات لغة استعلام Kusto (KQL) لمساعدتك في تحليل بيانات تحليلات حركة المرور بشكل فعال. تعالج تحليلات نسبة استخدام الشبكة سجلات تدفق الشبكة الظاهرية (VNet) وسجلات تدفق مجموعة أمان الشبكة (NSG) لتوفير رؤى مفصلة حول أنماط حركة مرور الشبكة وأحداث الأمان ومقاييس الأداء.
استخدم هذه الاستعلامات من أجل:
- تحديد أنماط حركة مرور الشبكة ونقاط نهاية الاتصال العليا
- مراقبة الأحداث الأمنية وتحليل التهديدات المحتملة
- استكشاف مشكلات اتصال الشبكة وإصلاحها
- تحسين أداء الشبكة واستخدام الموارد
المتطلبات الأساسية
- تحليلات نسبة استخدام الشبكة التي تم تكوينها لسجلات التدفق الخاصة بك. لمزيد من المعلومات، راجع تمكين تحليلات نسبة استخدام الشبكة أو تعطيلها.
- الوصول إلى مساحة عمل Log Analytics حيث يتم تخزين بيانات سجل التدفق الخاصة بك. لمزيد من المعلومات، راجع نظرة عامة على مساحة عمل Log Analytics.
استعلامات NTANetAnalytics
يوفر هذا القسم نماذج من الاستعلامات لجدول NTANetAnalytics التي يمكنك استخدامها لتحليل بيانات تحليلات نسبة استخدام الشبكة الظاهرية. يحتوي جدول NTANetAnalytics على بيانات سجل التدفق المجمعة مع معلومات تحليلات الشبكة المحسنة. لمزيد من المعلومات حول مخطط الجدول والحقول المتوفرة، راجع NTANetAnalytics.
سرد الشبكات الفرعية التي تتفاعل مع عناوين IP العامة
استخدم الاستعلام التالي لسرد جميع الشبكات الفرعية التي تتفاعل مع عناوين IP العامة غير التابعة ل Azure في آخر 30 يوما.
NTANetAnalytics
| where SubType == "FlowLog" and FlowStartTime > ago(30d) and FlowType == "ExternalPublic"
| project SrcSubnet, DestSubnet
سرد الشبكات الفرعية التي تتفاعل مع بعضها البعض
استخدم الاستعلام التالي لسرد كافة الشبكات الفرعية التي تبادلت نسبة استخدام الشبكة مع بعضها البعض خلال آخر 30 يوما وإجمالي وحدات البايت التي تم تبادلها.
NTANetAnalytics
| where SubType == 'FlowLog' and FaSchemaVersion == '3' and TimeGenerated > ago(30d)
| where isnotempty(SrcSubnet) and isnotempty(DestSubnet)
| summarize TotalBytes=sum(BytesSrcToDest + BytesDestToSrc) by SrcSubnet, DestSubnet,L4Protocol,DestPort
عرض حركة المرور عبر المناطق
استخدم الاستعلام التالي لعرض حركة المرور داخل المنطقة وبين المناطق خلال آخر 30 يوما.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| project SrcRegion, DestRegion, BytesDestToSrc, BytesSrcToDest
| where isnotempty(SrcRegion) and isnotempty(DestRegion)
| summarize TransferredBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcRegion, DestRegion
عرض حركة المرور بناء على الاشتراك
استخدم الاستعلام التالي لعرض نسبة استخدام الشبكة Azure المجمعة حسب الاشتراكات على مدار ال 30 يوما الماضية.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| project SrcSubscription, DestSubscription, BytesDestToSrc, BytesSrcToDest
| where isnotempty(SrcSubscription) and isnotempty(DestSubscription)
| summarize TransferredBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcSubscription, DestSubscription
سرد الأجهزة الظاهرية التي تتلقى معظم نسبة استخدام الشبكة المحلية
استخدم الاستعلام التالي للتحقق من الأجهزة الظاهرية التي تتلقى معظم نسبة استخدام الشبكة المحلية.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcVm, DestVm) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime from datetime(<time>) to datetime(<time>) step 1m by vm
| render timechart
قائمة عناوين IP التي تتلقى معظم نسبة استخدام الشبكة المحلية
استخدم الاستعلام التالي للتحقق من عناوين IP التي تتلقى معظم نسبة استخدام الشبكة المحلية.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcIp, DestIp) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime from datetime(<time>) to datetime(<time>) step 1m by vm
| render timechart
سرد عناوين IP التي ترسل أو تستقبل نسبة استخدام الشبكة من أو إلى جهاز ظاهري
استخدم الاستعلام التالي لسرد جميع عناوين IP التي تبادلت البيانات مع جهاز ظاهري باستخدام عنوان IP الخاص به على مدار ال 30 يوما الماضية.
NTANetAnalytics
| where TimeGenerated > ago(30d)
| where SrcIp == "10.1.1.8" and strlen(DestIp)>0
| summarize TotalBytes=sum(BytesDestToSrc+BytesSrcToDest) by SrcIp, DestIp
عرض حركة مرور ExpressRoute
استخدم الاستعلام التالي لعرض نسبة استخدام الشبكة عبر اتصالات ExpressRoute في آخر 30 يوما.
NTANetAnalytics
| where SubType == 'FlowLog' and TimeGenerated > ago(30d)
| where isnotnull(SrcExpressRouteCircuit) or isnotnull(DestExpressRouteCircuit)
| extend TargetResourceName = tostring(split(TargetResourceId, "/")[2])
| summarize TotalBytes=sum(BytesSrcToDest + BytesDestToSrc) by TargetResourceName, bin(TimeGenerated, 1d)
| render columnchart
عرض توزيع حركة مرور موازن التحميل
استخدم الاستعلام التالي لعرض توزيع نسبة استخدام الشبكة للتطبيق الخاص بك الذي يحتوي على موازن تحميل أمامه.
NTANetAnalytics
| where SubType == 'FlowLog' and TimeGenerated > ago(30d)
| where SrcLoadBalancer contains 'web' or DestLoadBalancer contains 'web'
| summarize TotalBytes = sum(BytesSrcToDest + BytesDestToSrc) by tostring(SrcIp)
| render piechart
التحقق من الانحراف المعياري في نسبة استخدام الشبكة التي تتلقاها الأجهزة الظاهرية
استخدم الاستعلام التالي للتحقق من الانحراف المعياري في نسبة استخدام الشبكة التي تتلقاها الأجهزة الظاهرية من الأجهزة المحلية.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcVm, DestVm) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
summarize deviation = stdev(traffic) by vm
التحقق من الانحراف المعياري في حركة المرور التي تتلقاها عناوين IP
استخدم الاستعلام التالي للتحقق من الانحراف المعياري في حركة المرور التي تتلقاها عناوين IP من الأجهزة المحلية.
NTANetAnalytics
| where SubType == "FlowLog" and FlowType == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(SrcIp, DestIp) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows + DeniedInFlows + AllowedOutFlows + DeniedOutFlows // For bytes use: | extend traffic = InboundBytes + OutboundBytes
| summarize deviation = stdev(traffic) by IP
استعلامات NTAIpDetails
يوفر هذا القسم نماذج من الاستعلامات لجدول NTAIpDetails التي يمكنك استخدامها لتحليل المعلومات الخاصة ب IP في بيانات تحليلات نسبة استخدام الشبكة. لمزيد من المعلومات، راجع NTAIpDetails.
عرض أنواع التدفق ومواقع IP العامة
استخدم الاستعلام التالي للتعرف على أنواع التدفق وموقع عناوين IP العامة في بيانات تحليلات نسبة استخدام الشبكة.
NTAIpDetails
| distinct FlowType, PublicIpDetails, Location
عرض أنواع التدفقات الضارة
استخدم الاستعلام التالي لعرض أنواع مؤشرات الترابط في التدفقات الضارة.
NTAIpDetails
| where TimeGenerated > ago(30d)
| where FlowType == "MaliciousFlow"
| summarize count() by ThreatType
| render piechart
AzureNetworkAnalytics_CL الاستعلامات
يوفر هذا القسم نماذج من الاستعلامات لجدول استعلامات AzureNetworkAnalytics_CL التي يمكنك استخدامها لتحليل بيانات سجلات تدفق NSG لتحليلات نسبة استخدام الشبكة.
سرد جميع الشبكات الفرعية التي تتفاعل مع عناوين IP العامة
استخدم الاستعلام التالي لسرد جميع الشبكات الفرعية التي تتفاعل مع عناوين IP العامة غير التابعة ل Azure في آخر 30 يوما.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowStartTime_t >= ago(30d) and FlowType_s == "ExternalPublic"
| project Subnet1_s, Subnet2_s
عرض مسار الكائن الثنائي كبير الحجم للتدفقات التي تتفاعل مع عناوين IP العامة
استخدم الاستعلام التالي لعرض مسار الكائن الثنائي كبير الحجم للتدفقات في الاستعلام السابق.
let TableWithBlobId =
(AzureNetworkAnalytics_CL
| where SubType_s == "Topology" and ResourceType == "NetworkSecurityGroup" and DiscoveryRegion_s == Region_s and IsFlowEnabled_b
| extend binTime = bin(TimeProcessed_t, 6h),
nsgId = strcat(Subscription_g, "/", Name_s),
saNameSplit = split(FlowLogStorageAccount_s, "/")
| extend saName = iif(arraylength(saNameSplit) == 3, saNameSplit[2], '')
| distinct nsgId, saName, binTime)
| join kind = rightouter (
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog"
| extend binTime = bin(FlowEndTime_t, 6h)
) on binTime, $left.nsgId == $right.NSGList_s
| extend blobTime = format_datetime(todatetime(FlowIntervalStartTime_t), "yyyy MM dd hh")
| extend nsgComponents = split(toupper(NSGList_s), "/"), dateTimeComponents = split(blobTime, " ")
| extend BlobPath = strcat("https://", saName,
"@insights-logs-networksecuritygroupflowevent/resoureId=/SUBSCRIPTIONS/", nsgComponents[0],
"/RESOURCEGROUPS/", nsgComponents[1],
"/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/", nsgComponents[2],
"/y=", dateTimeComponents[0], "/m=", dateTimeComponents[1], "/d=", dateTimeComponents[2], "/h=", dateTimeComponents[3],
"/m=00/macAddress=", replace(@"-", "", MACAddress_s),
"/PT1H.json")
| project-away nsgId, saName, binTime, blobTime, nsgComponents, dateTimeComponents;
TableWithBlobId
| where SubType_s == "FlowLog" and FlowStartTime_t >= ago(30d) and FlowType_s == "ExternalPublic"
| project Subnet_s , BlobPath
يقوم الاستعلام السابق بإنشاء عنوان URL للوصول إلى الكائن الثنائي كبير الحجم مباشرة على النحو التالي:
https://{storageAccountName}@insights-logs-networksecuritygroupflowevent/resoureId=/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroup}/PROVIDERS/MICROSOFT.NETWORK/NETWORKSECURITYGROUPS/{networkSecurityGroupName}/y={year}/m={month}/d={day}/h={hour}/m=00/macAddress={macAddress}/PT1H.json
سرد الأجهزة الظاهرية التي تتلقى معظم نسبة استخدام الشبكة المحلية
استخدم الاستعلام التالي للتحقق من الأجهزة الظاهرية التي تتلقى معظم نسبة استخدام الشبكة المحلية.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
| where <Scoping condition>
| mvexpand vm = pack_array(VM1_s, VM2_s) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + OutboundBytes_d
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime_t from datetime(<time>) to datetime(<time>) step 1 m by vm
| render timechart
قائمة عناوين IP التي تتلقى معظم نسبة استخدام الشبكة المحلية
استخدم الاستعلام التالي للتحقق من عناوين IP التي تتلقى معظم نسبة استخدام الشبكة المحلية.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
//| where <Scoping condition>
| mvexpand IP = pack_array(SrcIP_s, DestIP_s) to typeof(string)
| where isnotempty(IP)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + OutboundBytes_d
| make-series TotalTraffic = sum(traffic) default = 0 on FlowStartTime_t from datetime(<time>) to datetime(<time>) step 1 m by IP
| render timechart
التحقق من الانحراف المعياري في نسبة استخدام الشبكة التي تتلقاها الأجهزة الظاهرية
استخدم الاستعلام التالي للتحقق من الانحراف المعياري في نسبة استخدام الشبكة التي تتلقاها الأجهزة الظاهرية من الأجهزة المحلية.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
//| where <Scoping condition>
| mvexpand vm = pack_array(VM1_s, VM2_s) to typeof(string)
| where isnotempty(vm)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + utboundBytes_d
| summarize deviation = stdev(traffic) by vm
التحقق من الانحراف المعياري في حركة المرور التي تتلقاها عناوين IP
استخدم الاستعلام التالي للتحقق من الانحراف المعياري في حركة المرور التي تتلقاها عناوين IP من الأجهزة المحلية.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and FlowType_s == "S2S"
//| where <Scoping condition>
| mvexpand IP = pack_array(SrcIP_s, DestIP_s) to typeof(string)
| where isnotempty(IP)
| extend traffic = AllowedInFlows_d + DeniedInFlows_d + AllowedOutFlows_d + DeniedOutFlows_d // For bytes use: | extend traffic = InboundBytes_d + OutboundBytes_d
| summarize deviation = stdev(traffic) by IP
تحقق من المنافذ التي يمكن الوصول إليها أو حظرها بين أزواج IP باستخدام قواعد NSG
استخدم الاستعلام التالي للتحقق من المنافذ التي يمكن الوصول إليها (أو المحظورة) بين أزواج IP باستخدام قواعد NSG.
AzureNetworkAnalytics_CL
| where SubType_s == "FlowLog" and TimeGenerated between (startTime .. endTime)
| extend sourceIPs = iif(isempty(SrcIP_s), split(SrcPublicIPs_s," "), pack_array(SrcIP_s)),
destIPs = iif(isempty(DestIP_s), split(DestPublicIPs_s," "), pack_array(DestIP_s))
| mvexpand SourceIp = sourceIPs to typeof(string)
| mvexpand DestIp = destIPs to typeof(string)
| project SourceIp = tostring(split(SourceIp, "|")[0]), DestIp = tostring(split(DestIp, "|")[0]), NSGList_s, NSGRule_s, DestPort_d, L4Protocol_s, FlowStatus_s
| summarize DestPorts= makeset(DestPort_d) by SourceIp, DestIp, NSGList_s, NSGRule_s, L4Protocol_s, FlowStatus_s
منع السجلات المكررة
إذا تم تمكين تسجيل التدفق على جانبي الاتصال، فيمكن التقاط تدفق على أجهزة متعددة. ونتيجة لذلك، قد تظهر بيانات مكررة إذا تم تجميع كافة سجلات التدفق في نفس مساحة عمل Log Analytics. من الضروري تضمين FlowDirection أو MACAddress منع الازدواجية والتمييز بين السجلات.
في التدفق/الاتصال:
-
MacAddressيشير إلى MAC للجهاز الذي يتم التقاط التدفق عليه. -
SrcIpيشير إلى عنوان IP للجهاز الذي بدأ الاتصال منه. -
DestIpيشير إلى عنوان IP للجهاز الذي تم الاتصال به. -
FlowDirectionيشير إلى اتجاه الاتصال فيما يتعلق بالجهاز. على سبيل المثال ، عند إجراء اتصال من VM1 (IP:10.0.0.4و MAC:A1:B1:C1:D1:E1:F1) إلى VM2 (IP:10.0.0.5و MAC:A2:B2:C2:D2:E2:F2) ، إذا تم التقاط التدفق في VM1 ، فسيكونFlowDirectionOutboundهذا التدفق ، وإذا تم التقاط التدفق في VM2 ، فسيكونFlowDirectionInboundهذا التدفق . -
BytesSrcToDest/PacketsSrcToDestالإشارة إلى وحدات البايت أو الحزم المرسلة من المصدر إلى الوجهة بغض النظر عن مكان التقاطها. -
BytesDestToSrc/PacketsDestToSrcتشير إلى وحدات البايت أو الحزم المرسلة من وجهة إلى أخرى بغض النظر عن مكان التقاطها.
على سبيل المثال، إذا تم إجراء اتصال من VM1 إلى VM2 باستخدام الحقول التالية.
| VM | SrcIp | DestIp | الماك | BytesSrcToDest | بايتسDestToSrc | اتجاه التدفق |
|---|---|---|---|---|---|---|
| م 1 | 10.0.0.4 | 10.0.0.5 | أ1-ب1-ج1-د1-E1-F1 | 100 | 200 | صادر |
| م 2 | 10.0.0.4 | 10.0.0.5 | أ2-ب2-ج2-د2-E2-F2 | 100 | 200 | الوارده |
يمكنك استخدام أي من الاستعلامات التالية لحساب إجمالي وحدات البايت الصادرة لجهاز يحتوي على عنوان 10.0.0.4 IP وعنوان A1:B1:C1:D1:E1:F1MAC ، للاتصالات التي بدأها هذا الجهاز.
NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Outbound"
| summarize totalIniBytes = sum(BytesSrcToDest);
NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and FlowDirection == "Outbound"
| summarize totalIniBytes = sum(BytesSrcToDest);
NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1"
| summarize totalIniBytes = sum(BytesSrcToDest);
وبالمثل، يمكنك استخدام أي من الاستعلامات التالية لحساب إجمالي وحدات البايت الصادرة لجهاز بعنوان 10.0.0.4 IP وعنوان A1:B1:C1:D1:E1:F1MAC، للاتصالات التي بدأها أجهزة أخرى بهذا الجهاز.
NTANetAnalytics
| where DestIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Inbound"
| summarize totalNoniniBytes = sum(BytesDestToSrc)
NTANetAnalytics
| where DestIp == "10.0.0.4" and FlowDirection == "Inbound"
| summarize totalNoniniBytes = sum(BytesDestToSrc)
NTANetAnalytics
| where DestIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1"
| summarize totalNoniniBytes = sum(BytesDestToSrc)
يمكنك حساب إجمالي وحدات البايت الصادرة لجهاز باستخدام الاستعلام التالي:
let InitiatedByVM = NTANetAnalytics
| where SubType == "FlowLog"
| where SrcIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Outbound"
| summarize totalIniBytes = sum(BytesSrcToDest);
let NotInitiatedByVM = NTANetAnalytics
| where DestIp == "10.0.0.4" and MacAddress == "A1:B1:C1:D1:E1:F1" and FlowDirection == "Inbound"
| summarize totalNoniniBytes = sum(BytesDestToSrc);
InitiatedByVM
| join kind=fullouter NotInitiatedByVM on FlowEndTime
| extend Time = iff(isnotnull(FlowEndTime), FlowEndTime, FlowEndTime1)
| summarize totalMB = (sum(totalIniBytes) + sum(totalNoniniBytes)) / 1024.0 /1024.0;