Ngơn ngữ lập trình python

Một phần của tài liệu Nghiên cứu giải pháp quản lý hệ thống thông tin phục vụ giáo dục qua công nghệ ảo hóa (Trang 40)

5. Ý nghĩa thực tiễn của đề tài

2.3 Ngơn ngữ lập trình python

2.3.1 Python trong xây dựng ứng dụng

Với tốc độ phát triển của Python, ngày nay trên thế giới càng có nhiều lập trình viên sử dụng ngơn ngữ này. Chính vì thế, số lượng ứng dụng được viết bằng ngơn ngữ Python hoặc có sự tham gia của các module viết bằng Python ngày càng nhiều. Python có mặt hầu hết trong các loại ứng dụng, từ các ứng dụng Desktop như Dropbox, BitTorrent, Ubuntu Software Center,... cho đến các ứng dụng Web như OpenERP, ERP5, Trac,...

Từ ngơn ngữ Python, các lập trình viên cũng tạo ra hàng loạt các Framework khác để hỗ trợ phát triển nhanh các ứng dụng ví dụ như

 Web frameworks: CheryPy, Django, Flask, Google App Engine,...  Graphic frameworks: Pygame, Panda3D, Python Imaging Library,...  UI frameworks: Kivy, PyGTK, PyQt, wxPython,...

Một điều đáng chú ý là Python được “đính kèm” vào tất các các bản phân phối Linux ngày nay và là một ngôn ngữ quan trọng được sử dụng cho việc tạo các ứng dụng chính của hệ thống Linux bên cạnh ngôn ngữ C hay C++.

Về sản phẩm của đề tài “Hệ thống theo dõi dịch vụ và hạ tầng mạng” này, Python là ngơn ngữ chính được sử dụng để tạo ra các gói phần mềm cài đặt trên các máy con (Agent). Các Agent này sẽ chạy trực tiếp trên các máy chủ Linux (CentOS, Ubuntu,...) và gửi các thông tin thu thập được về cho API server thông qua một resful webserivce đã được dự lên. API server này sử dụng Framework Flask, là một trong những Framework nổi tiếng viết bằng ngôn ngữ Python, sẽ được giới thiệu ở phần tiếp theo. Quá trình này được mơ tả theo hình sau:

Các Agent hoạt động như là các service trên hệ thống Linux bằng việc tạo ra các Process và Schedule (lịch) giúp nó có thể gửi thơng tin thu thập được theo những chu kì định trước. Xét theo đợ ưu tiên và sự cần thiết của từng thơng tin, những schedule có thể có thời gian dài hoặc ngắn khác nhau. Với cấu hình mặt định, mợt Agent sẽ có schedule như sau:

scheduler_cpu_interval = 3600 scheduler_cpuinfo_interval = 60 scheduler_memory_interval = 900 scheduler_interface_interval = 3600 scheduler_interfaceinfo_interval = 60 scheduler_listeningport_interval = 3600 scheduler_disk_interval = 3600 scheduler_process_interval = 3600 scheduler_extrainfo_interval = 3600

Các tham số trên được đặt vào tệp tin cấu hình config.ini trong thư mục gốc của ứng dụng sau khi cài đặt với đơn vị tính là giây. [8]

2.3.2 Python trong quản trị hệ thống

Trong quản trị hệ thống, python được áp dụng chủ yếu ở dạng “script language” nhằm thao tác một hoặc nhiều hành động nào đó. Bên cạnh Python cũng có rất nhiều ngơn ngữ khác ở dạng “script language” như Bash, Perl, ksh,...Tuy nhiên những ngơn ngữ này chỉ thích hợp cho những đoạn script nhỏ và ngắn. Đối với những script lớn hơn,

Agent Thu thập thông tin Thực hiện HTTP Post Web Services

