Thứ ba, 16/06/2015 | 00:00 GMT+7

Cách phát hiện bất thường với Skyline trên CentOS 7

Nếu bạn sử dụng hệ thống giám sát (như Zabbix hoặc Nagios) thì bạn biết cách giám sát hoạt động. Tóm lại, nó có thể được mô tả như sau: Một hệ thống giám sát nhận được nhiều số liệu khác nhau (sử dụng CPU / bộ nhớ, sử dụng mạng, v.v.). Ngay sau khi giá trị của một trong các chỉ số vượt ra ngoài ngưỡng được định nghĩa , nó sẽ kích hoạt trình kích hoạt tương ứng và hệ thống giám sát thông báo cho bạn rằng một trong các chỉ số nằm ngoài giới hạn bình thường. Các ngưỡng cho mỗi chỉ số thường được đặt theo cách thủ công, điều này không phải lúc nào cũng thuận tiện.

Trong hướng dẫn này, bạn sẽ học cách cài đặt và cấu hình Skyline - một hệ thống phát hiện bất thường trong thời gian thực. Nó có thể phân tích một tập hợp các chỉ số trong thời gian thực mà không cần đặt hoặc điều chỉnh các ngưỡng cho từng chỉ số. Nó được thiết kế để sử dụng ở bất cứ nơi nào có số lượng lớn chuỗi thời gian (hàng trăm nghìn) cần theo dõi liên tục.

Trình kích hoạt ngưỡng

Hãy xem một ví dụ về hệ thống giám sát với các ngưỡng được đặt thủ công. Hình dưới đây cho thấy một biểu đồ cho tải CPU. Các đường đứt nét biểu thị các ngưỡng của trình kích hoạt.

Hình 1
Hình 1

Tại điểm 1 trong Hình 1, một quá trình đã bắt đầu và tải CPU đã tăng lên đáng kể. Trình kích hoạt đã được kích hoạt và administrator nhận thấy nó. Administrator quyết định rằng nó nằm trong các giá trị bình thường và thay đổi các ngưỡng kích hoạt thành các ngưỡng được hiển thị dưới dạng các đường gạch ngang phía trên.

Sau một thời gian trôi qua, trình chạy lại được kích hoạt tại điểm 2 trong Hình 1. Người quản trị phát hiện ra rằng dịch vụ thứ hai thường xuyên tạo bản backup và gây ra tăng tải. Sau đó, câu hỏi đặt ra: Bạn có nâng ngưỡng cao hơn hay để nguyên như vậy nhưng chỉ phớt lờ các báo động?

Hãy xem xét điểm 3. Tại thời điểm đó, tải sự kiện giảm xuống, nhưng administrator không được thông báo vì chưa vượt quá ngưỡng. Trình kích hoạt không kích hoạt.

Trường hợp đơn giản này cho ta thấy rằng có một số khó khăn khi đặt ngưỡng. Thật khó để điều chỉnh các giá trị ngưỡng để nắm bắt các vấn đề về hiệu suất mà không gây ra lỗi dương tính giả hoặc lỗi âm tính giả.

Để giúp giải quyết những vấn đề này, Skyline đã được tạo ra. Nó sử dụng một tập hợp các thuật toán phi tham số để phân loại các chỉ số bất thường.

Thành phần Skyline

Skyline bao gồm các thành phần sau: Horizon Agent, Analyzer Agent và Webapp.

Đại lý Horizon

Đặc vụ Horizon chịu trách nhiệm thu thập dữ liệu. Nó có Trình nghe , lắng nghe dữ liệu đến.

Nó chấp nhận dữ liệu ở hai định dạng: pickle (TCP) và MessagePack (UDP). Nó đọc các số liệu đến và đặt chúng vào một hàng đợi được chia sẻ mà Người lao động đọc từ đó. Nhân viên mã hóa dữ liệu thành Messagepack và nối nó vào database Redis. Horizon Agent cũng thường xuyên cắt và làm sạch các chỉ số cũ bằng Roombas . Nếu điều này không được thực hiện, thì tất cả bộ nhớ trống sẽ sớm cạn kiệt.

Đại lý phân tích

Tác nhân phân tích chịu trách nhiệm phân tích dữ liệu. Nó nhận danh sách các chỉ số từ Redis, chạy một số quy trình và chỉ định các chỉ số cho từng quy trình đó.Mỗi quy trình phân tích dữ liệu bằng cách sử dụng một số thuật toán. Mỗi thuật toán báo cáo kết quả - cho dù dữ liệu có bất thường hay không. Nếu phần lớn các thuật toán báo cáo rằng số liệu hiện tại có bất thường, dữ liệu được coi là bất thường .

