TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀNTHÔNG VIỆT - HÀN KHOA KHOA HỌC MÁY TÍNH BÀI TẬP LỚN LẬP TRÌNH HỆ THỐNG TÊN ĐỀ TÀI BUILDING A SYSTEM MONITORING AND ANALYSIS APPLICATION 2... B
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN
THÔNG VIỆT - HÀN KHOA KHOA HỌC MÁY TÍNH
BÀI TẬP LỚN LẬP TRÌNH HỆ THỐNG
TÊN ĐỀ TÀI BUILDING A SYSTEM MONITORING AND
ANALYSIS APPLICATION
2 Lê Khả Nhân - 21IT218
3 Huỳnh Phú Nhuận - 21IT365
4 Thái Doãn Tân - 21IT444
5 Trương Thành Tiến – 21IT521
Giảng viên hướng dẫn : TS Nguyễn Hữu Nhật Minh
Đà Nẵng, tháng 11 năm 2023
Trang 2THÔNG VIỆT - HÀN KHOA KHOA HỌC MÁY TÍNH
BÀI TẬP LỚN LẬP TRÌNH HỆ THỐNG
TÊN ĐỀ TÀI BUILDING A SYSTEM MONITORING AND
ANALYSIS APPLICATION
Nhóm 1 : 1 Nguyễn Văn Vĩnh Nguyên - 21IT431
2 Lê Khả Nhân - 21IT218
3 Huỳnh Phú Nhuận - 21IT365
4 Thái Doãn Tân - 21IT444
5 Trương Thành Tiến - 21IT521
Giảng viên hướng dẫn : TS Nguyễn Hữu Nhật Minh
Đà Nẵng, tháng 11 năm 2023
Trang 3Building a System Monitoring and Analysis Application i
LỜI CẢM ƠN
Ngày nay với sự phát triển mạnh mẽ của khoa học công nghệ, đặc biệt là sựphát triển nhanh chóng của lĩnh vực công nghệ thông tin, công nghệ thông tin ngàycàng đi vào đời sống và được con người khai thác một cách rất hiệu quả biến nó thànhcông cụ lao động hữu ích và đóng vai trò rất quan trọng trong đời sống xã hội công cụlao động và công nghệ phần mềm là một phần quan trọng của lĩnh vực công nghệthông tin Chúng em thực hiện đề tài “Building a System Monitoring and AnalysisApplication” nhằm nâng cao thêm kiến thức và tầm hiểu biết của mình về lĩnh vựcnày Lĩnh vực công nghệ thông tin nói chung và bộ môn lập trình hệ thống nói riêng.Chúng em chân thành cảm ơn TS Nguyễn Hữu Nhật Minh trong thời gian qua
đã cung cấp cho chúng em những kiến thức về lập trình hệ thống và hướng dẫn chúng
em có thể hoàn thành đề tài này một cách tốt nhất Tuy nhiên, do sự hiểu biết củachúng em về lĩnh vực này còn hạn chế, đề tài còn nhiều thiếu sót,và chưa được hoànthiện ,vậy chúng em kính mong Thầy thông cảm và góp ý them cho nhóm để lần saunhóm có thêm nhiều ý tưởng và hoàn thiện thêm vốn kiến thức cũng như những đề tàitiếp theo mà nhóm sẽ làm
Chúng em xin chân thành cảm ơn Thầy !
Khoa khoa học máy tính Nhóm 1
Trang 4NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Trang 5
Building a System Monitoring and Analysis Application iii
MỤC LỤC
LỜI CẢM ƠN i
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii
MỤC LỤC iii
DANH MỤC HÌNH ẢNH v
DANH MỤC BẢNG BIỂU vi
MỞ ĐẦU 7
CHƯƠNG 1 GIỚI THIỆU VỀ DỰ ÁN 8
1.1 Tên Dự Án 8
1.2 Người Thực Hiện 8
1.3 Giới Thiệu Về Dự Án 8
1.4 Lý Do Chọn Dự Án 9
1.5 Tổng Quan 9
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 11
2.1 Sơ Lược Về Lập Trình Hệ Thống 11
2.1.1 Khái niệm lập trình hệ thống 11
2.1.2 Đặc điểm lập trình hệ thống 11
2.1.3 Các kỹ thuật lập trình hệ thống 12
2.2 Tổng Quan Về Công Nghệ Chính 14
2.2.1 Tổng quan về VMware Workstation Pro 14
2.2.2 Tổng quan về Ubuntu và phiên bản Ubuntu 22.04 17
2.3 Tổng Quan Về Ngôn Ngữ Lập Trình C 20
2.4 Tìm Hiểu Về Interprocess Communication 21
2.4.1 Khái niệm Process và IPC 21
2.4.2 Vì sao các process phải giao tiếp với nhau? 22
2.4.3 Một số cơ chế giao tiếp giữa các process trong Linux 22
2.5 Lập trình Socket trên Linux 22
2.5.1 Mô hình Client/Server 22
2.5.2 Sơ lược về Socket 23
CHƯƠNG 3 TRIỄN KHAI VÀ XÂY DỰNG 26
Khoa khoa học máy tính Nhóm 1
Trang 63.1 Cài Đặt Và Cấu Hình 26
3.1.1 Các thư viện sử dụng 26
3.1.1.1 Thư viện nlohmann Json 26
3.1.1.2 Thư viện X11 26
3.1.1.3 Thư viện openSSL 26
3.2 Mã Nguồn Dự Án 27
3.2.1.1 Mã nguồn phía Client 27
3.2.1.2 Mã nguồn phía Server 27
3.3 Kết Quả Triển Khai 28
3.3.1 Chức năng xem thông tin Client kết nối tới Server 28
3.3.2 Chức năng xem thông tin cơ bản của Client 28
3.3.3 Chức năng xem trạng thái mạng, CPU, bộ nhớ 29
3.3.4 Chức năng xem thông tin chi tiết của các tiến trình 29
3.3.5 Chức năng xóa tiến trình Client 29
3.3.6 Chức năng gửi thông báo tới Client 29
3.3.7 Chức năng chụp màn hình Client 30
3.3.8 Chức năng sử dụng Terminal Client 31
3.3.9 Chức năng gửi file tới Client 31
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỄN 32
TÀI LIỆU THAM KHẢO 33
Trang 7Building a System Monitoring and Analysis Application v
DANH MỤC HÌNH ẢNH
Hình 2.1 Giới Thiệu Về Máy Ảo 14
Hình 2.2 Giới Thiệu Về Ubuntu 17
Hình 2.3 Phiển Bản Ubuntu 22.04 19
Hình 2.4 Ngôn Ngữ Lập Trình C 20
Hình 2.5 Lý do nên sư dụng C 21
Hình 2.6 Mô hình hoạt động của Stream sockets 23
Hình 2.7 Mô hình hoạt động của Datagram sockets 24
Hình 3.1 Mã nguồn phía Client 27
Hình 3.2 Mã nguồn phía Server 27
Hình 3.3 Chức năng xem thông tin Client kết nối tới Server 28
Hình 3.4 Chức năng xem thông tin cơ bản của Client 28
Hình 3.5 Chức năng xem trạng thái mạng, CPU, bộ nhớ 29
Hình 3.6 Chức năng gửi thông báo tới Client 29
Hình 3.7 Chức NăngClient Nhận Thông Báo Từ Server 30
Hình 3.8 Chức năng chụp màn hình Client 30
Hình 3.9 Chức năng sử dụng Terminal Client 31
Hình 3.10 chức năng gửi file tới Client 31
Khoa khoa học máy tính Nhóm 1
Trang 8DANH MỤC BẢNG BIỂU
Trang 9MỞ ĐẦU
Trong quá trình phát triển của xã hội, công nghệ thông tin đã và đang phát triểnmạnh mẽ, ngày càng thâm nhập sâu, trở thành một công cụ hỗ trợ đắc lực cho conngười trong mọi lĩnh vực
Trong những năm gần đây, nước ta đã có rất nhiều cố gắng để tiến kịp xu thếđổi mới và phát triển của khu vực và thế giới Một trong các bước đi đúng đắn của nhànước ta là ưu tiên phát triển ngành công nghệ thông tin, ngành mũi nhọn quan trọngtrong mục tiêu công nghiệp hóa hiện đại hóa đất nước Vì lẽ đó tin học ngày nay đã đisâu vào mọi lĩnh vực của xã hội và đời sống con người
Trong xu thế phát triển hiện nay trên thế giới khoa học và công nghệ luôn cónhững thay đổi mạnh mẽ Một phần trong đó là việc ứng dụng Công Nghệ Thông Tinvào đời sống hàng ngày của con người Loài người chúng ta đang hướng tới thiết lậpmột hành tinh thông minh Ngày nay với sự phát triển mạnh mẽ của CNTT kết hợp với
sự phát triển của mạng Internet đã kết nối được toàn thế giới lại với nhau thành một thểthống nhất
Trong thời gian học tập tại Trường Đại học Công Nghệ Thông Tin Và TruyềnThông Việt Hàn, chúng em đã hiểu thế mạnh mà các công nghệ ứng dụng mang lại.Qua quá trình khảo sát một vài công nghệ, chúng em đã xây dựng lên đề tài tìm hiểu vàtriển khai website với Docker và Nginx với mong muốn giúp cho việc triển khai ứngdụng tới tay khách hàng trở nên dễ dàng hơn, thuận tiện và giảm thiểu được các sai sót
Vì vậy chúng em chọn đề tài: “Configuration Docker And Deploy Web Server WithNginx”
Nội dung đề tài gồm các chương:
Chương 1 Giới thiệu về dự án
Chương 2 Cơ sở lý thuyết
Chương 3 Triển khai và xây dựng
Cuối cùng là Kết luận, Tài liệu tham khảo và Phụ lục liên quan đến đề tài
Trang 10CHƯƠNG 1 GIỚI THIỆU VỀ DỰ ÁN
1.1 Tên Dự Án
Xây dựng ứng dụng giám sát và phân tích hệ thống
1.2 Người Thực Hiện
Thành Viên 1:
Tên Sinh Viên: Huỳnh Phú Nhuận
Mã sinh viên: 21IT365
Lớp: 21SE5
Thành Viên 2:
Tên Sinh Viên: Nguyễn Văn Vĩnh Nguyên
Mã sinh viên: 21IT431
Lớp: 21SE1
Thành Viên 3:
Tên Sinh Viên: Lê Khả Nhân
Mã sinh viên: 21IT218
Lớp: 21SE3
Thành Viên 4:
Tên Sinh Viên: Trương Thành Tiến
Mã sinh viên: 21IT521
Lớp: 21SE5
Thành Viên 5:
Tên Sinh Viên: Thái Doãn Tân
Mã sinh viên: 21IT444
Lớp: 21SE1
1.3 Giới Thiệu Về Dự Án
Ứng dụng theo dõi hệ thống bằng C++ Yêu cầu về chức năng giám sát xemthông tin hệ thống (CPU, RAM, disk, process …) trên tất cả user Quản lý máy user: cóthể kết thúc process trên user, lấy ảnh màn hình (hoặc video theo thời gian thực – chứcnăng nâng cao), ghi phím + clipboard, logout hoặc shutdown máy user Có thể quảnlý/theo dõi một lúc nhiều user (nhiều máy tính), tự động lấy quyền điều khiển khi userbật ứng dụng client
Trang 11Building a System Monitoring and Analysis Application 9
Muốn xây dựng ứng dụng thực tế và bảo mật:Việc theo dõi và quản lý hệ thống
có thể có ứng dụng trong nhiều tình huống thực tế như quản lý máy tính trong môitrường doanh nghiệp, hỗ trợ kỹ thuật từ xa, hoặc theo dõi hoạt động hệ thống để pháthiện sự cố Tuy nhiên, cũng cần chú ý đến vấn đề bảo mật và sự đồng thuận của ngườidùng
Muốn xây dựng ứng dụng tích hợp môi trường mạng: Để quản lý nhiều máytính, cần phải xem xét cách tích hợp với môi trường mạng Điều này mang lại cơ hội đểtìm hiểu về các khái niệm như socket programming và các giao thức mạng
1.5 Tổng Quan
Với những nội dung trên nhóm bước đầu đã tạo ra được ứng dụng có các phầnsau:
Về phía Client:
+ Xem thông tin về máy tính
+ Xem trạng thái máy tính như là thời gian hoạt động, trạng thái mạng, trạngthái bộ nhớ RAM và CPU
+ Xem các tiến trình đang hoạt động trên hệ thống
Về phía Server:
+ Cho phép nhiều client kết nối và hoạt động song song
+ Xem thông tin về máy tính của máy Client
+ Xem trạng thái máy tính như là thời gian hoạt động, trạng thái mạng, trạngthái bộ nhớ RAM và CPU của máy Client
+ Xem các tiến trình đang hoạt động trên hệ thống của máy Client
+ Chụp ảnh màn hình máy Client
+ Gửi file tới máy Client
Khoa khoa học máy tính Nhóm 1
Trang 12+ Theo dõi bàn phím của máy Client
Trang 13Building a System Monitoring and Analysis Application 11
2.1 Sơ Lược Về Lập Trình Hệ Thống
2.1.1 Khái niệm lập trình hệ thống
Môn học lập trình hệ thống là một phần quan trọng của chương trình học ngànhcông nghệ thông tin và liên quan chặt chẽ đến việc phát triển và quản lý các hệ thốngphần mềm phức tạp
Lập trình hệ thống là công việc viết những phần mềm cho hệ thống ( máy tính).Điểm khác biệt chủ yếu của lập trình hệ thống đối với lập trình ứng dụng là lậptrình ứng dụng nhằm viết những phần mềm phục vụ cho người dùng máy tính ( ví dụ:chương trình xử lý văn bản), trong khi đó, lập trình hệ thống nhằm xây dựng nhữngphần mềm phục vụ cho phần cứng (hệ thống) máy tính (ví dụ: chương trình chốngphân mảnh đĩa cứng) Nó cũng đòi hỏi phải có những hiểu biết sâu hơn về phần cứngmáy tính
Hệ thống ở đây có thể là một máy chủ, một mạng, một hệ thống nhúng hoặc một
hệ thống phân tán lớn Lập trình hệ thống liên quan đến việc xây dựng và quản lý cảphần cứng và phần mềm của hệ thống này
Ngôn ngữ lập trình: Lập trình hệ thống thường được thực hiện bằng các ngônngữ lập trình như C, C++, Python Những ngôn ngữ này cung cấp sức mạnh và kiểmsoát cao cho các lập trình viên khi họ xây dựng ứng dụng và dịch vụ hệ thống.Lập trình hệ thống đóng vai trò quan trọng trong việc đào tạo những chuyên giatrong lĩnh vực công nghệ thông tin, giúp họ có kiến thức và kỹ năng cần thiết để xâydựng, quản lý và bảo vệ các hệ thống máy tính phức tạp trong thế thới kỹ thuật ngàynay
2.1.2 Đặc điểm lập trình hệ thống
Những điểm đặc biệt hơn trong lập trình hệ thống:
+ Những nhà lập trình sẽ tạo những gánh vác về phần cứng và một số thuộc tínhkhác của những chương trình chạy trên hệ thống đó, và sẽ thường khai thác nhữngthuộc tính đó (cho ví dụ bởi việc sử dụng một giải thuật mà được biết mà hiệu quả khinào được sử dụng với phần cứng đặc biệt)
Khoa khoa học máy tính Nhóm 1
Trang 14+ Thông thường một ngôn ngữ lập trình cấp thấp hoặc tiếng địa phương ngônngữ lập trình sử dụng đó là:
- Có thể hoạt động trong những môi trường tài nguyên bắt buộc
- Là rất hiệu quả và có thể thực hiện một ít ở trên đầu
- Có một thư viện thực hiện nhỏ, hoặc không ở mọi thứ
- Cho phép trực tiếp và “thô” mà điều khiển qua truy cập bộ nhớ và điềukhiển chảy tràn
- Để cho người lập trình viết những phần của chương trình ngay tức khắctrên ngôn ngữ assembly
- Những nhà lập trình hệ thống một cách đầy đủ thì khác với lập trình ứngdụng mà những người lập trình hướng tới chuyên về một hoặc cái khác
- Trong lập trình hệ thống, những phương tiện lập trình có hạn thường sẵn
có Sự sử dụng của tập hợp rác tự động thì không phải là phổ biến và gỡ rối
là không đổi đôi khi để làm Thư viện thực hiện, nếu sẵn có ở mọi nơi, thì
ít mạnh hơn nhiều thông thường, và làm ít sợ kiểm tra lỗi hơn Bởi vìnhững sự hạn chế đó, màn hình và sự đăng ký thường được sử dụng;những hệ điều hành có thể có vô cùng chi tiết hóa những hệ thống conđăng ký
- Thực hiện những phần nhất định trong Hệ điều hành và những quy địnhhoạt động mạng những nhà lập trình hệ thống (cho ví dụ thi hành phântrang (bộ nhớ ảo) hoặc một trình điều khiển thiết bị cho một hệ điều hành)
Trang 15Building a System Monitoring and Analysis Application 13
Kỹ thuật Tiến trình và Luồng: Học cách tạo và quản lý các tiến trình vàluồng làm việc trên hệ thống Điều này bao gồm việc sử dụng thư viện vàAPI để đồng bộ hóa và tương tác giữa các tiến trình và luồng
Kỹ thuật Giao tiếp Mạng: Lập trình hệ thống thường liên quan đến giao tiếpqua mạng Sinh viên học cách sử dụng giao thức mạng như TCP/IP và UDP
để tạo và quản lý kết nối mạng
Kỹ thuật Lập trình hệ thống: Đây là khía cạnh cốt lõi của môn học, bao gồmviệc viết mã để phát triển ứng dụng hệ thống Sinh viên học cách làm việcvới ngôn ngữ lập trình như C, C++, và Python để xây dựng các ứng dụng hệthống đáng tin cậy và hiệu quả
Kỹ thuật Hệ điều hành: Học về cách làm việc với hệ điều hành và sử dụngcác API hệ thống để quản lý tệp tin, tiến trình và tài nguyên hệ thống
Kỹ thuật Bảo mật Hệ thống: Quản lý an ninh hệ thống là một phần quantrọng của lập trình hệ thống Sinh viên học cách bảo vệ hệ thống khỏi cácmối đe dọa và tấn công mạng bằng cách triển khai các biện pháp bảo mậtnhư xác thực, ủy quyền và mã hóa dữ liệu
Kỹ thuật Hiệu suất và Tối ưu hóa: Sinh viên học cách tối ưu hóa mã nguồn
và cấu hình hệ thống để đảm bảo hiệu suất tốt nhất Điều này liên quan đến
sử dụng công cụ hiệu suất và phân tích chức năng của hệ thống
Kỹ thuật Gỡ lỗi và Sửa lỗi (Debugging and Error Handling): Học cách xử lýlỗi và gỡ lỗi trong các ứng dụng và hệ thống để đảm bảo tính ổn định và tincậy của chúng
Các kỹ thuật này cung cấp nền tảng cho việc phát triển và quản lý các hệthống máy tính phức tạp, và chúng rất quan trọng trong lĩnh vực lập trình hệthống, làm cơ sở cho việc phát triển và duy trì các hệ thống máy tính phứctạp và yêu cầu kiến thức chuyên sâu và kỹ năng thực hành
2.2 Tổng Quan Về Công Nghệ Chính
Khoa khoa học máy tính Nhóm 1
Trang 162.2.1 Tổng quan về VMware Workstation Pro
VMware Workstation là một phần mềm giả lập hệ điều hành rất nổi tiếng củahãng VMware Inc Workstation – là công ty đại chúng niêm yết tại Sở giao dịch chứngkhoán New York dưới mã VMW Dell Technologies hiện là cổ công lớn nhất với tỷ lệ
sở hữu 82,8% VMware cung cấp phần mềm và dịch vụ điện toán đám mây và ảo hóa.VMWare là công ty đầu tiên thực hiện ảo hóa kiến trúc x86.cung cấp giải pháp ảo hóamáy tính để bàn được thiết kế cho mọi người sử dụng Windows
VMware Workstation có thể thay đổi đáng kể cách thức làm việc với các máy
ảo và cực kì hữu ích với các nhà phát triển
Tính năng chính của VMware Workstation Pro:
Hỗ trợ Win 10: chỉ với vài bước đơn giản, bạn có thể dễ dàng cài đặtWindows 10 trên máy ảo từ đĩa hoặc file ISo bằng Workstation VirtualMachines Wizard Với phần mềm này, người dùng dễ dàng sử dụng các tínhnăng mới như trợ lý ảo Cortana, bút ảo trên trình duyệt Edge hoặc thậm chí làbắt đầu xây dựng các ứng dụng Universal Apps cho thiết bị Windows 10
Sandboxed Graphics Rendering Engine: workstation cung cấp một tính năngnâng cao bảo mật mới: Sandbox Renderer SBR chạy công cụ đồ họa ảo trongcác thread riêng biệt với ít đặc quyền hệ thống, giúp Fusion và Workstation
an toàn hơn khi sử dụng mà không làm giảm hiệu suất hoặc chất lượng
Phần cứng: phần mềm giúp bạn tận dụng các máy tính bảng Intel mới nhấtbằng cảm biến máy tính bảng ảo Workstation Sử dụng máy tính bảng
Hình 2.1 Giới Thiệu Về Máy Ảo
Trang 17Building a System Monitoring and Analysis Application 15
Microsoft Surface với bộ gia tốc, con quay hồi chuyển, la bàn và cảm biếnánh sáng ảo để ứng dụng có thể chạy trên máy ảo mà vẫn phản hồi lại cáctương tác khi di chuyển, xoay hay rung, lắc máy tính bảng.VMwareWorkstation 16 Pro còn hỗ trợ các vi xử lý x86 64-bit mới nhất củaIntel, bao gồm cả Broadwall và Haswell để mang lại khả năng hoạt động tốtnhất
Chế độ Dark UI: khi khởi động Workstation 16 cho Windows, điều đầu tiên
mà bạn có thể nhận thấy là chúng tôi đã thêm một tính năng Chế độ tối hoàntoàn mới vào Giao diện người dùng của Workstation Pro và Player Giao diệnmới nổi bật này mang lại cảm giác như đang ở nhà trên các phiên bản mớinhất của Windows 10
Máy ảo mạnh mẽ: ứng dụng đồ họa cao được hỗ trợ tốt hơn với Video Ramlên tới 2GB Với VMwareWorkstation 16 Pro, người dùng có thể tạo máy ảocực mạnh, lên tới 16 vCPUs, ổ đĩa ảo 8TB và bộ nhớ 64GB để có thể chạycác phần mềm hay ứng dụng máy chủ yêu cầu cao nhất trong môi trường ảo
Khả năng kết nối: hỗ trợ HD Audio với hệ thống âm thanh 7.1, cổng USB 3.0
và thiết bị Bluetootk, giúp bạn dễ dàng kết nối webcam, headset hay máy invới máy ảo Workstation 16 Pro giờ hỗ trợ USB 3.0 trong Windows 7 bêncạnh Windows 8 để mang tới khả năng chia sẻ file siêu nhanh với các thiết bịlưu trữ ngoài Ngoài ra, phần mềm cũng cải thiện khả năng hoạt động với cáccuộc gọi Skype – Phần mềm máy tính trò chuyện và nhắn tin hay Lync trongmáy ảo, mang tới chất lượng cuộc gọi tốt nhất
Màn hình độ phân giải cao: với phiên bản Vmware Workstation 16 Pro đượctối ưu hóa để hỗ trợ hiển thị 4K HUD (3850×2160) trên Desktop và QHD+(3200×1800) trên laptop và máy tính bảng x86 mang tới trải nghiệm sử dụngcực kì chi tiết Phần mềm cũng hỗ trợ hiển thị nhiều màn hình với các lựachọn thiết lập DPI khác nhau để bạn có thể chạy màn hình 4K HD mới cùngvới àn hình HD 1080p trước đây
DirectX 11 và OpenGL 4.1: workstation 16 sẽ hỗ trợ chạy các trò chơi và ứngdụng với Direct3D phiên bản 11, còn được gọi là ‘DirectX 11’ hoặc OpenGL
Khoa khoa học máy tính Nhóm 1