dài hơn thì Python là mợt sự lựa chọn tuyệt vời bởi sự sáng sủa cũng như cách thức module hóa. Có thể nói Python ngày nay đã trở thành ngơn ngữ được ưu tiên sử dụng hàng đầu của các sysadmin bởi sự dễ dàng tiếp cận của nó. Với Python chúng ta chỉ cần dành vài giờ nghiên cứu là đã có thể viết được các script đơn giản thay vì phải dành vài ngày hay thậm chí vài tháng để học cách sử dụng các ngôn ngữ phức tạp hơn.

Chính vì những ưu điểm vượt trợi của ngơn ngữ Python, nhóm tác giả đã chọn ngơn ngữ này làm ngơn ngữ chính trong việc lập trình các thành phần backend của sản phẩm đề tài. Với số dòng code tối thiểu, nhưng vẫn hoạt động hiệu quả và cho ra kết quả chính xác, Python làm các Agent trở nên nhẹ nhàng hơn khi đưa đi cài đặt trên các hệ thống máy chủ đầu cuối. Bên cạnh đó, module của Python nhiều và đa dạng do cợng đồng phát triển rợng lớn, điều này giúp nhóm tác giả có nhiều lựa chọn hơn về giải pháp lập trình cũng như nhiều tài liệu tham khảo hơn. [9]

2.3.3 Flask framework

Như đã giới ở trên, Python đã được dùng để tạo ra rất nhiều Framework khác; và Flask là mợt trong số các Framework đó. Flask được viết bằng ngơn ngữ Python, là một Web Framework nhẹ dựa trên Werkzeug WSGI toolkit và thư viện xây dựng template Jinja2. Flask còn được gọi là mợt microframework (framework nhỏ) bởi vì thành phần core của nó được giữ ở mức đơn giản nhất có thể. Khơng có bất kỳ lớp xử lý cơ sở dữ liệu, xử lý form,...hay các thành phần khác mà đã được hỗ trợ bởi các hãng thứ ba rồi. Tuy nhiên, Flask lại hỗ trợ các thành phần mở rộng “extension”, các hàm của extension có thể được nhúng vào ứng dụng Fask một cách dễ dàng.

Một số điểm nổi bật ở Flask:

 Đã bao gồm thành phần Server và Debugger  Hỗ trợ unit testing; Hỗ trợ sử dụng cookie an toàn  Dễ dàng tạo ra các RESTful webservice

Bởi sự đơn giản và hiệu quả của Flask. Nhóm tác giả chọn đã chọn web framework này cho việc xây dựng Web API được sử dụng để tiếp nhận các http request được gửi lên từ Agent cài đặt trên các máy chủ.

Các module chính của Flask được sử dụng trong Web API của sản phẩm luận văn này bao gồm jsonify, request, make_response để xử lý các http request từ Agent, url_for để xử lý URL, HTTPBasicAuth để xác thực Agent gửi các http request,... Sau đây là mợt ví dụ trích ra từ Web API của luận văn; hàm xử lý yêu cầu lấy danh sách tất cả thiết bị tḥc về mợt user nào đó dựa vào tên đăng nhập của user.

@auth.login_required

@app.route('/user/<username>/devices', methods=['GET']) def get_device_by_user(username):

devices = sql.get_devices_by_user(username) if devices:

return jsonify({'devices' : devices}) elif devices == False:

return make_response(jsonify( { 'error': 'Username not found' } ), 404)

else:

CHƯƠNG 3 THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG GIÁM SÁT

3.1 Cấu trúc và cách thức hoạt động

3.1.1 Sơ đồ tổng quát của hệ thống

Sơ đồ tổng quát của hệ thống giám sát được mơ tả như hình dưới đây, gồm:  Đối tượng con người: System Administrator, Network Administrator,...

 Đối tượng giám sát: Router (Cisco), Switch (Cisco), Windows server, Linux server, Virtualization (VMware)

 Thành phần hệ thống: PHP Webserver, Database server, Master server, API server.

