分享方式:


對連線問題進行疑難排解 - Azure 事件方格

用戶端應用程式無法連線至事件方格主題/網域的原因有很多。 您遇到的連線問題可能是永久性或暫時性的。 如果問題持續發生 (永久),您可以檢查組織的防火牆設定、IP 防火牆設定、服務標籤、私人端點等等。 如果是暫時性問題,則執行命令以檢查捨棄的封包,以及取得網路追蹤等做法,可能會有助於問題的疑難排解。

本文提供對 Azure 事件方格的連線問題進行疑難排解的秘訣。

針對永久性連線問題進行疑難排解

如果應用程式完全無法連線至事件方格,請依照本節中的步驟對問題進行疑難排解。

檢查是否有服務中斷的情形

Azure 服務狀態網站上檢查 Azure 事件方格的服務中斷。

檢查組織的防火牆是否未封鎖與事件方格通訊所需的連接埠

確認用來與 Azure 事件方格通訊的連接埠未在組織的防火牆上遭到封鎖。 請參閱下表,了解您需要開啟哪些輸出連接埠以便與 Azure 事件方格進行通訊。

通訊協定 連接埠
HTTPS 443

以下是檢查 443 連接埠是否遭到封鎖的範例命令。

.\psping.exe -n 25 -i 1 -q {sampletopicname}.{region}-{suffix}.eventgrid.azure.net:443 -nobanner

在 Linux 上:

telnet {sampletopicname}.{region}-{suffix}.eventgrid.azure.net 443

確認您的公司防火牆中允許 IP 位址

在使用 Azure 時,有時候必須在公司防火牆或 Proxy 中允許特定 IP 位址範圍或 URL 存取您所使用或嘗試使用的所有 Azure 服務。 確認事件方格所使用的 IP 位址上允許該流量。 如需 Azure 事件方格所使用的 IP 位址:請參閱 Azure IP 範圍和服務標籤 - 公用雲端服務標籤 - AzureEventGrid

Azure IP 範圍和服務標籤 - 公用雲端文件也會依區域列出 IP 位址。 您可以在公司防火牆或 Proxy 中允許主題區域配對區域的位址範圍。 若想了解某區域的配對區域,請參閱 Azure 中的跨區域複寫:商務持續性和災害復原

注意

新的 IP 位址可以新增至 AzureEventGrid 服務標籤,但此做法並不常見。 因此,最好每週檢查服務標籤。

確認您的網路安全性群組中允許 AzureEventGrid 服務標籤

如果應用程式在子網路內執行,而且有相關聯的網路安全性群組,請確認是否允許網際網路輸出,或是否允許 AzureEventGrid 服務標籤。 請參閱服務標籤

檢查主題/網域的 IP 防火牆設定

確認 EventGrid 主題/網域 IP 防火牆並未封鎖應用程式執行所在機器的公用 IP 位址。

根據預設,只要要求具備有效的驗證和授權,便可以從網際網路存取事件方格主題/網域。 透過 IP 防火牆,您可以將其進一步限制為僅允許一組 IPv4 位址,或是使用 CIDR (無類別網域間路由) 標記法來設定 IPv4 位址範圍。

IP 防火牆規則會在事件方格主題/網域層級套用。 因此,規則會套用至來自用戶端的所有連接 (使用任何受支援的通訊協定)。 任何來自某個 IP 位址的連線嘗試,只要不符合事件方格主題/網域上允許的 IP 規則,就會遭到禁止和拒絕。 回應不會提及 IP 規則。

如需詳細資訊,請參閱設定 Azure 事件方格主題/網域的 IP 防火牆規則

尋找被 IP 防火牆封鎖的 IP 位址

啟用事件方格主題/網域的診斷記錄 啟用診斷記錄。 您會看到連線遭到拒絕的 IP 位址。

{
  "time": "2019-11-01T00:17:13.4389048Z",
  "resourceId": "/SUBSCRIPTIONS/SAMPLE-SUBSCTIPTION-ID/RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-NAME/PROVIDERS/MICROSOFT.EVENTGRID/TOPICS/SAMPLE-TOPIC-NAME",
  "category": "PublishFailures",
  "operationName": "Post",
  "message": "inputEventsCount=null, requestUri=https://SAMPLE-TOPIC-NAME.region-suffix.eventgrid.azure.net/api/events, publisherInfo=PublisherInfo(category=User, inputSchema=EventGridEvent, armResourceId=/SUBSCRIPTIONS/SAMPLE-SUBSCTIPTION-ID/RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-NAME/PROVIDERS/MICROSOFT.EVENTGRID/TOPICS/SAMPLE-TOPIC-NAME), httpStatusCode=Forbidden, errorType=ClientIPRejected, errorMessage=Publishing to SAMPLE-TOPIC-NAME.{region}-{suffix}.EVENTGRID.AZURE.NET by client {clientIp} is rejected due to IpAddress filtering rules."
}

檢查 EventGrid 主題/網域是否只能使用私人端點來存取

如果事件方格主題/網域設定為只能透過私人端點來存取,請確認用戶端應用程式會透過私人端點來存取主題/網域。 若要確認這一點,請檢查用戶端應用程式執行於子網路內,且該子網路中是否有事件方格主題/網域的私人端點。

Azure Private Link 服務可讓您透過虛擬網路中的私人端點來存取 Azure 事件方格。 私人端點是一種網路介面,其可以私人且安全的方式連線至 Azure Private Link 所支援服務。 私人端點會使用您 VNet 中的私人 IP 位址,有效地將服務帶入您的 VNet 中。 服務的所有流量都可以透過私人端點路由傳送,因此不需要閘道、NAT 裝置、ExpressRoute 或 VPN 連線或公用 IP 位址。 虛擬網路和服務間的流量會在通過 Microsoft 骨幹網路時隨之減少,降低資料在網際網路中公開的風險。 您可以連線至 Azure 資源的執行個體,以提供您存取控制中最高層級的細微性。

如需詳細資訊,請參閱設定私人端點

針對暫時性連線問題進行疑難排解

如果您遇到間歇性的連線問題,請參閱下列各節以取得疑難排解秘訣。

執行命令以檢查捨棄的封包

如果有間歇性的連線問題,請執行下列命令來檢查是否有任何封包遭到捨棄。 此命令會嘗試每隔 1 秒便與服務建立 25 個不同的 TCP 連線。 然後,您可以檢查其中有多少連線成功/失敗,另外也可以查看 TCP 連線延遲。 您可以從這裡下載 psping 工具。

.\psping.exe -n 25 -i 1 -q {sampletopicname}.{region}-{suffix}.eventgrid.azure.net:443 -nobanner

如果您使用的是 tcppingtcpping.exe 等其他工具,則可以使用對等的命令。

如果先前的步驟無法提供協助,請取得網路追蹤,然後使用 Wireshark 等工具進行分析。 如有需要,請連絡 Microsoft 支援服務

服務升級/重新啟動

由於後端服務升級和重新啟動,可能會發生暫時性連線問題。 在發生這些問題時,您可能會看到下列徵兆:

  • 內送郵件/要求可能會下降。
  • 記錄檔可能包含錯誤訊息。
  • 應用程式可能會與服務中斷連線數秒。
  • 要求可能會立即節流。

攔截這些暫時性錯誤、退出,然後再試著呼叫一次,便會確保程式碼能從這些暫時性問題復原。

下一步

如果您需要更多協助,請將您的問題張貼在 Stack Overflow 論壇,或開啟支援票證