Anonymous gửi vào
Trang này sẽ giúp bạn tạo ra một tính năng kiểm tra healthcheck. Sau đó bạn có thể đề nghị tính năng kiểm tra mới của bạn được đưa vào OBM distribution (được hỗ trợ bởi Core Team) hoặc trong phần đóng góp.
Nguyên tắc chung của hệ thống HealthCheck
=================================
Hệ thống HealthCheck bao gồm một API REST và một web front end. Việc kiểm tra được thực hiện trên máy chủ OBM-ui (trong trường hợp của một cơ sở hạ tầng phân phối).
Các thành phần của hệ thống HealthCheck
=============================
Hệ thống HealthCheck OBM là một tập hợp các module. Mỗi module có chứa một **id** (phải là duy nhất trong số tất cả các module), một **tên** (có thể đọc được), một **mô tả** (có thể đọc được !), và một tùy chọn **url** (chi tiết bên dưới).
Mỗi module có chứa một số tính năng kiểm tra cá nhân. Ví dụ, một module "cấu hình PHP" có thể có một tính năng kiểm tra phiên bản PHP, kiểm tra cho PHP magic_quote setting, vv ...
Bố cục hệ thống healthcheck
========================
Hệ thống healthcheck nằm trong /usr/share/obm/www/php/healthcheck trên Debian, /usr/share/obm/php/healthcheck trên RedHat. Phần máy chủ (phần thú vị ở ngay đây) nằm trong thư mục **backend**. Dưới đây là các tập tin và thư mục đáng chú ý bên trong:
- **backend/checks**
trong thư mục này, có một thư mục cho một Module.
- **backend/checks/[module id]**
Thư mục này chứa tất cả các công cụ kiểm tra liên quan đến module **[module id]**:
- **backend/checks/[module id]/Module.php**
Tập tin PHP có chứa các định nghĩa module cho [module id]. Định nghĩa là một lớp cài đặt _ModuleInterface_ interface.
Việc triển khai cần xác định các thuộc tính công khai sau đây:
* id
* tên
* mô tả
* url
Khi lớp này đang cài đặt _ModuleInterface_, nên cài theo phương thức _isEnabled_. Phương thức này trả về _TRUE_ trong hầu hết các trường hợp nhưng có cho phép hệ thống vô hiệu hóa toàn bộ một module, dựa trên một số quy tắc thương mại hoặc điều kiện môi trường.
Hệ thống sẽ đến thư mục **backend/checks** , tìm tất cả các file _Module.php_ và xây dựng danh sách các các module được kích hoạt tự động.
- **backend/checks/[module id]/checks.json**
JSON liệt kê tất cả các kiểm tra có sẵn cho [module id]
- **backend/checks/[module id]/[check id].php**
Việc cài đặt PHP kiểm tra [check id] của module [module id].
Cấu tạo của một tính năng kiểm tra healthcheck
=========================
Một kiểm tra healthcheck thuộc về một Module. Nó bao gồm hai phần:
1. định nghĩa tính năng kiểm tra trong JSON
2. cài đặt tính năng kiểm tra trong PHP
Định nghĩa tính năng kiểm tra
-----------------------------
Một định nghĩa tính năng kiểm tra nên chứa các khoá sau:
Từ khóa kiểm tra | Nghĩa là gì ? | Ví dụ
---------------- | ------------------- | ---------
id | ID, phải là duy nhất trong module (nhưng không cần thiết trên các module khác nhau) | ReadabilityStatus
name | một bản tóm tắt dễ hiểu để biết kiểm tra những gì | Readability Check
description | một mô tả có thể hiểu được kiểm tra những gì | Kiểm tra các tập tin cấu hình OBM có thể đọc được trên UI server
url | một kết nối HTTP đến trang trợ giúp trong trường hợp kiểm tra này không thành công | http://obm.org/wiki/configuration-1
parentId | trong trường hợp kiểm tra phụ thuộc, cha (không cài đặt) | null
Định nghĩa kiểm tra nên được nối thêm trong **backend/checks/[module id]/checks.json** file.
Ví dụ về một checks.json:
~~~~~~~~~~~~~~~
{
"checks": [
{
"id": "ReadabilityStatus",
"name": "Readability Check",
"description": "Checks that OBM configuration files are readable on the UI server.",
"url": "http://obm.org/wiki/configuration-1",
"parentId": null
},
{
"id": "MinimalSubsetStatus",
"name": "Minimal Subset Check",
"description": "Checks that OBM configuration files contains the minimum required information.",
"url": "http://obm.org/wiki/configuration-1",
"parentId": null
}
]
}
~~~~~~~~~~~~~~~
Cài đặt tính năng kiểm tra
--------------------------------------
Việc cài đặt kiểm tra càng đơn giản càng tốt !Đó là một file PHP tên là **[check id].php**, và nằm trong thư mục **backend/checks/[module id]/**. Cần một số file require_once, tạo ra một lớp cài đặt giao diện **Check**, và trả về **CheckResult**. Đó là tất cả. Đây là một mẫu kiểm tra mà không bao giờ bị lỗi:
~~~~~~~~~
require_once dirname(__FILE__) . '/../../Check.php';
require_once dirname(__FILE__) . '/../../CheckResult.php';
require_once dirname(__FILE__) . '/../../CheckStatus.php';
class NeverFails implements Check {
/* the method that should be implemented to respect the Check interface */
function execute() {
$result = new CheckResult(CheckStatus::OK);
return $result;
}
}
~~~~~~~~~
Thật không may, đôi khi kiểm tra không thành công, và bạn muốn cho người sử dụng một số thông tin thêm để giúp anh ta giải quyết vấn đề. Đây là một ví dụ kiểm tra luôn luôn thất bại:
~~~~~~~~~
require_once dirname(__FILE__) . '/../../Check.php';
require_once dirname(__FILE__) . '/../../CheckResult.php';
require_once dirname(__FILE__) . '/../../CheckStatus.php';
class AlwaysFails implements Check {
/* the method that should be implemented to respect the Check interface */
function execute() {
$result = new CheckResult(CheckStatus::ERROR);
$result->messages = array();
$result->messages[] = "You are missing some configuration thingy for this to work.";
$result->messages[] = "You are missing some firewall rules too.";
return $result;
}
}
~~~~~~~~~
Thử nghiệm
----------
Tất cả các kiểm tra là đơn vị thử nghiệm sử dụng PHP Unit. Xem **php-tests/healthcheck** .Marcas de calçado, bolsas e vestuário na Spartoo