Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 34

TRƯỜNG ĐẠI HỌC PHENIKAA

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO GIỮA KỲ


AWS Academy Lab Project - Cloud Data
Pipeline Builder

Giảng viên hướng dẫn : Phạm Kim Thành


Sinh viên : Nguyễn Đức Hải - 21010560
Lớp tín chỉ : Tích hợp và phân tích dữ liệu lớn -1-3-
23(N01)

Hà Nội, tháng 01/2024


Tóm tắt
Trong thờ i đạ i số hó a, việc thu thậ p và phâ n tích dữ liệu clickstream
(dò ng nhấ p chuộ t) trở nên quan trọ ng hơn bao giờ hết vớ i cá c doanh
nghiệp. Dữ liệu clickstream là mộ t nguồ n thô ng tin vô cù ng hữ u ích về
thó i quen sử dụ ng dịch vụ củ a ngườ i dù ng, giú p doanh nghiệp tố i ưu hó a
trả i nghiệm ngườ i dù ng và gia tă ng doanh thu. Tuy nhiên, việc xử lý
lượ ng lớ n dữ liệu clickstream đò i hỏ i hệ thố ng có khả nă ng xử lý và phâ n
tích dữ liệu lớ n, đá p ứ ng yêu cầ u về thờ i gian thự c. Hiện tạ i, có nhiều
hướ ng tiếp cậ n để giả i quyết vấ n đề nà y như sử dụ ng Hadoop, Spark hoặ c
cá c dịch vụ đá m mâ y như AWS, Google Cloud, Azure. Mỗ i hướ ng tiếp cậ n
đều có ưu và nhượ c điểm riêng.

Vớ i nhữ ng kiến thứ c từ nộ i dung đã họ c, tô i quyết định lự a chọ n bà i


tậ p lab sử dụ ng cá c cô ng cụ AWS để xâ y dự ng pipeline dữ liệu cho dữ liệu
clickstream. Tạ i sao lạ i là AWS ? Lý do rấ t đơn giả n: AWS là nền tả ng lớ n
nhấ t cung cấ p mộ t loạ t cá c dịch vụ xử lý, thố ng kê và theo dõ i dữ liệu
mạ nh mẽ và linh hoạ t như CloudWatch, EC2,... giú p xâ y dự ng và quả n lý
pipeline dữ liệu mộ t cá ch dễ dà ng. Bên cạ nh đó , mộ t trang web hoà n
chỉnh trên má y chủ EC2 đã đượ c cung cấ p sẵ n như mộ t nguồ n tà i nguyên,
khiến cho việc thự c hà nh bà i tậ p lab trở nên dễ dà ng hơn.

Nhữ ng thao tá c chính cầ n thự c hiện trong bà i tậ p lab tương đố i đơn


giả n. Vấ n đề kỹ thuậ t chủ yếu nằ m ở việc chuyển đổ i dữ liệu theo dõ i
clickstream sang cá c dạ ng dữ liệu đơn giả n hơn, tổ ng quá t và trự c quan
hơn thô ng qua cô ng cụ AWS CloudWatch. Từ đó , chú ng ta thiết kế cá c
dashboard giú p mô hình hó a cá c dữ liệu nà y và biểu diễn thô ng tin củ a
chú ng thô ng qua cá c bả ng biểu.

2
Đó ng gó p chính củ a bà i lab là việc á p dụ ng thà nh cô ng cá c dịch vụ
củ a AWS để xâ y dự ng mộ t pipeline dữ liệu hiệu quả cho dữ liệu
clickstream. Bà i tậ p lab chính là mộ t minh chứ ng cho khả nă ng xử lý và
phâ n tích dữ liệu lớ n cự c kỳ hiệu quả củ a cá c cô ng cụ AWS, đồ ng thờ i
cung cấ p cho ngườ i dù ng cá i nhìn sâ u sắ c về phâ n tích hà nh khá ch hà ng
thô ng qua dữ liệu clickstream.