Hình 3.1 Sơ đồ tổng quát của hệ thống giám sát

Về vai trò, các thành phần trong hệ thống giám sát có chức năng chính như:

 PHP Webserver: Chạy ứng dụng website giúp người quản trị tương tác với hệ thống giám sát.

 Master Server: Hoạt động như một máy chủ giám sát các thiết bị, máy chủ khác. Master Server sẽ đảm nhiệm các kiểu giám sát như: SNMP, SSH, API.

 API Server: Hoạt động như một RESTful webservice tiếp nhận các HTTP POST và GET từ client là các Agent. API Server hoạt đợng trong mơ hình giám sát Client- Server.

Chi tiết hơn về vai trị cũng như cấu trúc hoạt đợng của các thành phần trên sẽ được đề cập trong các mục tiếp theo sau đây.

3.1.2 Admin Web Interface

Đây là thành phần hỗ trợ giao tiếp giữa người quản trị với các đối tượng được giám sát. Website sẽ giúp người quản trị thực hiện các thao tác về mặt quản lý, cũng như theo dõi thông tin cập nhật của hệ thống mình. Đồng thời đưa ra các cảnh báo khi hệ thống gặp sự cố. Cụ thể như sau:

Về mặt quản lý:

- Thêm / xóa / sửa thiết bị (đối tượng giám sát) - Quản lý nhóm thiết bị

- Quản lý sự kiện

- Quản lý các Rules / Trigger (điều kiện giám sát) - Quản lý thông tin người dùng

- Quản lý thông tin nhận thông báo trạng thái thiết bị Về mặt giám sát:

- Xem thông tin trạng thái của thiết bị được cập nhật một cách chi tiết. - Xem lịch sử của thiết bị

Website được viết bằng ngôn ngữ PHP, sử dụng framework Laravel. Giao diện website được thiết kế theo chuẩn HTML5 và CSS3 để tạo giao diện trực quan, đẹp mắt hơn. Bên cạnh đó, giao diện có tính “reponsive” (tính đáp ứng) để có thể xem được trên nhiều đợ phân giải màn hình khác nhau nhờ khả năng tùy biến và bố cục lại giao diện một cách tự động.

3.1.3 Master Server

Master server mợt trong các thành phần chính của hệ thống giám sát. Với nhiệm vụ chính là hoạt đợng như mợt máy chủ thực hiện công việc kiểm tra trạng thái cũng như thu thập thông tin của các đối tượng được theo dõi. Master server sẽ hoạt động ở chế độ “active monitoring” (giám sát chủ động) bằng việc lấy thông tin đối tượng giám sát từ cơ sở dữ liệu, sau đó sẽ thực hiện kết nối tới các đối tượng này để xử lý, thu

thập thông tin. Sơ đồ bên dưới đây mô tả về cách thức hoạt động tổng quát của mợt Master Server

Hình 3.2 Sơ đồ mơ tả hoạt đợng của mợt Master Server Có ba phương thức giám sát được áp dụng trên Master server là: Có ba phương thức giám sát được áp dụng trên Master server là:

 SNMP: Master server sẽ tiến hành lọc ra các đối tượng được giám sát bằng phương thức sử dụng giao thức SNMP từ cơ sở dữ liệu. Xác định port kết nối, chuỗi community bí mật. Sau đó sẽ sử dụng các hàm được lập trình sẵn và cơ cở dữ liệu MIB, OID của mình để thu thập thơng tin trên các Router, Switch Cisco hoặc các hệ điều hành Linux đã được cài đặt SNMP agent. Bên dưới là sơ đồ mô tả cho kiểu giám sát này.

