วันเสาร์ที่ 4 มกราคม พ.ศ. 2557

Monitor ระบบ ORACLE DATABASE อย่างไร

เรื่องมีอยู่ว่าลูกศิษย์ของผมซึ่งทำงานเป็น Outsource DBA ประจำอยู่กับลูกค้าแห่งหนึ่งได้รับมอบหมายงานให้นำ Cacti มาใช้งานสำหรับ Monitor ORACLE ที่มีอยู่หลายระบบ (เค้าเล่าว่าเป็นพัน instance) ก็เลยคิดว่าแทนที่จะสอนลูกศิษย์ตัวเองอย่างเดียวก็มาเขียนให้คนอื่นได้อ่านด้วยน่าจะดีกว่า โดยจากประสบการณ์เดิมของผมที่ได้เคยทดสอบใช้เครื่องมือต่างๆมาหลายชนิด มักจะมีบางหัวข้อที่ไม่สามารถหาเครื่องมือตัวใหนมาช่วยจัดการให้ได้ จนในที่สุดก็ต้องเขียนขึ้นมาเองหรือใช้โปรแกรมที่เป็น Opensource และทำสคริปท์ขึ้นมาใช้ส่วนตัวสำหรับงานของตัวเอง

หลักการทั่วไปของการ monitoring ORACLE
ความยากก็คือเครื่องมือที่มีขายในตลาดสำหรับระบบ Enterprise ที่ใช้สำหรับจัดการกับ Server ที่มีจำนวนมาก โดยส่วนใหญ่ จะเป็นการใช้ระบบ SNMP Agent เพื่อเป็นส่วนใช้สำหรับส่งและรับค่าระหว่าง Database และ Monitoring tools ก็จะมีปัญหาเกิดขึ้นมาเพราะ DBA ส่วนใหญ่แม้กระทั่งตัวผมเองไม่มีความรู้ SNMP ทำให้การติดตั้ง SNMP Agent เป็นไปได้อย่างยากลำบาก โดยเฉพาะสำหรับการติดตั้งบนทุก Server ที่เราต้องการ monitor ตัวอย่างปัญหาที่จะเกิดขึ้นก็ได้แก่ restart server แต่ลืม restart agent เป็นต้น หรือในบางกรณีก็จะมีปัญหากับเรื่อง security ที่เราต้องสร้าง user dbsnmp บนทุกๆ database มันจะมีปัญหาว่าถูกบังคับให้เปลี่ยน password ตามช่วงเวลา จะลำบากมากกับการมาคอยเปลี่ยน แต่ว่าที่เล่ามาทั้งหมดได้รับการทำให้สะดวกขึ้นใน Oracle Enterprise Manager 12c ได้ทำให้การใช้ SNMP Agent สะดวกกว่าเดิม แต่ว่า EM 12c มีราคาที่สูงบางองค์กรก็สู้ไม่ใหวเหมือนกัน

ทางเลือกที่เราจะไม่ใช้ SNMP ก็จะต้องมาทำสคริปท์เพื่อ query ค่าออกมาแล้วส่งต่อให้กับ monitoring tools ก็คือสร้าง background service หรือโปรแกรมขึ้นมารันเพื่อ query ทุกๆ 5 นาที หรือตามเวลาที่ได้ตั้งเอาไว้ แบบนี้ก็เรียกว่า Agent แต่ก็เหมือนเดิมคือถ้าลืม start Agent หรือเกิดอาการ hang/non-response ก็หยุดส่งค่าดื้อๆเอาเหมือนกัน ดังนั้นก็จะมีวิธีอีกแบบก็คือไปสร้างสคริปท์หรือ background service ที่ monitoring tools อย่างเดียวแล้วใช้การ remote query ข้อมูลกลับมาที่ปลายทาง วิธีนี้เรียกว่า Agentless


แล้่วผมจะช่วยลูกศิษย์ใช้ Cacti เพื่อ monitoring ระบบ ORACLE Database อย่างไร
จากโจทย์ที่ได้รับมาก็คือนำมาใช้เพื่อเก็บข้อมูลต่างๆเพื่อการตัดสินใจ โดยสิ่งที่จะนำมาเก็บก็คือ Hit ratio ต่างๆและข้อมูลที่เป็นการเข้าไป query จาก database ก็เลยคิดว่าจะใช้ Agentless โดยใช้ Cacti เป็นระบบ monitoring ที่จะรับค่าที่เรา query ออกมาและบันทึกเอาไว้เพื่อใช้สร้างกราฟเอาไว้ทำ report ได้ ซึ่งบอกได้ว่าเหมือนกับเอา Cacti แค่มาเป็นตัวสร้างกราฟเท่านั้นส่วนการ query ออกมาเราจะต้องทำเองทั้งหมด อ่านมาถึงตรงนี้คนที่เคยคิดจะใช้ Cacti มา monitoring ORACLE คงจะทราบดีว่าหากท่าน search google และในเว็บไซต์ของ Cacti เอง จะพบ template สำหรับใช้งาน ORACLE ในระบบ SNMP และแทบไม่ได้บอกวิธีอะไรมากมาย และไม่สอนให้ query ข้อมูลอื่นๆที่ไม่มีใน template ตัวผมเองเป็น DBA มาหลายปีอยากได้เครื่องมือที่สามารถใช้งานก็จนปัญญาเพราะหาวิธีไม่เจอและเครื่องมือที่ดังๆอย่าง Cacti ก็ไม่มีคนทำสคริปท์สำหรับ ORACLE จนในที่สุดผมก็ทำเองได้สำเร็จครับ ซึ่งผมก็จะค่อยเขียนวิธีทำและวิธีใช้งานในลำดับถัดไป

ไม่มีความคิดเห็น:

แสดงความคิดเห็น