3
Mục lục
Lời cam kết
Tóm tắt
Mục lục
Chương 1 Giới thiệu bài Lab
1.1 Đặ t vấ n đề
1.2 Mụ c tiêu và phạ m vi
1.3 Định hướ ng giả i phá p
1.4 Ướ c tính đơn giá trong 12 thá ng
Chương 2 Phát triển và triển khai kỹ thuật
2.1 Thiết kế tổ ng quan
2.2 Triển khai kỹ thuậ t
2.2.1 Phase 1: Phâ n tích trang web và xá c nhậ n dữ liệu weblog
2.2.2 Phase 2: Cà i đặ t CloudWatch agent và thiết lậ p file cà i đặ t
2.2.3 Phase 3: Truy cậ p CloudWatch agent
2.2.4 Phase 4: Thố ng kê, vẽ biểu đồ trong AWS CloudWatch
2.2.5 Phase 5: Thiết lậ p mà n hình theo dõ i (dashboard)
Chương 3 Kết luận
Tài liệu tham khảo
Phụ lục

4
Chương 1 Giới thiệu bài Lab
Trong suố t cá c khó a họ c tạ i AWS Academy, sinh viên đã hoà n thà nh
rấ t nhiều cá c bà i tậ p lab - bà i thự c hà nh khá c nhau. Sinh viên đã đượ c
cung cấ p kiến thứ c để sử dụ ng cá c dịch vụ và tính nă ng khá c nhau củ a
cô ng cụ AWS, từ đó xâ y dự ng nhiều giả i phá p cho cá c tình huố ng xử lý dữ
liệu có thể xả y ra trong thự c tế.

Trong bà i lab nà y, sinh viên đượ c yêu cầ u sử dụ ng cá c dịch vụ AWS


quen thuộ c, cũ ng như tìm hiểu cá c dịch vụ AWS hoà n toà n mớ i mẻ để xâ y
dự ng mộ t giả i phá p thố ng nhấ t và hiệu quả . Ở nhiều phầ n củ a dự á n,
hướ ng dẫ n từ ng bướ c chi tiết khô ng đượ c cung cấ p mộ t cá ch có ý đồ ..
Nhữ ng phầ n cụ thể nà y củ a dự á n nhằ m thá ch thứ c nhó m thự c hà nh cá c
kỹ nă ng mà sinh viên đã họ c đượ c trong suố t quá trình họ c trướ c dự á n
nà y. Trong mộ t số trườ ng hợ p, sinh viên có thể buộ c phả i tự họ c cá c kỹ
nă ng, kiến thứ c mớ i.

Đến cuố i dự á n nà y, nhó m đã có thể thự c hiện nhữ ng điều sau:

● Triển khai mộ t pipeline phâ n tích dữ liệu trên AWS hỗ trợ việc
phâ n tích dữ liệu clickstream từ trang web.
● Biến đổ i dữ liệu clickstream trướ c khi nó đến tầ ng trự c quan hó a.
● Sử dụ ng cá c dịch vụ AWS để phâ n tích dữ liệu clickstream.
● Thiết kế cơ chế bá o cá o bả ng điều khiển cho việc phâ n tích dữ liệu
clickstream.
● Điều chỉnh pipeline phâ n tích dữ liệu.

1
1.1 Đặt vấn đề

AnyCompany Café bá n cá c mặ t hà ng trá ng miệng và cà phê thô ng


qua trang web củ a họ . Họ có cá c quá n cà phê ở nhiều thà nh phố trên thế
giớ i. Cô ng ty muố n hiểu rõ hơn về doanh nghiệp củ a mình bằ ng cá ch sử
dụ ng dữ liệu về cá ch mà mọ i ngườ i tương tá c vớ i trang web. Cô ng ty dự
định phâ n tích xu hướ ng dữ liệu clickstream để đưa ra quyết định thô ng
minh hơn về việc đầ u tư. AnyCompany Café đã thuê cô ng ty tư vấ n củ a
nhó m để dẫ n dắ t nỗ lự c nà y. Nhó m là chuyên gia tích hợ p dữ liệu và là m
việc vớ i mộ t nhó m cá c kỹ sư dữ liệu, nhà phâ n tích dữ liệu và nhà phá t
triển web.

