Khai thác gỗ python kibana

Giả sử bạn đang phát triển một sản phẩm phần mềm. Nó hoạt động từ xa, tương tác với các thiết bị khác nhau, thu thập dữ liệu từ các cảm biến và cung cấp dịch vụ cho người dùng. Một ngày nọ, xảy ra sự cố và hệ thống không hoạt động như mong đợi. Nó có thể không nhận dạng được thiết bị hoặc không nhận được bất kỳ dữ liệu nào từ cảm biến hoặc có thể vừa gặp lỗi thời gian chạy do lỗi trong mã. Làm thế nào bạn có thể biết chắc chắn?

Bây giờ, hãy tưởng tượng nếu có các điểm kiểm tra trong mã hệ thống, nếu hệ thống trả về kết quả không mong muốn, nó chỉ cần gắn cờ và thông báo cho nhà phát triển. Đây là khái niệm về đăng nhập

Ghi nhật ký cho phép các nhà phát triển hiểu mã thực sự đang làm gì và quy trình công việc diễn ra như thế nào. Phần lớn cuộc sống của các nhà phát triển phần mềm là theo dõi, khắc phục sự cố và gỡ lỗi. Ghi nhật ký làm cho quá trình này trở nên dễ dàng và mượt mà hơn nhiều

Trực quan hóa các bản ghi

Khai thác gỗ python kibana
nguồn

Bây giờ, nếu bạn là một nhà phát triển chuyên gia đã phát triển và tạo phần mềm trong một thời gian dài, thì bạn sẽ nghĩ rằng việc ghi nhật ký không phải là vấn đề lớn và hầu hết mã của chúng tôi được bao gồm trong một câu lệnh Debug.Log('____'). Chà, điều đó thật tuyệt nhưng có một số khía cạnh khác của việc ghi nhật ký mà chúng ta có thể tận dụng

Trực quan hóa dữ liệu đã ghi cụ thể có các lợi ích sau

  • Giám sát hoạt động của hệ thống từ xa
  • Truyền đạt thông tin rõ ràng và hiệu quả thông qua đồ họa thống kê, sơ đồ và đồ họa thông tin
  • Trích xuất kiến ​​thức từ dữ liệu được hiển thị dưới dạng các biểu đồ khác nhau
  • Thực hiện các hành động cần thiết để cải thiện hệ thống

Có một số cách chúng ta có thể trực quan hóa dữ liệu thô. Có một số thư viện trong ngôn ngữ lập trình Python và R có thể giúp vẽ biểu đồ. Bạn có thể tìm hiểu thêm về nó ở đây. Nhưng trong bài viết này, tôi sẽ không thảo luận về các phương pháp được đề cập ở trên. Bạn đã bao giờ nghe nói về ngăn xếp ELK chưa?

ngăn xếp ELK

E — Elaticsearch, L — Logstash, K — Kibana

Hãy để tôi giới thiệu ngắn gọn về nó. Ngăn xếp ELK là tập hợp của ba phần mềm nguồn mở giúp cung cấp thông tin chi tiết theo thời gian thực về dữ liệu có thể có cấu trúc hoặc không có cấu trúc. Người ta có thể tìm kiếm và phân tích dữ liệu bằng các công cụ của nó một cách cực kỳ dễ dàng và hiệu quả

Elaticsearch là một công cụ phân tích và tìm kiếm RESTful phân tán, có khả năng giải quyết số lượng trường hợp sử dụng ngày càng tăng. Là trung tâm của Ngăn xếp đàn hồi, nó lưu trữ tập trung dữ liệu của bạn để bạn có thể khám phá những điều mong đợi và khám phá những điều không mong muốn. Elaticsearch cho phép bạn thực hiện và kết hợp nhiều loại tìm kiếm - có cấu trúc, không cấu trúc, địa lý, số liệu, v.v. Nó được xây dựng trên ngôn ngữ lập trình Java, cho phép Elaticsearch chạy trên các nền tảng khác nhau. Nó cho phép người dùng khám phá lượng dữ liệu rất lớn ở tốc độ rất cao

Logstash là một đường dẫn xử lý dữ liệu phía máy chủ, mã nguồn mở, nhập dữ liệu từ vô số nguồn đồng thời, biến đổi dữ liệu và sau đó gửi dữ liệu đó đến “stash” yêu thích của bạn (như Elaticsearch). Dữ liệu thường nằm rải rác hoặc bị cô lập trên nhiều hệ thống ở nhiều định dạng. Logstash hỗ trợ nhiều loại đầu vào kéo theo các sự kiện từ vô số nguồn chung, tất cả cùng một lúc. Dễ dàng nhập từ nhật ký, số liệu, ứng dụng web, kho lưu trữ dữ liệu và các dịch vụ AWS khác nhau của bạn, tất cả đều theo kiểu truyền phát liên tục. Logstash có một khung có thể cắm được với hơn 200 plugin. Trộn, kết hợp và sắp xếp các đầu vào, bộ lọc và đầu ra khác nhau để hoạt động hài hòa với đường ống