Tất cả các số liệu bất thường được ghi vào một file . Trên cơ sở file này, một hình ảnh được tạo và hiển thị trong ứng dụng web.

Trình phân tích cũng có thể gửi thông báo: email, HipChat hoặc PagerDuty. Thông báo qua email được cấu hình sau trong bài viết này.

Ứng dụng web

Skyline cung cấp một ứng dụng web nhỏ để hiển thị các số liệu bất thường. Đó là một ứng dụng web đơn giản được viết bằng Python với khung công tác Flask. Phần trên hiển thị hai biểu đồ - giờ trước và ngày qua. Dưới biểu đồ là danh sách tất cả các chỉ số bất thường.

Database Redis

Redis là một database lưu trữ và lưu trữ key-value open-souce .

Skyline lưu trữ tất cả các chỉ số và chuỗi thời gian được mã hóa trong database Redis. Khi một điểm dữ liệu đến, một nhân viên Horizon đóng gói điểm dữ liệu với schemas [timestamp, value] thành một chuỗi binary được mã hóa MessagePack và nối chuỗi này vào khóa số liệu thích hợp.

Hình 2 cho thấy sơ đồ tương tác của các thành phần của Skyline.

Hình 2
Hình 2

Yêu cầu

Trước khi có thể cài đặt Skyline, bạn cần hoàn thành các yêu cầu sau:

Bước 1 - Cài đặt Skyline và Redis

Để cài đặt Skyline, trước tiên hãy cài đặt các ứng dụng cần thiết bao gồm một số công cụ liên quan đến Python và web server Apache:

  • sudo yum install httpd gcc gcc-c++ git pycairo mod_wsgi python-pip python-devel blas-devel lapack-devel libffi-devel

Nhận các file nguồn mới nhất cho Skyline từ GitHub:

  • cd /opt
  • sudo git clone https://github.com/etsy/skyline.git

Cài đặt một số gói Python bắt buộc:

  • cd /opt/skyline
  • sudo pip install -U six
  • sudo pip install -r requirements.txt

Cài đặt các gói Python sau theo thứ tự được chỉ định này:

  • sudo pip install numpy
  • sudo pip install scipy
  • sudo pip install pandas
  • sudo pip install patsy
  • sudo pip install statsmodels
  • sudo pip install msgpack-python

Quá trình cài đặt một số gói có thể mất nhiều thời gian, vì vậy hãy kiên nhẫn.

Hầu hết chúng là các thư viện Python open-souce được sử dụng cho tính toán khoa học và kỹ thuật. Gói msgpack-python cần thiết để đọc và ghi dữ liệu MessagePack .

Sao chép file cài đặt Đường chân trời mẫu vào đúng vị trí file :

  • sudo cp /opt/skyline/src/settings.py.example /opt/skyline/src/settings.py

Tạo các folder sau:

  • sudo mkdir /var/log/skyline
  • sudo mkdir /var/run/skyline
  • sudo mkdir /var/log/redis
  • sudo mkdir /var/dump/

Như ta đã đề cập ở trên, Skyline lưu trữ tất cả các số liệu trong database Redis, vì vậy bạn cũng cần cài đặt nó:

  • sudo yum install redis

Bạn có thể tìm thêm thông tin về Redis từ hướng dẫn Cách cài đặt và sử dụng Redis .

Bắt đầu các dịch vụ Skyline và Redis:

  • cd /opt/skyline/bin
  • sudo redis-server redis.conf
  • sudo ./horizon.d start
  • sudo ./analyzer.d start
  • sudo ./webapp.d start

Để kiểm tra cài đặt, hãy chạy tập lệnh kiểm tra bao gồm:

  • python /opt/skyline/utils/seed_data.py

Bạn sẽ thấy kết quả sau:

  • Loading data over UDP via Horizon...
  • Connecting to Redis...
  • Congratulations! The data made it in. The Horizon pipeline seems to be working.

Quá trình cài đặt và cấu hình cơ bản của Skyline đã hoàn tất. Đến đây bạn cần gửi dữ liệu vào đó.

Bước 2 - Đưa dữ liệu vào Skyline

Như đã đề cập trước đó, Skyline chấp nhận dữ liệu ở hai định dạng: pickle (TCP) và MessagePack (UDP).