Dữ liệu nhậ t ký clickstream từ trang web củ a quá n cà phê bao gồ m


mộ t mụ c cho mỗ i lầ n nhấ p mà khá ch hà ng tiềm nă ng thự c hiện khi duyệt
trang web. Nhiệm vụ củ a nhó m là thiết kế và tạ o ra mộ t pipeline phâ n
tích dữ liệu để thu thậ p dữ liệu clickstream. Nhó m cũ ng sẽ tạ o mộ t bả ng
điều khiển phâ n tích để chủ quá n cà phê có thể nhanh chó ng quan sá t
hà nh vi củ a khá ch hà ng. Nhó m muố n hiểu rõ hơn về hà nh vi củ a ngườ i
dù ng trên trang web và sau đó sử dụ ng nhữ ng hiểu biết đó để tậ p trung
và o cá c nỗ lự c quả ng cá o. Cô ng ty thậ m chí có thể sử dụ ng dữ liệu để
quyết định nơi mở thêm cá c địa điểm.

1.2 Mục tiêu và phạm vi

Kết quả bà i lab đá p ứ ng cá c yêu cầ u sau:

● Thiết kế và tố i ưu hó a chi phí cho giả i phá p trướ c khi xâ y


dự ng.
● Đả m bả o rằ ng giả i phá p hoạ t độ ng.
● Biến đổ i dữ liệu.
● Nhậ p dữ liệu access_log từ má y chủ web củ a quá n cà phê.

2
● Sử dụ ng dữ liệu nhậ t ký mô phỏ ng.
● Phâ n tích và trự c quan hó a dữ liệu.
● Tạ o ra thô ng tin chi tiết.

Ngoà i ra bà i lab sẽ đượ c thự c hiện trên nền tả ng AWS Academy vớ i


khô ng giớ i hạ n thờ i gian. Tuy nhiên sẽ vẫ n có giớ i hạ n về budget tố i
đa khi thự c hiện bà i lab khô ng quá $80.

1.3 Định hướng giải pháp

Nhó m đã lự a chọ n sử dụ ng AWS CloudWatch Agent để truy vấ n dữ


liệu từ access_log củ a web server Apache. Đâ y là mộ t giả i phá p hiệu quả
để thu thậ p, theo dõ i và phâ n tích dữ liệu log từ cá c nguồ n khá c nhau trên
mô i trườ ng AWS và on-premises củ a bạ n.

Sau khi thu thậ p dữ liệu, nhó m sử dụ ng cá c truy vấ n để phâ n tích


dữ liệu và vẽ ra cá c biểu đồ trên dashboard. Điều nà y giú p nhó m có cá i
nhìn trự c quan về dữ liệu và dễ dà ng nhậ n biết cá c xu hướ ng và mô hình
hà nh vi củ a ngườ i dù ng.

Cuố i cù ng, nhó m đã chuyển file access_log tớ i S3 để sao lưu.


Amazon S3 là mộ t dịch vụ lưu trữ đá m mâ y đá ng tin cậ y, giú p nhó m lưu
trữ và bả o vệ dữ liệu quan trọ ng.

Tó m lạ i, nhó m đã xâ y dự ng mộ t giả i phá p để thu thậ p, phâ n tích và


lưu trữ dữ liệu clickstream. Giả i phá p nà y khô ng chỉ giú p nhó m hiểu rõ
hơn về hà nh vi củ a ngườ i dù ng mà cò n đả m bả o an toà n và tính sẵ n sà ng
củ a dữ liệu. Nhó m đã tậ n dụ ng tố t cá c dịch vụ củ a AWS và á p dụ ng thà nh
cô ng chú ng và o việc giả i quyết vấ n đề thự c tế.