Kibana là một nền tảng phân tích và trực quan mã nguồn mở được thiết kế để hoạt động với Elaticsearch. Bạn sử dụng Kibana để tìm kiếm, xem và tương tác với dữ liệu được lưu trữ trong các chỉ số Elaticsearch. Bạn có thể dễ dàng thực hiện phân tích dữ liệu nâng cao và trực quan hóa dữ liệu của mình trong nhiều biểu đồ, bảng và bản đồ. Kibana giúp dễ hiểu khối lượng dữ liệu lớn. Giao diện đơn giản, dựa trên trình duyệt của nó cho phép bạn nhanh chóng tạo và chia sẻ bảng điều khiển động hiển thị các thay đổi đối với truy vấn Elaticsearch trong thời gian thực

Để hiểu rõ hơn về quy trình làm việc về cách ba phần mềm tương tác với nhau, hãy tham khảo sơ đồ sau

Khai thác gỗ python kibana
nguồn

Thực hiện

Đăng nhập bằng Python

Ở đây, tôi chọn giải thích việc triển khai đăng nhập bằng Python vì đây là ngôn ngữ được sử dụng nhiều nhất cho các dự án liên quan đến giao tiếp giữa nhiều máy và internet vạn vật. Nó sẽ giúp cung cấp cho bạn một ý tưởng tổng thể về cách thức hoạt động của nó

Python cung cấp một hệ thống ghi nhật ký như một phần của thư viện chuẩn của nó, vì vậy bạn có thể nhanh chóng thêm ghi nhật ký vào ứng dụng của mình

import logging

Trong Python, việc ghi nhật ký có thể được thực hiện ở 5 cấp độ khác nhau, mỗi cấp độ tương ứng chỉ ra loại sự kiện. Có như sau

  • Thông tin — Chỉ định các thông báo thông tin làm nổi bật tiến trình của ứng dụng ở cấp độ chi tiết
  • Gỡ lỗi - Chỉ định các sự kiện thông tin chi tiết hữu ích nhất để gỡ lỗi ứng dụng
  • Cảnh báo — Chỉ định các tình huống có khả năng gây hại
  • Lỗi - Chỉ định các sự kiện lỗi vẫn có thể cho phép ứng dụng tiếp tục chạy
  • Nghiêm trọng - Chỉ định các sự kiện lỗi rất nghiêm trọng có thể khiến ứng dụng bị hủy bỏ

Do đó tùy theo sự cố cần ghi nhật ký mà ta sử dụng mức xác định cho phù hợp.

Ghi chú. Thông tin và Gỡ lỗi không được ghi theo mặc định vì chỉ ghi nhật ký ở mức Cảnh báo trở lên

Bây giờ để đưa ra một ví dụ và tạo một tập hợp các câu lệnh nhật ký để trực quan hóa, tôi đã tạo một tập lệnh Python để ghi lại các câu lệnh có định dạng cụ thể và một thông báo

import logging
import random

logging.basicConfig(filename="logFile.txt",
                    filemode='a',
                    format='%(asctime)s %(levelname)s-%(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')
for i in xrange(0,15):
    x=random.randint(0,2)
    if(x==0):
        logging.warning('Log Message')
    elif(x==1):
        logging.critical('Log Message')
    else:
        logging.error('Log Message')
log_gen. py

Tại đây, các câu lệnh nhật ký sẽ nối vào một tệp có tên logFile. txt ở định dạng được chỉ định. Tôi đã chạy tập lệnh trong ba ngày vào các khoảng thời gian khác nhau để tạo một tệp chứa nhật ký ngẫu nhiên như bên dưới

2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 WARNING-Log Message
2019-01-09 09:01:05,333 ERROR-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 09:01:05,333 CRITICAL-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 CRITICAL-Log Message
2019-01-09 11:07:05,333 WARNING-Log Message
2019-01-09 11:07:05,333 ERROR-Log Message
logTệp. txt

Thiết lập Elaticsearch, Logstash và Kibana

Đầu tiên, hãy tải xuống ba phần mềm mã nguồn mở từ các liên kết tương ứng của chúng [elasticsearch],[logstash]và[kibana]. Giải nén các tệp và đặt cả ba tệp vào thư mục dự án

Bắt đầu nào

Bước 1 — Thiết lập Kibana và Elaticsearch trên hệ thống cục bộ. Chúng tôi chạy Kibana bằng lệnh sau trong thư mục bin của Kibana

bin\kibana

Tương tự, Elaticsearch được thiết lập như thế này

bin\elasticsearch

Bây giờ, trong hai thiết bị đầu cuối riêng biệt, chúng ta có thể thấy cả hai mô-đun đang chạy. Để kiểm tra xem các dịch vụ có đang chạy không, hãy mở localhost. 5621 và máy chủ cục bộ. 9600

Sau khi cả hai dịch vụ đều chạy thành công, chúng tôi sử dụng các chương trình Logstash và Python để phân tích dữ liệu nhật ký thô và chuyển nó tới Elaticsearch từ đó Kibana truy vấn dữ liệu

Bước 2— Bây giờ hãy tiếp tục với Logstash. Trước khi bắt đầu Logstash, tệp cấu hình Logstash được tạo trong đó chỉ định chi tiết về tệp đầu vào, vị trí đầu ra và phương pháp lọc