Bạn có thể viết tập lệnh hoặc module của riêng mình cho đại lý giám sát yêu thích của bạn và yêu cầu nó mã hóa dữ liệu bằng MessagePack để gửi đến Skyline để phân tích. Skyline chấp nhận các chỉ số ở dạng chuỗi được mã hóa MessagePack qua UDP. MessagePack là một đặc tả tuần tự hóa đối tượng giống như JSON. Định dạng là [<metric name>, [<timestamp>, <value>]] . MessagePack có một API cho hầu hết các ngôn ngữ lập trình. Bạn có thể tìm thêm thông tin và ví dụ về API trên trang web chính thức của MessagePack .

Hướng dẫn này sẽ chỉ cho bạn cách gửi dữ liệu từ Graphite và collectd tới Skyline.

Lấy dữ liệu từ Graphite

Graphite bao gồm một số thành phần, một trong số đó là dịch vụ chuyển tiếp carbon . Carbon-relay chuyển tiếp các số liệu đến đến một version Graphite khác để dự phòng. Vì vậy, bạn có thể trỏ dịch vụ chuyển tiếp carbon tới server nơi Skyline đang chạy.

Hình 3
Hình 3

Hình 3 cho thấy một sơ đồ của stream dữ liệu. Dữ liệu từ các đại lý bên ngoài giám sát ( collectd , kim cương , statsd vv) hoặc hệ thống ( Nagios , Icinga , sensu vv) được chuyển vào Graphite. Tiếp theo, carbon-relay chuyển tiếp dữ liệu vào Skyline. Carbon-relay, carbon-cache và Skyline có thể chạy trên một server duy nhất hoặc trên các server riêng biệt.

Bạn cần cấu hình Graphite, collectd và Skyline để stream dữ liệu này hoạt động.

Nếu bạn không sao chép ví dụ relay-rules.conf vào vị trí thích hợp cho file cấu hình carbon-relay trước đó, bạn phải thực hiện ngay bây giờ:

  • sudo cp /opt/graphite/conf/relay-rules.conf.example /opt/graphite/conf/relay-rules.conf

Hãy mở file cấu hình relay-rules.conf để chỉnh sửa:

  • sudo vi /opt/graphite/conf/relay-rules.conf

Thêm server Skyline của bạn vào danh sách các điểm đến, trong đó SKYLINE HOST của BẠN là địa chỉ IP của server Skyline của bạn:

/opt/graphite/conf/relay-rules.conf
[default] default = true destinations = 127.0.0.1:2004, YOUR_SKYLINE_HOST:2024 

Tất cả các đích được sử dụng trong relay-rules.conf cũng phải được xác định trong file cấu hình carbon.conf .

Mở file cấu hình carbon.conf để thực hiện thay đổi này:

  • sudo vi /opt/graphite/conf/carbon.conf

Sau đó tìm phần [relay] và chỉnh sửa dòng DESTINATIONS :

/opt/graphite/conf/carbon.conf
[relay] ... DESTINATIONS = 127.0.0.1:2004, YOUR_SKYLINE_HOST:2024 ... 

Khi bạn đã thực hiện những thay đổi này, hãy bắt đầu dịch vụ tiếp khí carbon:

  • sudo systemctl start carbon-relay

Cho phép đường chân trời truy cập vào Graphite-Web

Trong Cách lưu giữ log lịch sử hiệu quả với Graphite, Carbon và collectd trên CentOS 7 , nếu bạn chọn bảo vệ bằng password cho giao diện web Graphite, bạn phải cho phép truy cập từ localhost mà không cần password để Skyline hoạt động.

Để làm như vậy, hãy chỉnh sửa file cấu hình Graphite:

  • sudo vi /etc/httpd/conf.d/graphite.conf

Thêm các dòng màu đỏ sau vào khối <Location> :

/etc/httpd/conf.d/graphite.conf
<Location "/">    AuthType Basic   AuthName "Private Area"    AuthUserFile /opt/graphite/secure/.passwd   Require user sammy     Order Deny,Allow     Deny from all     Allow from localhost     Satisfy Any </Location> 

Sau đó khởi động lại dịch vụ Apache:

  • sudo systemctl restart httpd

Lấy dữ liệu từ Collectd

Bạn cũng có thể cấu hình collectd để gửi dữ liệu đến Skyline. Mở file cấu hình của nó:

  • sudo vi /etc/collectd.conf

Thay đổi số cổng trong khối <Plugin write_graphite> thành 2013 :

