การบันทึก การติดตาม และการตรวจสอบ

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

ปัญหาการตรวจสอบ

  • ใครเข้าถึงคะแนนเครดิตใน 90 วันที่ผ่านมา?
  • stored procedures ใดทำงานในช่วงเช้าตรู่ของวันที่กำหนด?
  • มีการเข้าสู่ระบบจากภายนอกเครือข่ายองค์กรหรือไม่?
  • ต้องมีการบันทึกก่อนที่จะตั้งคำถาม

ไอคอนการตรวจสอบ

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Event Table คืออะไร?

  • บันทึกข้อมูล log และ trace จากออบเจกต์ Snowflake เช่น stored procedures, ฟังก์ชัน Snowpark, UDFs
  • สร้างเหมือนตารางทั่วไป แล้วตั้งค่าเป็น active ด้วย ALTER_ACCOUNT
  • ข้อความ log และ trace ถูกบันทึกโดยอัตโนมัตินับจากนั้น
  • สืบค้นด้วย SQL มาตรฐาน — ไม่ต้องใช้เครื่องมือ logging ภายนอก

event_table_simple.png

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

ระดับของ Log

 

ระดับ คำอธิบาย
TRACE ทุกจุดเข้าและออกของฟังก์ชัน — ละเอียดที่สุด
DEBUG รายละเอียดเพื่อวินิจฉัยปัญหา
INFO จุดสำคัญของการทำงานปกติ — แนะนำสำหรับ production
WARN เงื่อนไขที่ไม่คาดคิดแต่ไม่ทำให้หยุดทำงาน
ERROR ความล้มเหลว
FATAL ความล้มเหลวร้ายแรงที่ทำให้หยุดทำงาน
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

การติดตาม (Tracing)

  • บันทึกเส้นทางการทำงานในกระบวนการหลายขั้นตอน
  • แสดงการเชื่อมต่อระหว่างขั้นตอน ไม่ใช่แค่ข้อความแต่ละรายการ
  • บันทึกระยะเวลาและลำดับของแต่ละขั้นตอน
  • ข้อมูล trace ถูกเขียนลงใน event table เดียวกับข้อมูล log

tracing_v2.png

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

การใช้ LOGIN_HISTORY เพื่อตรวจสอบ

SELECT user_name,
       event_timestamp,
       client_ip,
       authentication_method,
       error_code,
       error_message
FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY
WHERE event_timestamp >= DATEADD('day', -90, CURRENT_TIMESTAMP())
  AND client_ip NOT LIKE '203.0.113.%'
ORDER BY event_timestamp DESC;
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

QUERY_HISTORY สำหรับการตรวจสอบ

SELECT user_name,
       role_name,
       warehouse_name,
       query_text,
       start_time,
       end_time
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE start_time >= DATEADD('day', -90, CURRENT_TIMESTAMP())
  AND query_text ILIKE '%credit_scores%'
ORDER BY start_time DESC;
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

เส้นทางการตรวจสอบที่สมบูรณ์

 

แหล่งข้อมูล สิ่งที่บันทึก คำถามที่ตอบได้
Event table บันทึกและติดตามจาก stored procedures, ฟังก์ชัน Snowpark แพลตฟอร์มทำอะไร?
LOGIN_HISTORY ความพยายามเข้าสู่ระบบทุกครั้ง: ผู้ใช้, IP, วิธีการ, ข้อผิดพลาด ใครเชื่อมต่อ จากที่ไหน มีข้อผิดพลาดหรือไม่?
QUERY_HISTORY SQL ทุกคำสั่ง: ผู้ใช้, บทบาท, warehouse, ข้อความคำสั่ง ใครเข้าถึงข้อมูลใด?
การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

มาฝึกกัน!

การจัดการ กำกับดูแล และการทำงานร่วมกันใน Snowflake

Preparing Video For Download...