Hình 3.3 Sơ đồ hoạt đợng của Master Server đối với kiểu giám sát bằng SNMP

 SSH: Master server sẽ tiến hành lọc ra các đối tượng được giám sát bằng phương thức sử dụng giao thức SSH từ cơ sở dữ liệu. Xác định port kết nối, thơng tin user. Sau đó sẽ sử dụng các hàm được lập trình sẵn để tiến hành thu thập thông tin trên các máy chủ Linux dựa vào chính các lệnh có sẵn trên hệ điều hành. Thao tác này được thực hiện chủ yếu nhờ vào thư viện Fabric đã đề cập ở mục 2.6.3. Bên dưới là sơ đồ mô tả hoạt động của kiểu giám sát bằng SSH.

 API: Kiểu giám sát này thực chất là Master server sẽ làm công việc gửi các yêu cầu http POST và http GET lên trên đối tượng được giám sát để thu thập thông tin. Hiện tại, Master server hỗ trợ kiểu giám sát qua API đối với các kiểu ảo hóa VMware vSphere bao gồm vCenter, ESXi dạng standalone. Các sản phẩm này đều đã hỗ trợ sẵn các API được nhà sản xuất kèm theo và cung cấp tài liệu về cách sử dụng cũng như các đối tượng nắm giữ thông tin của hệ thống. Từ đó, Master server sẽ sử dụng các hàm được lập trình sẵn, sử dụng các SDK chuyên biệt để xử lý các đối tượng này. Bên dưới là sơ đồ mô tả hoạt động của kiểu giám sát bằng API.

Hình 3.5: Sơ đồ hoạt đợng của Master Server đối với kiểu giám sát bằng API

3.1.4 API Server

API Server được sử dụng trong mơ hình giám sát dạng Client-Server. API Server sẽ đóng vai trị là mợt RESTful webservice xử lý các yêu cầu HTTP POST và GET từ các Agent được cài đặt trên các máy chủ Linux hoặc Windows. Các thơng tin chính mà API Server sẽ tiếp nhận bao gồm:

 Thơng tin về cấu hình hệ thống (CPU, bợ nhớ RAM, ổ đĩa, địa chỉ IP của các card mạng,...)

 Thông tin về tải của CPU trên máy chủ.  Thông tin về dung lượng RAM sử dụng.

 Thông tin danh dách ổ đĩa, dung lượng sử dụng của từng ổ đĩa.  Thơng tin về các tiến trình đang chạy trên máy chủ.

 Thông tin về các cổng đang được mở trên máy chủ.  Thông tin về băng thông mạng mà máy chủ sử dụng.  Các thông tin bổ sung khác...

Thông tin được gửi lên từ các Agent trên máy chủ sẽ ở dạng JSON nhằm tăng tốc độ truyền tin cũng như dễ xử lý nội dung hơn khi API Server nhận được các dữ liệu này. Quá trình truyền dữ liệu giữa Agent và API Server được thực hiện thông qua giao thức HTTP nên có thể bị tấn cơng lấy cắp thơng tin bởi kiểu tấng cơng Man-in-the- middle. Vì vậy, ở phía API Server, Webserver sẽ được cấu hình sử dụng giao thức HTTP an tồn, đó chính là giao thức HTTPS. Bên cạnh đó, để tăng khả năng bảo mật cho dữ liệu người dùng ở phía hệ thống giám sát, API Server sẽ yêu cầu Agent đăng nhập sử dụng kiểu chứng thực “Basic Authentication” trước khi thực hiện bất kì HTTP POST hay GET nào đó.

Cách thức hoạt đợng của kiểu giám sát Client-Server được thể hiện ở đây như sau. Đầu tiên, Agent được cài đặt trên các máy chủ sẽ sử dụng các hàm được lập trình sẵn bằng ngơn ngữ Python để thu thập các thông tin của máy chủ như CPU, RAM, Disk, Network,... (1) (2). Sau đó những thơng tin này sẽ được chuyển sang dạng JSON (3) và được Agent thực hiện yêu cầu HTTP POST để đưa lên trên API Server (4). Sau đó, API Server sẽ xác nhận thơng tin và ghi vào CSDL của thiết bị tương tứng (5). Bên dưới đây là mơ hình miêu tả cách thức hoạt đợng khi mợt Agent tương tác với API Server