3
1.4 Ước tính đơn giá trong 12 tháng

Ướ c tính đơn giá cho 12 thá ng sẽ rơi và o khoả ng $298.80 ( ~


$25/thá ng). Cá c dịch vụ cầ n chi trả chủ yếu là má y chủ EC2 (t3.medium)
và AWS CloudWatch (dù ng ít nhấ t 2 Dashboard). Để tố i ưu chi phí có thể
chi trả trướ c tiền má y chủ EC2 trướ c 1 nă m ( chi phí 1 nă m sẽ cò n
$281.28 ) hoặ c trả trướ c 3 nă m ( chi phí 1 nă m sẽ cò n $175.81 ). Thế nên
nhó m khuyến khích trả trướ c cho 3 nă m.

Đố i vớ i AWS CloudWatch khô ng có chính sá ch trả trướ c thế nên chi


phí hà ng thá ng đố i vớ i mứ c dù ng trong bà i ướ c tính cố định $3.

4
5
Chương 2 Phát triển và triển khai kỹ thuật

2.1 Thiết kế tổng quan

Hình 2 Ví dụ thiết kế gó i

2.2 Triển khai kỹ thuật

2.2.1 Phase 1: Phân tích trang web và xác nhận dữ liệu weblog
● Task 1: Phâ n tích và hiểu mô i trườ ng phò ng thí nghiệm

Ở đâ y, ta có mộ t phiên bả n EC2 đang chạ y trong mạ ng con cô ng


cộ ng và mạ ng con nà y thuộ c về mộ t VPC, có tên là Lab VPC. Có mộ t
Security Group sẽ kiểm soá t quyền truy cậ p và o phiên bả n EC2 (gọ i là
trườ ng hợ p) nà y. Ngoà i ra, đã có mộ t số dịch vụ đi kèm để theo dõ i nhậ t
ký. Vì vậ y, ta sẽ khô ng cầ n thự c hiện nhiệm vụ kỹ thuậ t nà o trong bướ c
nà y.

6
● Task 2: Điều chỉnh security group và kiểm tra lạ i web
application

Ta phả i cho phép lưu lượ ng TCP trong Security Group và nó phả i ở
trên cổ ng 80. Chọ n Security Group và chọ n “Edit inbound rules” ở
Actions. Tiếp đó ấ n chọ n “Add rule” lự a chọ n “Custom TCP”, chọ n “80” và
“Save rules”.

Quay lạ i “Instances” chọ n và o EC2 đang chạ y, copy Public IPv4 mở


đườ ng dẫ n “http://public-ip/cafe” (trong đó public-ip là Public IPv4 vừ a
copy)

(Lưu ý: Mỗ i lầ n khở i chạ y lab, giá trị Public IPv4 sẽ khá c nhau)

● Task 3: Tìm và back-up httpd access_log

Truy cậ p và o AWS Cloud9 và mở Cloud9 IDE chạ y dò ng lệnh:

whereis httpd

Sau khi thấ y đượ c vị trí củ a httpd, ta dù ng lệnh “tail” để theo dõ i cá c


thay đổ i trong ở file “access_log” ở bên trong thư mụ c “httpd”:

sudo tail -f /etc/httpd/logs/access_log

Ta back-up “access_log”, ở đâ y ta sẽ thự c hà nh back-up nó và o mô i


trườ ng đang là m việc:

7
sudo cp /etc/httpd/logs/access_log
/home/ec2-user/environment/initial_access_log

Trong đó :

● sudo : cấ p quyền root

● cp : lệnh copy

● /etc/httpd/logs/access_log : Vị trí muố n copy

● /home/ec2-user/environment/initial_access_log : vị trí muố n lưu tớ i.

2.2.2 Phase 2: Cài đặt CloudWatch agent và thiết lập file cài đặt
● Task 1: Cà i đặ t CloudWatch agent lên web server

