Tôi đang xem pybrain để lấy báo động giám sát máy chủ và xác định nguyên nhân gốc rễ của vấn đề. Tôi hài lòng với việc đào tạo nó bằng cách sử dụng việc học có giám sát và quản lý các bộ dữ liệu đào tạo. Dữ liệu được cấu trúc như thế này:
- Loại máy chủ A # 1
- Báo động loại 1
- Báo động loại 2
- Loại máy chủ A # 2
- Báo động loại 1
- Báo động loại 2
- Loại máy chủ B # 1
- Loại báo động 99
- Báo động loại 2
Vì vậy, có n máy chủ, với x báo động có thể UP
hoặc DOWN
. Cả hai n
và x
là biến.
Nếu Máy chủ A1 có cảnh báo 1 & 2 như vậy DOWN
, thì chúng ta có thể nói rằng dịch vụ a bị hỏng trên máy chủ đó và là nguyên nhân của sự cố.
Nếu báo động 1 không hoạt động trên tất cả các máy chủ, thì chúng ta có thể nói rằng dịch vụ a là nguyên nhân.
Có khả năng có thể có nhiều lựa chọn cho nguyên nhân, vì vậy phân loại thẳng có vẻ không phù hợp.
Tôi cũng muốn buộc các nguồn dữ liệu sau này vào mạng. Chẳng hạn như các tập lệnh ping một số dịch vụ bên ngoài.
Tất cả các báo động thích hợp có thể không được kích hoạt cùng một lúc, do kiểm tra dịch vụ nối tiếp, do đó, nó có thể bắt đầu với một máy chủ xuống và sau đó một máy chủ khác giảm 5 phút sau.
Tôi đang cố gắng làm một số thứ cơ bản lúc đầu:
from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
INPUTS = 2
OUTPUTS = 1
# Build network
# 2 inputs, 3 hidden, 1 output neurons
net = buildNetwork(INPUTS, 3, OUTPUTS)
# Build dataset
# Dataset with 2 inputs and 1 output
ds = SupervisedDataSet(INPUTS, OUTPUTS)
# Add one sample, iterable of inputs and iterable of outputs
ds.addSample((0, 0), (0,))
# Train the network with the dataset
trainer = BackpropTrainer(net, ds)
# Train 1000 epochs
for x in xrange(10):
trainer.train()
# Train infinite epochs until the error rate is low
trainer.trainUntilConvergence()
# Run an input over the network
result = net.activate([2, 1])
Nhưng tôi có một thời gian khó ánh xạ số lượng báo động biến thành số tĩnh của đầu vào. Ví dụ: nếu chúng ta thêm báo thức vào máy chủ hoặc thêm máy chủ, toàn bộ mạng cần phải được xây dựng lại. Nếu đó là điều cần phải làm, tôi có thể làm nó, nhưng muốn biết liệu có cách nào tốt hơn không.
Một tùy chọn khác mà tôi đang cố gắng nghĩ là có một mạng khác nhau cho từng loại máy chủ, nhưng tôi không thấy làm thế nào tôi có thể đưa ra kết luận trên toàn môi trường, vì nó sẽ chỉ đưa ra các đánh giá trên một máy chủ, thay vì tất cả các máy chủ lưu trữ cùng một lúc.
Tôi nên sử dụng loại thuật toán nào và làm cách nào để ánh xạ tập dữ liệu để rút ra kết luận toàn môi trường với các đầu vào biến đổi?