Hình 3.6 Sơ đồ quá trình tương tác giữa Agent và API Server

Vì API Server hoạt đợng như một RESTful webservice, với yêu cầu là đơn giản nhưng đáp ứng đủ các yêu cầu cơ bản bên trên. Nhóm tác giả chọn Flask là giải pháp cho việc lập trình API Server này. Flask là mợt Web framework được viết bằng ngôn ngữ Python với ưu điều nhỏ nhẹ và chức năng hiệu quả. Chi tiết về Flask web framework đã được đề cập ở mục 3.2.4.

3.1.5 Agent

Agent là mợt phần trong mơ hình giám sát theo phương thức “Agent” sử dụng mơ hình Client-Server. Nếu như API Server đóng vai trong như mợt RESTful webservice đã được đề cập ở mục bên trên thì Agent đóng vai trị là mợt ứng dụng chạy thường trực trên máy chủ. Các Agent này sẽ thực hiện công việc thu thập thông tin tài nguyên của máy chủ như CPU, RAM, Disk, Network,...sau đó gửi các thơng tin này lên API Server thông qua giao thức HTTPS. Chi tiết về quá trình giao tiếp giữa Agent và API Server đã được đề cập ở mục 4.2.1.4 API Server bên trên.

Một Agent có thể được cài đặt lên nhiều thiết bị máy chủ khác nhau nên cần có cơ chế để quản lý và phân loại các Agent cũng như các thiết bị máy chủ này. Ở đây, nhóm tác giả đã chọn giải pháp quản lý theo các UUID. Mỗi thiết thiết bị khi được người quản trị thêm mới bằng cách sử dụng giao diện website thì sẽ có mợt UUID đại diện cho thiết bị đó. Mợt UUID là duy nhất trong hệ thống CSDL, đảm bảo không trùng khớp với các UUID của các thiết bị khác. Và sau khi đã cài đặt Agent lên máy chủ, người quản trị sẽ tiến hành đưa thông số UUID này vào tệp tin cấu hình của Agent. Từ đó, mỗi khi Agent thu thập thơng và truyền cho API Server thì API Server có thể phân biệt được thơng tin thuộc này thuộc về thiết bị máy chủ nào.

Vì Agent là mợt ứng dụng chạy thường trực trên hệ thống và xử lý các công việc theo những chu kì định trước, do vậy cần có các cách thức lập trình để giúp ứng dụng có thể thực hiện các lịch (schedule) và có khả năng thực hiện đa tiến trình (mutil threading). Để đáp ứng những yêu cầu này, nhóm tác giả đã chọn ngơn ngữ Python để lập trình cho Agent hoạt đợng trên các hệ điều hành Linux và ngôn ngữ C# cho Agent hoạt động trên các hệ điều hành Windows.

3.1.6 Cách thức quản lý và theo dõi các đối tượng mạng

Về mặt quản lý, các đối tượng mạng sẽ được người quản trị thêm vào danh sách theo dõi nhờ giao diện website. Ở đó, sẽ phân loại sẵn các loai thiết bị được hỗ trợ giám sát gồm:

 Hệ điều hành: Windows, Linux

 Phần cứng: Router Cisco, Switch Cisco  Ảo hóa: VMware ESXi, VMware vCenter

Các đối tượng giám sát sau khi được thêm mới sẽ được lưu xuống cơ sở dữ liệu theo từng nhóm nhất định kèm theo đó là mợt UUID đại diện cho nó. Tùy theo phương thức theo dõi khác nhau mà thông tin được yêu cầu cung cấp cũng khác nhau. Cụ thể

Một phần của tài liệu Nghiên cứu giải pháp quản lý hệ thống thông tin phục vụ giáo dục qua công nghệ ảo hóa (Trang 40)

Tải bản đầy đủ (PDF)

(93 trang)