/etc/collectd.conf
<Plugin write_graphite>     . . .            Port "2013"     . . . 

Sau đó khởi động lại sưu tập:

  • sudo systemctl restart collectd.service

Để tránh nhầm lẫn, Hình 4 cho thấy một sơ đồ đơn giản với các số cổng chính xác.

hinh 4
hinh 4

Số cổng chính xác như sau:

  1. Carbon-relay lắng nghe dữ liệu đến ở định dạng bản rõ trên cổng 2013
  2. Carbon-relay gửi dữ liệu ở định dạng dưa
  3. Bộ nhớ đệm carbon lắng nghe dữ liệu đến ở định dạng pickle trên cổng 2004
  4. Nhân viên Horizon lắng nghe dữ liệu đến ở định dạng pickle trên cổng 2024

Chú ý! Nếu bạn khởi động tác nhân Horizon và bộ tổng hợp carbon tùy chọn trên cùng một server , bạn phải thay đổi các cổng của chúng. Theo mặc định, cả hai đều được đặt thành cùng một cổng 2024 .

Bước 3 - Cài đặt Đường chân trời

Tệp cấu hình Skyline chứa nhiều cài đặt. Mở file để chỉnh sửa:

  • sudo vi /opt/skyline/src/settings.py

Mỗi cài đặt trong file này được ghi lại thông qua các comment thông tin trong chính file . Tối thiểu, bạn cần đặt các thông số sau, thay thế văn bản màu đỏ bằng các giá trị của bạn:

  • GRAPHITE_HOST = ' YOUR_GRAPHITE_HOST '
  • HORIZON_IP = ' 0.0.0.0 '
  • WEBAPP_IP = ' YOUR_SKYLINE_HOST_IP '

Các tùy chọn khác có thể được để giá trị mặc định của chúng. Chúng như sau:

  • FULL_DURATION - Tùy chọn này chỉ định khoảng thời gian tối đa mà dữ liệu sẽ được lưu trữ trong Redis và phân tích. Thời lượng lâu hơn sẽ mất nhiều thời gian hơn để phân tích, nhưng chúng có thể giúp giảm nhiễu và cung cấp khả năng phát hiện bất thường chính xác hơn. Giá trị mặc định là 86400 giây.
  • CARBON_PORT - Tùy chọn này chỉ định cổng carbon. Giá trị mặc định là 2003 .
  • ANALYZER_PROCESSES - Tùy chọn này chỉ định số lượng quá trình mà trình phân tích Skyline sẽ tạo ra. Bạn nên đặt tham số này nhỏ hơn một vài so với tổng số CPU trên server của bạn. Giá trị mặc định là 5 .
  • WORKER_PROCESSES - Tùy chọn này chỉ định số lượng quy trình công nhân sẽ sử dụng từ hàng đợi Horizon. Giá trị mặc định là 2 .
  • PICKLE_PORT - Tùy chọn này chỉ định cổng TCP lắng nghe dưa chua của Graphite. Giá trị mặc định là 2024 .
  • UDP_PORT - Tùy chọn này chỉ định cổng UDP lắng nghe các gói được mã hóa MessagePack. Giá trị mặc định là 2025 .
  • WEBAPP_PORT - Tùy chọn này chỉ định cổng cho ứng dụng web Skyline. Giá trị mặc định là 1500 .

Sau khi thực hiện những thay đổi này, bạn phải khởi động lại ứng dụng tương ứng:

  • sudo /opt/skyline/bin/horizon.d restart
  • sudo /opt/skyline/bin/analyzer.d restart
  • sudo /opt/skyline/bin/webapp.d restart

Sau đó, bạn có thể mở liên kết http:// your_server_ip :1500 và xem trang web Skyline (Hình 5). Nó sẽ hiển thị số liệu bất thường khi chúng được tìm thấy.

Hình 5
Hình 5

Để Skyline hoạt động hết công suất, bạn cần đợi cho đến khi FULL_DURATION giây trôi qua. Theo mặc định, FULL_DURATION được đặt thành 1 ngày ( 86400 giây).

Bạn nên đợi ít nhất một giờ để bắt đầu theo dõi các điểm bất thường. Điều này sẽ cho Skyline thời gian để tích lũy thông tin về các mức tải bình thường. Cố gắng không tạo thêm tải cho hệ thống trong khi Skyline đang cài đặt đường cơ sở.

Bước 4 - Bật thông báo qua email

