Upload HTTPD(apache) log จาก EC2 ไปยัง CloudWatch Log

ในบล็อกนี้จะเป็นการเพิ่มเติมเนื้อหาต่อจากบล็อกก่อนนี้ที่เกี่ยวกับการทำ CloudWatch Log จะเป็นการสร้าง Log group ของ HTTPD(Apache) ครับผม
2022.06.28

ในบล็อกนี้จะเป็นการเพิ่มเติมเนื้อหาต่อจากบล็อกก่อนนี้ที่เกี่ยวกับการทำ CloudWatch Log จะเป็นการสร้าง Log group ของ HTTPD(Apache) ครับผม

เริ่มต้น

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

การติดตั้ง PHP และ Apache

หลังจากที่เราทำตามขั้นตอนในบล็อกข้างต้นก่อนหน้านี้แล้ว ให้เราทำการติดตั้ง https apache ตามขั้นตอนจากลิ้งค์ที่อยู่ด้านล่างนี้ได้เลยครับ
วิธี Install PHP 8.0 and Apache ใน Amazon Linux 2 ของ EC2
หลังจากทำตามขั้นตอนจากบล็อกข้างต้่นแล้ว ให้เราทำการแก้ไขไฟล์ index.html โดยการใช้คำสั่ง
cd /var/www/html/เพื่อเข้าสู่โฟลเดอร์หลัก
vi index.html เพื่อเปิดไฟล์และทำการเพิ่มเนื้อหาด้านล่างนี้ลงไป

<html><body>test</body></html>

เพื่อเป็นการทดสอบระบบว่าสามารถเข้าใช้งานหน้าเว็บไซต์ได้ปกติหรือไม่ ถ้าสามารถเข้าใช้งานได้ปกติระบบจะแสดงหน้าเว็บนี้ขึ้นมาดังรูป
http://[Instance public IP address]

ต่อไปเราจะทำการทดสอบ httpd log กันดูว่าสามารถใช้งานได้หรือไม่โดยการรันคำสั่ง
tail -f /var/log/httpd/access_log
หลังจากนั้นให้เราเปิดหน้าเว็บไซต์ของเราและทำการ refresh หน้าเว็บ ถ้าระบบทำงานปกติจะสังเกตว่ามีข้อมูล Log การเข้าใช้งานในหน้าต่าง putty




