การใช้คำสั่ง DCdiag เพื่อตรวจสอบสถานะการทำงานและข้อผิดพลาดต่างๆ ของ Domain Controller

การใช้คำสั่ง DCdiag เพื่อตรวจสอบสถานะการทำงานและข้อผิดพลาดต่างๆ ของ Domain Controller

Windows Server ที่ทำหน้าที่เป็น Domain Controller จะมี Services ต่างๆ ที่เปิดใช้งานอยู่จำนวนมาก หากต้องการตรวจสอบถึงสถานะการทำงานของ Services เหล่านี้ ว่าเป็นอย่างไรบ้าง มีข้อผิดพลาดอะไรหรือไม่ เพื่อนำมาวิเคราะห์และแก้ปัญหาที่เกิดขึ้นได้อย่างตรงจุดมากขึ้น ในบทความนี้ผมจะมาแนะนำคำสั่งสำคัญที่ใช้ในการทำงานตรงนี้ครับ

คำสั่งที่จะพูดถึงในบทความนี้ คือ DCDiag เป็นคำสั่งที่ใช้ในการตรวจสอบสถานะการทำงานต่างๆ ของ Domain Controller (DC) เช่น สถานะการทำงานของ DNS, การ Replicate และข้อผิดพลาดต่างๆ ที่เกิดขึ้นของระบบ ซึ่งคำสั่งนี้ก็มีออปชั่นและคำสั่งย่อยมากมาย ทีช่วยให้การตรวจสอบสถานะการทำงานต่างๆ ง่ายและมีประสิทธิภาพ

รูปแบบการใช้งานของคำสั่ง DCDiag

ถึงแม้ว่า DCDiag จะเป็นคำสั่งที่มีออปชั่นหรือพารามิเตอร์ต่างๆ จำนวนมาก แต่รูปแบบที่เราใช้บ่อยกันจริงๆ ก็คือ การใช้แบบไม่มีพารามิเตอร์ใดๆ ซึ่งเป็นค่า Default โดยพิมพ์คำสั่ง dcdiag เท่านั้น

แต่การใช้คำสั่งโดยไม่มีพารามิเตอร์ใดๆ จะแสดงข้อมูลออกมาจำนวนมาก ซึ่งบางครั้งเป็นข้อมูลที่ไม่จำเป็นต่อการใช้งานของเรา ดังนั้นเราสามารถใช้พารามิเตอร์  /test เพื่อระบุให้แสดงเฉพาะข้อมูลที่ต้องการตรวจสอบได้ โดยมีรูปแบบของคำสั่ง ดังนี้

> dcdiag /test:[ข้อมูลที่ต้องการตรวจสอบ] 

ตัวอย่างเช่น ต้องการตรวจสอบสถานะการทำงานของ DNS ก็พิมพ์คำสั่ง…

> dcdiag /test:dns

ในทางกลับกัน เราสามารถกำหนดให้คำสั่ง DCDiag ยกเว้นการตรวจสอบบางสถานะที่ไม่ต้องการได้ โดยพิมพ์คำสั่ง…

> dcdiag /skip:systemlog 

ผลลัพธ์ที่ได้จากตัวอย่างการใช้พารามิเตอร์ /skip:systemlog คือ ไม่แสดงสถานะของ systemlog เพราะถูกคำสั่งนี้ยกเลิกการตรวจสอบ

               หากต้องการตรวจสอบสถานะการทำงานของ DC ตัวอื่น โดยไม่จำเป็นต้องเรียกใช้คำสั่ง DCDiag ที่หน้าเครื่องเหล่านั้น ให้ใช้พารามิเตอร์ /s แล้วตามด้วยชื่อ DC เครื่องอื่นที่ต้องการตรวจสอบ โดยมีรูปแบบคำสั่งดังนี้

> dcdiag /s:[ชื่อ DC เครื่องอื่น] 

ตัวอย่างเช่น ต้องการตรวจสอบสถานะการทำงานของเครื่อง DC อีกเครื่องหนึ่งที่ชื่อ server2 ให้พิมพ์คำสั่ง….

การอ่านผลลัพธ์ที่ออกมา

เมื่อเราใช้บางคำสั่งหรือการใช้คำสั่ง DCDiag โดยไม่ใส่พารามิเตอร์ใดๆ อาจทำให้มีการแสดงข้อมูลออกมามากเกินไป จนทำให้ยากต่อการตรวจสอบ ตัวอย่างนี้จะใช้คำสั่ง dcdiag โดยไม่มีพารามิเตอร์ จะเห็นว่าข้อมูลที่แสดงออกมามีจำนวนมาก โดยแต่ละส่วนมีความหมายดังนี้

  • หมายเลข 1 เป็นส่วนที่แสดงถึงข้อมูลพื้นฐานและการทดสอบการเชื่อมต่อของเครื่อง DC ข้อมูลนี้จะแสดงขึ้นมาทุกครั้งที่ใช้คำสั่ง dcdiag
  • หมายเลข 2 เป็นส่วนที่แสดงถึง Service นั้นผ่านการทดสอบ สามารถทำงานได้ตามปกติ
  • หมายเลข 3 เป็นส่วนที่แสดงถึง Service นั้นไม่ผ่านการทดสอบ โดยมีการแจ้งว่าข้อผิดพลาดนั้นเกิดขึ้นได้อย่างไร ตัวอย่างนี้มีการแจ้งเตือนถึงความผิดพลาดของ DFSREvent ทำให้การ Replication ข้อมูลของ SYSVOL เกิดปัญหา ซึ่งเราสามารถเอาข้อมูลนี้มาวิเคราะห์ได้ว่าอาจทำให้ส่งผลกระทบต่อการทำงานของ Group Policy ที่จะไม่ถูก Replicate ไปยังเครื่อง DC ตัวที่ 2 ได้

หากต้องการให้การอ่านข้อมูลที่แสดงออกมาง่ายขึ้น เราสามารถใช้พารามิเตอร์ต่างๆ เข้ามาช่วยเพื่อกรองเฉพาะข้อมูลที่ต้องการดูได้ เช่น ส่วนใหญ่แล้วผมมักใช้คำสั่งนี้เพื่อหา Error ของแต่ละ Services เพื่อดูว่าเป็น Error ที่รุนแรงหรือไม่ ดังนั้นจึงต้องการดูแค่มีอะไร Failed หรือไม่ผ่านการทดสอบบ้าง ก็จะใช้พารามิเตอร์ คือ /q ที่จะแสดงเฉพาะ Services ที่ Failed เท่านั้น (Services ที่ผ่านการทดสอบหรือ Passed จะไม่แสดงผล) และใช้ควบคู่ไปกับ /skip:systemlog เพื่อไม่แสดงข้อมูลของ systemlog ออกมา เพราะบางครั้งมีมากเกินไป และส่วนใหญ่ไม่เกี่ยวข้อกับ Error ของ Services ต่างๆ เท่าไหร่ โดยมีตัวอย่างคำสั่งดังนี้

> dcdiag /q /skip:systemlog 

จากรูปจะเห็นว่าผลลัพธ์ที่ได้จากการใช้คำสั่ง dcdiag /q /skip:systemlog จะเห็นเฉพาะข้อมูลที่มีการรายงานว่ามี Services ไหนบ้างที่ไม่ผ่านการทดสอบ (Failed) ทำให้เราสามารถอ่านข้อมูลได้ง่ายและรวดเร็วขึ้น

เราสามารถดูรูปแบบของคำสั่งและพารามิเตอร์ที่ใช้ร่วมกันได้ โดยพิมพ์คำสั่ง…

> dcdiag /h 

ตัวอย่างการแจ้งเตือนสถานะ Failed และวิธีการแก้ไข

หลังจากที่รู้วิธีการใช้งานคำสั่ง DCDiag กันแล้ว เรามาดูตัวอย่างการแจ้งเตือนสถานะ Failed หรือ Errors ต่างๆ ที่มักพบได้บ่อยและวิธีการแก้ไขกันบ้างครับ