Theo mặc định, Skyline hiển thị các điểm bất thường được phát hiện trong giao diện web của nó ( http:// your_server_ip :1500 ) khi chúng được tìm thấy và trong khi chúng vẫn đang xảy ra. Ngay sau khi điểm bất thường biến mất, chỉ số tương ứng của nó sẽ không xuất hiện khỏi giao diện này. Vì vậy, bạn phải theo dõi trang web để xem những bất thường này, điều này không phải lúc nào cũng thuận tiện.

Bạn có thể cấu hình cảnh báo qua email để không bỏ lỡ chúng.

Để làm như vậy, hãy mở file cấu hình Skyline:

  • sudo vi /opt/skyline/src/settings.py

Đảm bảo rằng cảnh báo được bật:

/opt/syline/src/settings.py
ENABLE_ALERTS = True 

Sau đó, tìm phần ALERTS sau và thêm schemas sau với màu đỏ:

/opt/syline/src/settings.py
ALERTS = (     (^)("collectd", "smtp", 1800)(^), ) 

Giá trị đầu tiên trong schemas là quá trình cần giám sát. Trong trường hợp này, nó là collectd. Giá trị thứ hai của schemas là smtp , viết tắt của cảnh báo qua email. Giá trị cuối cùng của 1800 bằng giây. Nghĩa là các cảnh báo sẽ không kích hoạt nhiều hơn một lần trong vòng 30 phút (1800 giây) ngay cả khi phát hiện thấy kích hoạt. Sửa đổi giá trị này để đáp ứng tốt nhất nhu cầu của bạn.

Cũng tìm phần sau và sửa đổi nó cho các địa chỉ email bạn muốn sử dụng. Thông báo qua email sẽ được gửi đến account (^) administrator@example.com (^) từ (^) skyline-alerts@example.com (^).

/opt/syline/src/settings.py
SMTP_OPTS = {     "sender": "(^)skyline-alerts@example.com(^)",     "recipients": {         "collectd": ["(^)administrator@example.com(^)"],     }, } 

Sau khi thực hiện tất cả những thay đổi này, bạn phải khởi động lại trình phân tích:

  • sudo /opt/skyline/bin/analyzer.d restart

Bước 5 - Kiểm tra Skyline

Để kiểm tra Skyline, ta có thể tạo mức tăng đột biến CPU bằng lệnh bash:

  • dd if=/dev/zero of=/dev/null

Bạn có thể dừng lệnh bất kỳ lúc nào bằng cách nhấn CTRL-C. Vài phút là đủ để tạo ra sự bất thường.

Nếu bạn nhìn vào giao diện web Skyline trong khi chạy lệnh này, bạn sẽ thấy các điểm bất thường được phát hiện. Một ví dụ được thể hiện trong Hình 6.

Hình 6
Hình 6

Bạn có thể thấy rằng do tải CPU cao, tốc độ của các thành phần của Skyline giảm xuống. Tất cả các chỉ số bất thường được phát hiện được hiển thị dưới dạng danh sách ở cuối trang web. Khi bạn di chuột qua tên của một trong các số liệu, trong biểu đồ phía trên, bạn có thể thấy chuỗi thời gian tương ứng cho giờ trước và ngày. Nhấp vào tên của chỉ số để mở một biểu đồ chi tiết hơn, được tạo bởi Graphite (xem Hình 7 để biết ví dụ).

Hình 7
Hình 7

Tải CPU không đạt đến giá trị cực cao trong ví dụ này và không vượt quá ngưỡng. Trong trường hợp này, hệ thống giám sát cổ điển không thể tìm ra sai lệch. Trường hợp như vậy đã được đề cập trước đó (Hình 1, điểm 3).

Không giống như các hệ thống giám sát cổ điển, Skyline có thể nhanh chóng tìm ra các sai lệch và thông báo cho bạn về chúng.

Bước 6 - Điều chỉnh thuật toán (Tùy chọn)

Như đã đề cập trước đó, Skyline đang sử dụng một tập hợp các thuật toán để phát hiện sự bất thường. Các thuật toán sau hiện đang được triển khai:

  • Nghĩa là độ lệch tuyệt đối
  • Grubbs 'thử nghiệm
  • Giờ đầu tiên trung bình
  • Độ lệch chuẩn so với mức trung bình
  • Độ lệch chuẩn so với đường trung bình động
  • Bình phương nhỏ nhất
  • Thùng biểu đồ
  • Kiểm tra Kolmogorov – Smirnov

Hầu hết chúng đều dựa trên biểu đồ сontrol ( còn gọi là biểu đồ Shewhart) và luật ba sigma . Họ sử dụng thư viện Python SciPy và NumPy trong tính toán của họ.

Bạn có thể tùy chỉnh bất kỳ thuật toán nào được sử dụng. Bạn cũng có thể sửa đổi, xóa hoặc thêm những cái mới. Để làm điều này, bạn phải chỉnh sửa file cấu hình:

sudo vi /opt/skyline/src/analyzer/algorithms.py 

Mỗi thuật toán trong file này được cung cấp một mô tả nhỏ. Ví dụ, hãy kiểm tra thuật toán sau:

/opt/skyline/src/analyzer/algorithm.py
def median_absolute_deviation(timeseries):     """     A timeseries is anomalous if the deviation of its latest datapoint with     respect to the median is X times larger than the median of deviations.     """      series = pandas.Series([x[1] for x in timeseries])     median = series.median()     demedianed = np.abs(series - median)     median_deviation = demedianed.median()      # The test statistic is infinite when the median is zero,     # so it becomes super sensitive. We play it safe and skip when this happens.     if median_deviation == 0:         return False      test_statistic = demedianed.iget(-1) / median_deviation      # Completely arbitary...triggers if the median deviation is     # 6 times bigger than the median     if test_statistic > 6:         return True                                                        

Dựa trên bản chất dữ liệu , bạn có thể cần thay đổi giá trị ngưỡng từ 6 sang giá trị khác - 4 , 5 , 7 , v.v.

Bạn cũng có thể điều chỉnh một số cài đặt trong file settings.py :

/opt/skyline/src/settings.py
ALGORITHMS = [     'first_hour_average',     'mean_subtraction_cumulation',      'stddev_from_average',      'stddev_from_moving_average',      'least_squares',      'grubbs',      'histogram_bins',       'median_absolute_deviation',      'ks_test', ]  CONSENSUS = 6 

Tùy chọn ALGORITHMS chỉ định các thuật toán mà Trình phân tích sẽ chạy. Bạn có thể comment bất kỳ ai trong số họ để vô hiệu hóa chúng hoặc thêm các thuật toán mới. Tùy chọn CONSENSUS chỉ định số lượng thuật toán phải trả về True trước khi một số liệu được gọi là bất thường. Để tăng độ nhạy, bạn có thể giảm tùy chọn này và ngược lại.

Kết luận

Skyline đã được chứng minh tốt trong các hệ thống CNTT thay đổi động phức tạp. Nó có thể hữu ích cho các lập trình viên thường xuyên áp dụng các thay đổi đối với hệ điều hành và muốn nhanh chóng phát hiện các điểm bất thường trong số liệu hệ thống sau khi phát hành phần mềm mới.

Những ưu điểm chính của nó bao gồm:

  • Phân tích tốc độ cao với lượng lớn dữ liệu
  • Không cần đặt các thông số riêng lẻ cho từng chỉ số
  • Khả năng thêm các thuật toán của bạn để phát hiện bất thường

Nó cũng có một số nhược điểm:

  • Dữ liệu của từng chỉ số được phân tích bằng một số thuật toán yêu cầu tài nguyên hệ thống máy tính đáng kể.
  • Tất cả dữ liệu được lưu trữ trong RAM, cho phép hệ thống hoạt động rất nhanh chóng. Với một số lượng lớn các chỉ số và thời gian phân tích dài, bạn cần một lượng lớn RAM.

Tags:

Các tin liên quan

Cách cài đặt và cấu hình mod_deflate trên CentOS 7
2015-06-12
Cách hạn chế tài nguyên bằng cách sử dụng nhóm trên CentOS 6
2015-06-10
Cách phân tích chỉ số hệ thống với InfluxDB trên CentOS 7
2015-06-04
Cách quản lý / vv với Kiểm soát phiên bản bằng Etckeeper trên CentOS 7
2015-04-20
Cách cài đặt WordPress với OpenLiteSpeed trên CentOS 7
2015-04-16
Cách backup server CentOS 7 bằng Bacula
2015-04-13
Cách sử dụng MariaDB với Ứng dụng Django của bạn trên CentOS 7
2015-03-25
Cách thiết lập LEPP hai node trên CentOS 7
2015-03-19
Cách cài đặt Ruby on Rails với rbenv trên CentOS 7
2015-03-16
Cách cài đặt MediaWiki trên CentOS 7
2015-03-12