เมื่อสามารถเข้าใช้งาน httpd log ได้แล้วคราวนี้เราก็จะมาสร้าง log group ของ httpd log ภายใน CloudWatch กันซึ่งเนื้อหาก็จะคล้ายกับบล็อกก่อนหน้านี้ครับ
HTTPD(apache) log นั้นจะมีไฟล์ที่เก็บ log อยู่ 2 ไฟล์จัดเก็บอยู่ในโฟลเดอร์ /var/log/httpd นั้นคือ

  • Access log
  • Error log

  • ซึ่งในบล็อกนี้เราจะต้องสร้าง log group สำหรับข้อมูลทั้ง 2 ประเภท โดยเริ่มต้นจาก access log เป็นอันดับแรก

    การสร้าง log group

    คำสั่งสร้าง log group

    เริ่มต้นที่คำสั่งในการสร้าง log group ซึ่งจะมีส่วนประกอบทั้งหมดดังนี้ โดยครั้งนี้จะเป็นการสร้าง log group ในส่วนของข้อมูล access log ครับ

    Access log

    aws logs create-log-group: คือคำสั่งที่ใช้สร้าง log group ใน CloudWatch
    --region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
    --log-group-name:/chawish-test/var_log_httpd_access_log (กำหนดชื่อ log group ที่เราต้องการ)


    เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
    aws logs create-log-group --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_access_log"
    ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย

  • คำสั่งกำหนด retention(วันหมดอายุ) ของ log group
    จะมีส่วนประกอบของคำสั่งคือ

    aws logs put-retention-policy: คือคำสั่งที่ใช้กำหนด retention
    --region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
    --log-group-name:/chawish-test/var_log_httpd_access_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
    --retention-in-days: 30 (กำหนดจำนวนวันที่ต้องการจะให้หมดอายุ)


    เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
    aws logs put-retention-policy --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_access_log" --retention-in-days 30
    ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย

  • คำสั่งสร้างของ log stream

  • จะมีส่วนประกอบของคำสั่งคือ

    aws logs create-log-stream: คือคำสั่งที่ใช้กำหนด retention
    --region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
    --log-group-name:/chawish-test/var_log_httpd_access_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
    --log-stream-name: i-*****************
    (ตรงนี้ให้เราใส่ Instance ID ลงไปสามารถดูได้จากหน้า Instance ใน EC2)


    เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้ aws logs create-log-stream --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_access_log" --log-stream-name i-*****************

    เมื่อเรากรอกคำสั่งครบทั้ง 3 อย่างนี้ ให้เราลองเข้าไปดูในส่วนของ Log group ที่อยู่ในหน้า CloudWatch ดูจะเห็นได้ว่าตอนนี้ใน CloudWatch มี log group และ log stream ที่เราได้ส้รางขึ้นมาเรียบร้อยแล้ว
    ต่อไปให้เราทำการตั้งค่า config ที่อยู่ในไฟล์ httpd_access_log.conf โดยใช้งานคำสั่งนี้เพื่อเปิดดูข้อมูลไฟล์
    vi /etc/awslogs/config/httpd_access_log.conf

    จากนั้นให้กดปุ่ม i เพื่อเข้าโหมด insert และทำการใส่ข้อมูลทั้งหมดนี้ลงไป

    เมื่อเพิ่มเนื้อหาเสร็จแล้วให้กด esc เพื่อออกจากโหมด insert และพิม :x เพื่อเซฟและออกจากไฟล์
    ต่อไปให้ทำการ restart awslog นะครับเพื่ออัพเดทการทำงานของระบบโดยใช้คำสั่ง
    systemctl restart awslogsd

    Error log

    ในส่วนนี้ก็จะเหมือนกับการสร้าง log group ของ access log เช่นกัน เพียงแต่แตกต่างกันในเรื่องของไฟล์ข้อมูลที่เราจะนำมาสร้าง log group ครับ

    aws logs create-log-group: คือคำสั่งที่ใช้สร้าง log group ใน CloudWatch
    --region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
    --log-group-name:/chawish-test/var_log_httpd_error_log (กำหนดชื่อ log group ที่เราต้องการ)


    เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
    aws logs create-log-group --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_error_log"
    ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย

  • คำสั่งกำหนด retention(วันหมดอายุ) ของ log group

  • จะมีส่วนประกอบของคำสั่งคือ

    aws logs put-retention-policy: คือคำสั่งที่ใช้กำหนด retention
    --region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
    --log-group-name:/chawish-test/var_log_httpd_error_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
    --retention-in-days: 30 (กำหนดจำนวนวันที่ต้องการจะให้หมดอายุ)


    เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้
    aws logs put-retention-policy --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_error_log" --retention-in-days 30
    ให้เรารันคำสั่งนี้ลงไปใน Putty ได้เลย

  • คำสั่งสร้างของ log stream
  • จะมีส่วนประกอบของคำสั่งคือ

    aws logs create-log-stream: คือคำสั่งที่ใช้กำหนด retention
    --region: ap-southeast-1 (กำหนด region ที่ใกล้ที่สุด)
    --log-group-name:/chawish-test/var_log_httpd_error_log (ชื่อ log group ที่เราต้องการจะแก้ไข)
    --log-stream-name: i-*****************
    (ตรงนี้ให้เราใส่ Instance ID ลงไปสามารถดูได้จากหน้า Instance ใน EC2)


    เมื่อกรอกข้อมูลเสร็จแล้วเราจะได้คำสั่งที่ใช้งานเต็มในรูปแบบนี้ aws logs create-log-stream --region ap-southeast-1 --log-group-name "/chawish-test/var_log_httpd_error_log" --log-stream-name i-*****************

    เมื่อเรากรอกคำสั่งครบทั้ง 3 อย่างนี้ ให้เราลองเข้าไปดูในส่วนของ Log group ที่อยู่ในหน้า CloudWatch ดูจะเห็นได้ว่าตอนนี้ใน CloudWatch มี log group และ log stream ที่เราได้ส้รางขึ้นมาเรียบร้อยแล้ว ต่อไปให้เราทำการตั้งค่า config ที่อยู่ในไฟล์ httpd_access_log.conf โดยใช้งานคำสั่งนี้เพื่อเปิดดูข้อมูลไฟล์
    vi /etc/awslogs/config/httpd_error_log.conf

    จากนั้นให้กดปุ่ม i เพื่อเข้าโหมด insert และทำการใส่ข้อมูลทั้งหมดนี้ลงไป

    [/var/log/httpd/error_log]
    log_group_name = /chawish-test/var_log_httpd_error_log
    log_stream_name = {instance_id}
    file = /var/log/httpd/error_log
    datetime_format =%Y-%m-%d%H:%M:%S
    buffer_duration = 5000
    initial_position = start_of_file
    time_zone = LOCAL


    เมื่อเพิ่มเนื้อหาเสร็จแล้วให้กด esc เพื่อออกจากโหมด insert และพิม :x เพื่อเซฟและออกจากไฟล์
    ต่อไปให้ทำการ restart awslog นะครับเพื่ออัพเดทการทำงานของระบบโดยใช้คำสั่ง
    systemctl restart awslogsd

    สุดท้ายให้เราตรวจสอบความถูกต้องทั้งหมด โดยทำการเช็ค log group ใน CloudWatch ถ้าเราทำตามขั้นตอนถูกต้องจะแสดง log group ทั้งหมด 3 ตัว ได้แก่

  • /chawish-test/var_log_httpd_access_log
  • /chawish-test/var_log_httpd_error_log
  • /chawish-test/var_log_messages

  • สรุป

    ผมหวังว่าเนื้อหาในส่วนนี้จะสามารถต่อยอดให้กับผู้ที่สนใจ อยากจะศึกษาและค้นหาวิธีการใช้งาน CloudWatch Log นะครับและขอขอบคุณเนื้อหาอ้างอิงเหล่านี้ครับ

  • การสร้าง CloudWatch Log เพื่อใช้งานใน EC2
  • วิธี Install PHP 8.0 and Apache ใน Amazon Linux 2 ของ EC2
  • What is Amazon CloudWatch Logs?
  • ดูรายละเอียดเพิ่มเติมได้ที่นี่ สอบถามเพิ่มเติมเกี่ยวกับ AWS คลิกที่นี่