NCSecDesc = แสดงข้อผิดพลาดว่า “Error NT AUTHORITY\ENTERPRISE DOMAIN CONTROLLERS doesn’t have Replicating Directory Changes In Filtered Set” เป็นการแจ้งเตือนว่าในระบบ Domain ไม่ได้มีการคอนฟิกเพื่อใช้ในการทำงานร่วมกับ RODC (Read Only Domain Controller) หากไม่มีการทำงานหรือวางแผนงานเพื่อทำงานร่วมกับ RODC เราไม่จำเป็นต้องแก้ไขข้อผิดพลาดใดๆ

SystemLog = หากมี Error ล่าสุดเกิดขึ้นใน Event Log จะทำให้การทดสอบ SystemLog เกิด Failed ได้ ถึงแม้ว่า Errors นั้นจะไม่เกี่ยวข้องกับการทำงานของ Active Directory ก็ตาม เพราะ Errors ใดๆ ก็ตามใน Event Log สามารถทำให้เกิดปัญหากับการตรวจสอบของคำสั่ง DCDiag การแก้ปัญหา เราต้องกลับไปตรวจสอบ Log ใน Event Log เพื่อหาคำอธิบายและทำความเข้าใจกับข้อผิดพลาดที่เกิดขึ้นว่ามีระดับความรุนแรงมากน้อยเพียงใด และมีความสัมพันธ์กับ Services หรือเหตุการณ์ใดบ้าง

FrsEvent และ DFSREvent = เกิดข้อผิดพลาดที่เกี่ยวข้องกับการทำงานของ File Replication และ DFS (Distribute File System) ถ้าการทดสอบของ FrsEvent และ DFSREvent เกิด Failed แสดงว่ามีการทำงานที่ผิดพลาดเกิดขึ้นในส่วนของ File Replication หรือ DFS เราสามารถหารายละเอียดของข้อผิดพลาดนี้เพิ่มเติมได้ โดยเข้าไปที่ Event Log แล้วตรวจสอบในส่วนของคำสั่ง Application and Services Logs

Replications = หากเกิดการแจ้งเตือนเกี่ยวกับความผิดพลาดของ Replications ให้ใช้คำสั่ง repadmin /replsummary เพื่อดูสถานะของการ Replicate อย่างละเอียดว่ามีข้อผิดพลาดตรงไหนบ้าง รวมถึงเข้าไปตรวจสอบการแจ้งเตือนอื่นที่คำสั่ง Application and Services Logs > Direcotry Service ในหน้าต่าง Event Log

            Multiple Access Denied = เมื่อเรียกใช้คำสั่ง DCDiag แล้วเกิดข้อความแจ้งเตือนว่า “Access Denied” เกิดขึ้นจำนวนมาก ให้เราตรวจสอบว่าได้เปิดใช้โปรแกรม CMD ด้วยสิทธิ์ของ administrator หรือไม่ เพราะไม่อย่างนั้นแล้วมีความเป็นไปได้ว่าคำสั่ง DCDiag จะถูกความสามารถของ UAC (User Account Control) บน Windows Server ได้บล็อกไว้

Connectivity หรือ RPC = ข้อผิดพลาดที่เกี่ยวกับ Connectivity หรือ RPC เกิด Failed แสดงถึงปัญหาของการเชื่อมต่อกับเครื่องเครื่องปลายทางที่ต้องการใช้คำสั่ง DCDiag ตรวจสอบ การแก้ปัญหา คือ ตรวจสอบให้แน่ใจว่าเครื่อง Server ปลายทางสามารถเข้าถึงได้ โดยไม่ได้ถูกบล็อกจาก Firewall หรือระบบเครือข่ายมีปัญหา เพราะสิ่งเหล่านี้อาจทำให้คำสั่ง DCDiag ไม่สามารถติดต่อสื่อสารกับเครื่อง Server ที่ต้องการตรวจสอบได้

Leave a Reply to Como Solicitar Un Credito Cancel reply

Close Menu