Chạ y comment cà i đặ t Amazon CloudWatch Agent (ACG):


sudo yum install -y amazon-CloudWatch-agent

● Task 2: Tạ o file cà i đặ t

Tả i file config.json từ AWS:


sudo wget https://aws-tc-largeobjects.s3.us-west-2.amazonaws.com/CUR-TF-
200-ACCAP4-1-79925/capstone-4-clickstream/s3/config.json

Tiếp đó di chuyển file config.json và o trong folder củ a ACG:


sudo mv config.json /opt/aws/amazon-CloudWatch-agent/bin/

● Task 3: Cấ u hình httpd.conf dướ i dạ ng JSON

Tìm file “httpd.conf” bằ ng cá ch dù ng lệnh bên dướ i.


sudo find /etc -name httpd.conf

8
Ta thu đượ c đườ ng dẫ n tớ i file cầ n tìm :
/etc/httpd/conf/httpd.conf.

Ta cầ n phả i backup file:


sudo cp /etc/httpd/conf/httpd.conf /home/ec2-user/environment/httpd.conf

Bâ y giờ ta có thể thấ y đượ c file httpd.conf xuấ t hiện ở menu bên
phả i

Ta cầ n chỉnh sử a file httpd.conf trên AWS Cloud9:


sudo ln -s /etc/httpd/conf /home/ec2-user/environment/httpdconf

sudo chown -R ec2-user /etc/httpd/conf

Từ giờ ta có thể dễ dà ng mở file httpd.conf ngay trên giao diện


Cloud9

Tiếp đó sử a nộ i dung file theo phụ lụ c đi kèm bên dướ i. Lưu sử a


đổ i.

9
● Task 4: Cậ p nhậ t file config tớ i CloudWatch agent

Đầ u tiên ta cầ n tạ o vị trí thư mụ c chứ a cá c file log củ a agent:

sudo mkdir -p /var/log/www/error

sudo chown -R apache:apache /var/log/www

sudo mkdir -p /var/log/www/access

sudo chown -R apache:apache /var/log/www

Khở i độ ng lạ i httpd và tìm vị trí config CloudWatch.json

sudo systemctl restart httpd

sudo find / -name '*CloudWatch*json*' 2>/dev/null

Nạ p config và o agent theo câ u lệnh dướ i đâ y và khở i độ ng lạ i:

sudo /opt/aws/amazon-CloudWatch-agent/bin/amazon-CloudWatch-agent-ctl -a
fetch-config -m ec2 -s -c file:/opt/aws/amazon-CloudWatch-agent/doc/amazon-
CloudWatch-agent-schema.json

sudo systemctl start amazon-CloudWatch-agent.service

Kiểm tra trạ ng thá i agent, kết quả như hình thì đã thiết lậ p thà nh
cô ng:
service amazon-CloudWatch-agent status

10
2.2.3 Phase 3: Truy cập CloudWatch agent

Về cơ bả n, dịch vụ AWS CloudWatch đã có thể xem đượ c nhậ t ký


truy cậ p đượ c má y chủ apache lưu lạ i trên chính giao diện web củ a AWS.
Cô ng việc từ bướ c nà y sẽ là thố ng kê cá c lượ t truy cậ p/lỗ i và sử dụ ng
cô ng cụ có sẵ n củ a AWS CloudWatch để lậ p thà nh cá c bộ lọ c, biểu đồ
tương ứ ng.

Task 1: Quan sá t file amazon-CloudWatch-agent.log

Trướ c tiên ta cầ n tìm vị trí củ a file:


sudo find / -name amazon-CloudWatch-agent.log 2>/dev/null

11
sudo cat /opt/aws/amazon-CloudWatch-agent/logs/amazon- CloudWatch-agent.log

Task 2: Quan sá t trên file nhậ t ký (log) trên CloudWatch