input{
 file{
 path => "full/path/to/log_file/location/logFile.txt"
 start_position => "beginning"
 }
}
filter
{
 grok{
 match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:log-level}-%{GREEDYDATA:message}"}
 }
    date {
    match => ["timestamp", "ISO8601"]
  }
}
output{
 elasticsearch{
 hosts => ["localhost:9200"]
 index => "index_name"}
stdout{codec => rubydebug}
}
logstash-đơn giản. conf

Tệp cấu hình này đóng vai trò chính trong ngăn xếp ELK. Hãy xem dòng filter{grok{…}}. Đây là một plugin bộ lọc Grok. Grok là một cách tuyệt vời để phân tích dữ liệu nhật ký phi cấu trúc thành thứ gì đó có cấu trúc và có thể truy vấn được. Công cụ này hoàn hảo cho nhật ký syslog, apache và các nhật ký máy chủ web khác, nhật ký mysql và nói chung, bất kỳ định dạng nhật ký nào thường được viết cho con người chứ không phải máy tính. Mẫu grok này được đề cập trong mã cho Logstash biết cách phân tích từng mục nhập dòng trong tệp nhật ký của chúng tôi

Bây giờ hãy lưu tệp trong thư mục Logstash và bắt đầu dịch vụ Logstash

bin\logstash –f logstash-simple.conf
Để tìm hiểu thêm về cách định cấu hình logstash, hãy nhấp vào [tại đây]

Bước 3 — Sau đó, dữ liệu được phân tích cú pháp từ các tệp nhật ký sẽ có sẵn trong phần quản lý Kibana tại localhost. 5621 để tạo các hình ảnh và bảng điều khiển khác nhau. Để kiểm tra xem Kibana có nhận được dữ liệu nào không, trong tab quản lý của Kibana, hãy chạy lệnh sau

localhost:9200/_cat/indices?v

Điều này sẽ hiển thị tất cả các chỉ mục. Đối với mỗi lần trực quan hóa, một mẫu Chỉ mục mới phải được chọn từ các công cụ dành cho nhà phát triển, sau đó các kỹ thuật trực quan hóa khác nhau được sử dụng để tạo bảng điều khiển

Bảng điều khiển sử dụng Kibana

Sau khi thiết lập mọi thứ, bây giờ là lúc tạo biểu đồ để trực quan hóa dữ liệu nhật ký

Sau khi mở trang chủ quản lý Kibana, chúng tôi sẽ được yêu cầu tạo một mẫu chỉ mục mới. Nhập index_name* vào trường Mẫu chỉ mục và chọn @timestamp trong menu thả xuống tên trường Bộ lọc thời gian

Khai thác gỗ python kibana

Bây giờ để tạo đồ thị, chúng ta vào tab Visualize

Chọn một trực quan hóa mới, chọn một loại biểu đồ và tên chỉ mục, và tùy thuộc vào yêu cầu trục của bạn, hãy tạo một biểu đồ. Chúng ta có thể tạo một biểu đồ với trục y là số đếm và trục x với từ khóa cấp nhật ký hoặc dấu thời gian

Khai thác gỗ python kibana
Tạo biểu đồ

Sau khi tạo một vài biểu đồ, chúng tôi có thể thêm tất cả các hình ảnh trực quan cần thiết và tạo Trang tổng quan, như bên dưới

Khai thác gỗ python kibana
Lưu ý — Bất cứ khi nào nhật ký trong tệp nhật ký được cập nhật hoặc thêm vào nhật ký trước đó, miễn là ba dịch vụ đang chạy dữ liệu trong elaticsearch và biểu đồ trong kibana sẽ tự động cập nhật theo dữ liệu mới

kết thúc

Ghi nhật ký có thể là một công cụ hỗ trợ trong việc chống lỗi và gỡ lỗi chương trình thay vì sử dụng câu lệnh in. Mô-đun ghi nhật ký phân chia các thông báo theo các cấp độ khác nhau. Điều này dẫn đến hiểu rõ hơn về mã và cách luồng cuộc gọi diễn ra mà không làm gián đoạn chương trình

Trực quan hóa dữ liệu là một bước cần thiết trong các tình huống mà một lượng dữ liệu khổng lồ được tạo ra trong mỗi khoảnh khắc. Các công cụ và kỹ thuật trực quan hóa dữ liệu cung cấp cho các giám đốc điều hành và những người lao động tri thức khác những cách tiếp cận mới để cải thiện đáng kể khả năng nắm bắt thông tin ẩn trong dữ liệu của họ. Xác định nhanh các bản ghi lỗi, dễ hiểu dữ liệu và hình ảnh dữ liệu có thể tùy chỉnh cao là một số lợi thế. Đây là một trong những cách xây dựng nhất để tổ chức dữ liệu thô

Để tham khảo thêm, bạn có thể tham khảo tài liệu chính thức của ELK tại đây — https. //www. đàn hồi. đồng/học và đăng nhập python — https. // tài liệu. con trăn. org/2/thư viện/ghi nhật ký. html

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Nếu bài viết này hữu ích, hãy tweet nó

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu