การสร้าง Custom View ของ Windows Event Viewer และตัวอย่าง View Logon Failure

การตรวจสอบเครื่อง Windows Server ว่ามันทำงานปกติหรือไม่นั้น จะใช้เครื่องมือ Windows Event Viewer ในครั้งนี้เราจะศึกษาการสร้าง Custom Views หรือการสร้างคำสั่ง Query เพื่อดึงเฉพาะ Event ที่เราสนใจเก็บไว้ใช้งาน และช่วยให้ดูง่ายๆ เช่น การหา Logon Failure เป็นต้น (Windows ไม่มี filter GUI ให้ เวลาจะดู logon failure ต้องสร้างเองตามตัวอย่างด้านล่าง)  ตั้งแต่ Windows Server 2008 มันได้ถูกแบ่งเป็น 2 กลุ่มคือ Windows Logs และ Applications and Services Log (ตามภาพด้านล่าง) โดย

– Windows Logs คือ Event log ส่วนกลางของ Windows เช่น Application, Security, System ส่วนนี้จะถูกใช้งานบ่อย โดย System Admin จะคอยดูว่ามี Error อะไรที่เป็นสัญญาณของปัญหา

– Applications and Service Logs คือ กลุ่มใหม่ของ Event log ที่บันทึกจาก Application บน Windows โดยเวลาจะดูต้องเลือกชื่อ Application ที่ต้องการด้วย

image

Applications and Service Logs

การบันทึก Event Log ลงในกลุ่มนี้ ผู้เขียน Application จะต้องไปสร้าง Source ขึ้นมา ในภาพด้านล่าง Source ชื่อ TaskScheduler มี 4 Category  ที่เปิดให้ดูเป็น Operational (Log Name=Microsoft-Windows-TaskScheduler/Operational)  แนะนำให้ System Admin แจ้ง Developer บันทึก Log ลงตรงนี้ เพราะการ Monitor ทำได้ง่าย การสร้าง Log อาจใช้ภาษา .Net เช่น C#, VB,C++ เป็นต้น

image

วิธีสร้าง Custom Views เก็บไว้ดู Event Log ส่วนตัว

การสร้าง Custom Views คือการสร้าง View ที่ใช้ดู Event log ขึ้นมาใหม่ ด้วยรูปแบบ XML  มีประโยชน์ดังนี้

  1. ดึง Log ที่น่าสนใจมาบันทึกเป็น view ส่วนตัว เพื่อเรียกดูใหม่ได้อีก
  2. ดึง Log มาจากหลาย Source ได้ ซึ่งการดูผ่าน GUI ทำไม่ได้
  3. สามารถสร้างเงื่อนไขที่เจาะจงและซับซ้อนได้ เช่น Secuity Log มี  Login Fail และ Application Log ที่ Error ของระยะเวลา 7 วันที่ผ่านมา

ขั้นตอนการสร้างมีดังต่อไปนี้

1. เปิด Event Viewer และ Click ขวาที่ Custom Views เลือก Create Custom View…

image

2.  หน้า Create Custom View เลือก XML

image

3. สร้างคำสั่งด้วยรูปแบบ XML เช่น การสร้าง View ดูการ Login จาก network มาที่ Server  แล้ว Failure จะใช้คำสั่ง

ตัวอย่างที่ 1 หาค่า logon fail ที่ Log ผ่าน network เข้ามา

<QueryList>
<Query ID=0 Path=”Security”>
<Select Path=”Security”>
              *[System[(band(Keywords,4503599627370496)]]
and
*[EventData[Data[@Name=’LogonType’]=’3’]]
         </Select>
</Query>
</QueryList>

คำสั่งเป็น XML ส่วนชื่อข้อมูลก็ลองไปกดดู Event Log ที่สนใจแล้ว click ที่ Details (ภาพด้านล่าง) ในภาพเป็น Event ของ Security  มี section System เราสนใจ Keyword ซึ่งหมายถึง Logon Fail หรือ Success การเก็บเป็นตัวเลขฐาน 2 แต่การเขียน query ต้องแปลงเป็นฐาน 10 โดยให้ตัด 0x8 ออกไป ก็จะได้ค่าเท่ากับ 4503599627370496 อีกเรื่องที่ต้องรู้คือการใช้ XML Filter XPath 1.0 มีคำสั่ง band มีรูปแบบ Boolean band(bitfield, bitfield)  เราเทียบค่าเพื่อหา Keyword กับค่าที่เราต้องการคือ Logon Failure

ในคำสั่งต่อมา Section EventData มาจะหา Logon ที่มาจาก network ซึ่งมีค่าเป็น 3 ก็พิมพ็ไปตามตัวอย่าง

image

ตัวอย่างที่ 2 เป็นการดู Logon Failure ในระยะ 7 วันที่ผ่านมา และ Application Log ในหน้าเดียวกัน

<QueryList>
<Query Id=”0″ Path=”Security”>
    <Select Path=”Security“>
*[System[ (band(Keywords,4503599627370496))]]
and
*[System[TimeCreated[timediff(@SystemTime) &lt; = 604800000]]]
and
*[EventData[Data[@Name=’LogonType’]!=’3′]    ]
</Select>

       <Select Path=”Application“>           *[System[(Level=1  or Level=2 or Level=3)]]      </Select>
</Query>

</QueryList>

อธิบายเฉพาะส่วนเพิ่ม คือ

– timediff() เป็น Function ของ XPath 1.0 อ่านเพิ่มเติมจาก Rerenence 2 ใช้เทียบเวลา &lt; หมายถึง มากกว่า 60480000 วินาที  (มาจาก 7วัน * 24 ชม * 60 นาที * 60 วินาที)

– Logon  ไม่เท่ากับ 3 คือ ไม่ได้มาจาก network

– ใส่ Application ผมเข้าไปด้วย (สีฟ้า)

 

สรุป

การสร้าง Custom Views ของ Event Log ช่วยให้สร้าง query เรากรองเอา Log ที่ต้องการมา save เป็น view เพื่อให้เรียกใช้งานได้ง่ายๆ

Reference

  1. Event Logs (http://technet.microsoft.com/en-us/library/cc722404.aspx)
  2. 2.2.15.2 Filter XPath 1.0 Extensions (http://msdn.microsoft.com/en-us/library/cc231313.aspx)
Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s