Mở CloudWatch, truy cậ p và o apache/access:

Chọ n Log stream:

12
Tuy nhiên, để thố ng kê mộ t cá ch trự c quan, sá t vớ i thự c tế nhấ t ta
sẽ cầ n phả i truy cậ p bằ ng tay rấ t nhiều lầ n và từ nhiều má y khá c nhau.
Điều nà y sẽ khá tố n thờ i gian. Rấ t may trong bà i lab nà y ta đã có chuẩ n bị
trướ c mộ t file mẫ u từ AWS. Việc bâ y giờ là điều chỉnh cho AWS
CloudWatch trỏ tớ i file mẫ u nà y và ta sẽ thự c hà nh phâ n tích thố ng kê ra
nhữ ng số liệu mà ta mong muố n.

Đầ u tiên dừ ng CloudWatch Agent:


sudo /opt/aws/amazon-CloudWatch-agent/bin/amazon-CloudWatch-agent-ctl -m ec2 -a stop

sudo service amazon-CloudWatch-agent status

13
Copy file access_log.log trong samplelogs và o folder đượ c thiết lậ p
trong config.json củ a CloudWatch Agent ( ở đâ y là
/var/log/www/access/*):
sudo cp /home/ec2-user/environment/samplelogs/access_log.log
/var/log/www/access/access_log

Khở i độ ng lạ i CloudWatch Agent


sudo systemctl restart amazon-CloudWatch-agent.service

2.2.4 Phase 4: Thống kê, vẽ biểu đồ trong AWS CloudWatch

Task 1: Đếm số ngườ i truy cậ p và o mộ t trang web

Ta sẽ cầ n phả i đếm xem số ngườ i truy cậ p và o mộ t trang web cụ


thể là trang "/cafe/menu.php". Theo đó ta cầ n truy vấ n cá c “remote IP” xuấ t
hiện trong file access_log đã đượ c ghi nhậ n lạ i. Để có thể đếm đượ c giá trị
đó , ta sẽ dù ng lệnh truy vấ n:

14
fields @timestamp, remoteIP

| filter request = "/cafe/menu.php"

| count(remoteIP) as Visitors by @timestamp

| sort @timestamp asc

Nhậ p đoạ n lệnh trên và o Log insights, lự a chọ n log group (bả n log
ta cầ n truy vấ n) là apache/access (như đã thự c thiện ở phase trướ c đó ).
Bấ m nú t mà u cam “Run Query” để truy xuấ t thử . Sau đó chọ n Actions,
chọ n Save As để lưu đoạ n lệnh cho cá c lầ n chạ y chương trình say (hoặ c
phụ c vụ quá trình tự độ ng hó a, thố ng kê sau nà y)

Task 2 : Xá c định số lượ ng khá ch truy cậ p đã mua hà ng

Tương tự , ta sẽ sẽ là m giố ng như Task trên. Ta chỉ cầ n thay


đổ i giá trị request tương ứ ng:

15
Task 3: Xá c định số lượ ng khá ch truy cậ p và o menu nhưng khô ng
mua hà ng

Vì đoạ n code quá dà i thế nên là m tương tự như console log dướ i
đâ y:

16
Lú c nà y ta đã có số lượ ng khá ch hà ng truy cậ p hai trang. Giờ sẽ so
sá nh phầ n tră m khá ch hà ng thanh toá n (tương ứ ng vớ i truy cậ p và o trang
thanh toá n):

2.2.5 Phase 5: Thiết lập màn hình theo dõi (dashboard)

Task 1: Sử dụ ng access_log chứ a thô ng tin địa lý:

Ta sẽ vẽ biểu đồ thố ng kê cá c khá ch hà ng truy cậ p và o trang web


theo vù ng địa lý. Để là m đượ c thì ra sẽ sử dụ ng file access_log có
5248 lượ t truy cậ p từ nhiều nơi khá c nhau để là m ví dụ . Là m theo
như hình bên dướ i

17
Ngoà i ra ta cầ n phả i xó a Log stream trướ c đó , sau khi hoà n thà nh
ấ n F5, mộ t Log Stream khá c đã đượ c thay thế

18
Task 2: Xâ y dự ng trang tổ ng quan để quan sá t dữ liệu vị trí địa lý
trong CloudWatch Logs Insights

Đầ u tiên ta chọ n phầ n “Dashboards” bên tay trá i rồ i chọ n “Create


Dashboard”

Tạ o mộ t Dashboard tên “cafe-dashboard”

Chọ n data source là Logs, ở đâ y loạ i biểu đồ như thế nà o sẽ do bạ n


quyết định. Trong ví dụ nà y nhó m chọ n 2 biểu đồ : biểu đồ trò n,
biểu đồ cố t. Đố i vớ i biểu đồ trò n ta chọ n như hình

19
Phầ n Query editor, ta nhậ p:
fields remoteIP, city

| filter request = "/cafe/menu.php"

| stats count() as menupopular by city

| sort menupopular desc

| limit 10

Cuố i cù ng ta chọ n Create widget và đổ i tên biểu đồ . Tương tự , đố i


vớ i biểu đồ cộ t ta sẽ chọ n lạ i ở bướ c trên là “Bar”. Về truy vấ n, ta muố n
tuy vấ n nộ i dung là Top 10 khu vự c có ngườ i tạ o thanh toá n nhiều nhấ t,
thế nên phầ n truy vấ n ta sẽ sử a thà nh:
fields remoteIP, city

| filter request = "/cafe/processOrder.php"

20
| stats count() as menupopular by city

| sort menupopular desc

| limit 10

Kết quả thu đượ c:

Task 3: Lưu backup file nhậ t ký (log) và o trong S3

Mở S3, copy tên buckets:

21
Tiếp đó , thay thế tên buckets chạ y câ u lệnh copy đưa và o S3, ở đâ y
tên củ a buckets nhó m là :

accap4-logsbucket--7516bdf0

sudo aws s3 cp /home/ec2-user/environment/samplelogs/access_log_geo.log


s3://accap4-logsbucket--7516bdf0/

Sau bướ c nà y file access_log đã có mộ t phiên bả n lưu trữ trên S3.

22
Chương 3 Kết luận
Qua dự á n nà y, sinh viên đã thiết kế và triển khai thà nh cô ng mộ t
pipeline phâ n tích dữ liệu trên AWS, hỗ trợ việc phâ n tích dữ liệu
clickstream từ trang web củ a AnyCompany Café. Sinh viên đã thự c hà nh
biến đổ i và phâ n tích dữ liệu, tạ o ra mộ t bả ng điều khiển phâ n tích giú p
chủ quá n cà phê nhanh chó ng quan sá t hà nh vi củ a khá ch hà ng.

Nhữ ng hiểu biết thu đượ c từ dữ liệu clickstream đã giú p


AnyCompany Café tậ p trung và o cá c nỗ lự c quả ng cá o và đưa ra quyết
định thô ng minh hơn về việc đầ u tư. Điều nà y khô ng chỉ giú p tố i ưu hó a
trả i nghiệm ngườ i dù ng mà cò n tă ng doanh thu cho AnyCompany Café.

Sinh viên đã họ c hỏ i và trả i nghiệm rấ t nhiều từ dự á n nà y, từ việc


tìm hiểu về dữ liệu clickstream, cá ch xử lý và phâ n tích dữ liệu lớ n, đến
việc sử dụ ng cá c dịch vụ củ a AWS. Chú ng tô i rấ t mong muố n á p dụ ng
nhữ ng kiến thứ c và kỹ nă ng đã họ c đượ c từ dự á n nà y và o cá c dự á n thự c
tế trong tương lai.

23
Phụ lục
#
# This is the main Apache HTTP server configuration file. It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsure
# consult the online docs. You have been warned.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path. If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so 'log/access_log'
# with ServerRoot set to '/www' will be interpreted by the
# server as '/www/log/access_log', where as '/log/access_log' will be
# interpreted as '/log/access_log'.
#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path. If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used. If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
ServerRoot "/etc/httpd"
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80
#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so

1
#
Include conf.modules.d/*.conf
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User apache
Group apache
# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition. These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#
#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents. e.g. admin@your-domain.com
#
ServerAdmin root@localhost
#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
AllowOverride none
Require all denied
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#

2
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/var/www/html"
#
# Relax access to content within /var/www.
#
<Directory "/var/www">
AllowOverride None
# Allow open access:
Require all granted
</Directory>
# Further relax access to the default document root:
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<Files ".ht*">
Require all denied
</Files>
#

3
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "logs/error_log"
#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn
<IfModule log_config_module>
#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

<IfModule logio_module>
# You need to enable mod_logio.c to use %I and %O
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a <VirtualHost>
# container, they will be logged here. Contrariwise, if you *do*
# define per-<VirtualHost> access logfiles, transactions will be
# logged therein and *not* in this file.
#
#CustomLog "logs/access_log" common
#
# If you prefer a logfile with access, agent, and referer information
# (Combined Logfile Format) you can use the following directive.
#
CustomLog "logs/access_log" combined
</IfModule>
<IfModule alias_module>
#
# Redirect: Allows you to tell clients about documents that used to
# exist in your server's namespace, but do not anymore. The client
# will make a new request for the document at its new location.
# Example:
# Redirect permanent /foo http://www.example.com/bar
#
# Alias: Maps web paths into filesystem paths and is used to
# access content that does not live under the DocumentRoot.
# Example:
# Alias /webpath /full/filesystem/path
#
# If you include a trailing / on /webpath then the server will
# require it to be present in the URL. You will also likely

4
# need to provide a <Directory> section to allow access to
# the filesystem path.
#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the target directory are treated as applications and
# run by the server when requested rather than as documents sent to the
# client. The same rules about trailing "/" apply to ScriptAlias
# directives as to Alias.
#
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
<IfModule mime_module>
#
# TypesConfig points to the file containing the list of mappings from
# filename extension to MIME-type.
#
TypesConfig /etc/mime.types

#
# AddType allows you to add to or override the MIME configuration
# file specified in TypesConfig for specific file types.
#
#AddType application/x-gzip .tgz
#
# AddEncoding allows you to have certain browsers uncompress
# information on the fly. Note: Not all browsers support this.
#
#AddEncoding x-compress .Z
#AddEncoding x-gzip .gz .tgz
#
# If the AddEncoding directives above are commented-out, then you
# probably should define those extensions to indicate media types:
#
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz

#
# AddHandler allows you to map certain file extensions to "handlers":
# actions unrelated to filetype. These can be either built into the server
# or added with the Action directive (see below)
#
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#

5
#AddHandler cgi-script .cgi
# For type maps (negotiated resources):
#AddHandler type-map var
#
# Filters allow you to process content before it is sent to the client.
#
# To parse .shtml files for server-side includes (SSI):
# (You will also need to add "Includes" to the "Options" directive.)
#
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
</IfModule>

#
# Specify a default charset for all content served; this enables
# interpretation of all content as UTF-8 by default. To use the
# default browser choice (ISO-8859-1), or to allow the META tags
# in HTML content to override this choice, comment out this
# directive:
#
AddDefaultCharset UTF-8
<IfModule mime_magic_module>
#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type. The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
MIMEMagicFile conf/magic
</IfModule>
#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#
#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall may be used to deliver
# files. This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
# Defaults if commented: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
EnableSendfile on
# Enable HTTP/2 by default
#
# https://httpd.apache.org/docs/2.4/mod/core.html#protocols

6
<IfModule mod_http2.c>
Protocols h2 h2c http/1.1
</IfModule>
# Supplemental configuration
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf

You might also like