0

Giới thiệu

Splunk là một nền tảng để xử lý dữ liệu máy từ nhiều nguồn khác nhau như weblog, syslog, log4j và cũng có thể hoạt động với các định dạng tệp JSON và CSV, do đó mọi ứng dụng tạo đầu ra JSON hoặc CSV đều có thể được xem là nguồn cho Splunk. Khi khối lượng và sự đa dạng của dữ liệu máy đang tăng lên, Splunk cũng đang trở thành một người chơi thú vị hơn trong thế giới dữ liệu lớn. Splunk có thể được coi là một công cụ tìm kiếm dữ liệu CNTT . Splunk thu thập dữ liệu từ nhiều nguồn, lập chỉ mục chúng và người dùng có thể tìm kiếm chúng bằng ngôn ngữ độc quyền Splunk gọi là SPL (Ngôn ngữ xử lý tìm kiếm). Các kết quả tìm kiếm sau đó có thể được sử dụng để tạo báo cáo và bảng điều khiển để trực quan hóa dữ liệu.  

Kiến trúc Splunk

Bên dưới mui xe Kiến trúc Splunk có các thành phần chính sau: - giao nhận được sử dụng để chuyển tiếp dữ liệu đến các phiên bản máy thu Splunk. Các trường hợp người nhận thường là người lập chỉ mục. - bộ chỉ mục là các trường hợp tách thành dữ liệu chỉ mục. Các chỉ mục được lưu trữ trong các tập tin. Có hai loại tệp; các tệp dữ liệu thô lưu trữ dữ liệu ở định dạng nén và các tệp chỉ mục có chứa siêu dữ liệu cho các truy vấn tìm kiếm. Trong khi lập chỉ mục, Splunk trích xuất các trường mặc định và xác định các sự kiện dựa trên dấu thời gian hoặc tạo chúng nếu không tìm thấy dấu thời gian. - tìm kiếm đầu và tìm kiếm đồng nghiệp . Trong đầu tìm kiếm môi trường phân tán quản lý các yêu cầu tìm kiếm, hướng chúng đến các tìm kiếm ngang hàng và sau đó hợp nhất kết quả lại cho người dùng. - Splunk Web là một giao diện người dùng đồ họa dựa trên máy chủ ứng dụng Python.


Bão táp

Splunk Storm là phiên bản dịch vụ đám mây của Splunk. Splunk Storm chạy trong đám mây Amazon và sử dụng cả Bộ lưu trữ khối đàn hồi (EBS) và Dịch vụ lưu trữ đơn giản (S3). Gói giá dựa trên phí hàng tháng, nó phụ thuộc vào khối lượng dữ liệu mà bạn muốn lưu trữ. Khi viết bài viết này, có một tầng miễn phí với dung lượng lưu trữ 1 GB, trong khi đó, dung lượng lưu trữ 100 GB có giá 400 USD và dung lượng lưu trữ tối đa 1 TB có giá 3.000 USD mỗi tháng. Để bắt đầu, chúng tôi cần đăng ký và đăng ký dự án. Sau đó chúng ta có thể xác định các dữ liệu đầu vào. Có bốn tùy chọn: tải lên một tệp, sử dụng chuyển tiếp, sử dụng API (nó đang ở giai đoạn thử nghiệm) hoặc sử dụng dữ liệu mạng được gửi trực tiếp từ các máy chủ. Như một thử nghiệm đầu tiên, chúng tôi sẽ sử dụng các tệp dữ liệu được tải lên từ một thư mục cục bộ. Chúng tôi đã sử dụng một mẫu truy cập web apache mẫu và nhật ký hệ thống có sẵn từ http://www.monitorware.com/en/logsamples/ Phải mất một thời gian để lập chỉ mục các tệp và sau đó chúng có sẵn cho các truy vấn tìm kiếm. Chúng tôi có thể chạy truy vấn tìm kiếm để xác định tất cả các mã lỗi phía máy khách HTTP:
"source="access_log.txt" status>="400" AND status <="500"
Nếu chúng tôi muốn xác định tất cả các mục nhật ký truy cập bằng phương thức HTTP POST, chúng tôi có thể chạy truy vấn tìm kiếm sau:
source="access_log.txt" method="POST"
Theo cách tương tự, nếu chúng ta muốn tìm tất cả các thông báo từ tệp syslog đã tải lên được tạo bởi quá trình kernel thì chúng ta có thể chạy truy vấn sau:
source="syslog-messages.txt" process="kernel"

Splunk Forwarder và Twitter API

Để làm ví dụ tiếp theo, chúng tôi muốn kiểm tra đầu ra được tạo bởi chương trình của chúng tôi bằng API Twitter. Chương trình sẽ tạo định dạng JSON trong một tệp bằng API Twitter dựa trên Python. Thư mục được theo dõi bởi một người chuyển tiếp Splunk và một khi tệp được tạo trong thư mục được xác định trước, người chuyển tiếp sẽ gửi nó đến Splunk Storm. Trước tiên, chúng ta cần tạo một ứng dụng trong Twitter thông qua cổng thông tin https: //dev/twitter.com . Ứng dụng sẽ có customer_key, customer_secret, access_token_key và access_token_secret sẽ được yêu cầu bởi API Twitter. API Twitter mà chúng tôi sẽ sử dụng cho ứng dụng Python có thể tải xuống từ Github, https://github.com/bear/python-twitter.git. API này phụ thuộc vào oauth2, simplejson và omeplib2 vì vậy chúng tôi cần cài đặt chúng trước. Sau đó, chúng ta có thể lấy mã từ Github và xây dựng và cài đặt gói.
$ git clone https://github.com/bear/python-twitter.git
# Build and Install:
$ python setup.py build
$ python setup.py install
Mã ứng dụng Twitter - twtr.py - như sau:
# twtr.py
import sys
import twitter

if len(sys.argv) < 3:
    print "Usage: " + sys.argv[0] + " keyword count"
    sys.exit(1)

keyword = sys.argv[1]
count = sys.argv[2]
# Twitter API 1.1. Count - up to a maximum of 100
# https://dev.twitter.com/docs/api/1.1/get/search/tweets
if int(count) > 100:
    count = 100

api = twitter.Api(consumer_key="CONSUMER_KEY", consumer_secret="CONSUMER_SECRET", access_token_key="ACCESS_TOKEN_KEY", access_token_secret="4PXvz7QIiwtwhFrFXFEkc9wY7iBOdgusD8ZQLvUhabM" )

search_result = api.GetSearch(term=keyword, count=count)

for s in search_result:
    print s.AsJsonString()
Chương trình Python có thể được chạy như sau:
$ python twtr.py "big data" 100

Cài đặt Splunk Forwarder

Sau đó, chúng ta cần cài đặt Splunk Forwarder, xem http://www.splunk.com/doad/universalforwarder . Chúng tôi cũng cần tải xuống thông tin đăng nhập Splunk sẽ cho phép người chuyển tiếp gửi dữ liệu đến dự án của chúng tôi. Khi giao nhận và giao dịch được cài đặt, chúng tôi có thể đăng nhập và thêm một thư mục (twitter_status) để giao tiếp của chúng tôi được theo dõi. Chúng tôi đã định nghĩa sourcetype là json_notimestamp.
# Download splunk forwarder
$ wget -O splunkforwarder-5.0.3-163460-Linux-x86_64.tgz 'http://www.splunk.com/page/download_track?file=5.0.3/universalforwarder/linux/splunkforwarder-5.0.3-163460-Linux-x86_64.tgz&ac=&wget=true&name=wget&typed=releases&elq=8ccba442-db76-4fc8-b36b-36252bb61257'

# Install and start splunk forwarder
$ tar xvzf splunkforwarder-5.0.3-163460-Linux-x86_64.tgz
$ export SPLUNK_HOME=/home/ec2-user/splunkforwarder
$ $SPLUNK_HOME/bin/splunk start
# Install project credentials
$ $SPLUNK_HOME/bin/splunk install app ./stormforwarder_2628fbc8d76811e2b09622000a1cdcf0.spl -auth admin:changeme
App '/home/ec2-user/stormforwarder_2628fbc8d76811e2b09622000a1cdcf0.spl' installed

# Login
$SPLUNK_HOME/bin/splunk login -auth admin:changeme

#' Add monitor (directory or file)
 $SPLUNK_HOME/bin/splunk add monitor /home/ec2-user/splunk_blog/twitter_status -sourcetype json_no_timestamp
Added monitor of '/home/ec2-user/splunk_blog/twitter_status'.
Bây giờ chúng tôi đã sẵn sàng để chạy mã Python bằng API Twitter:
$ python twtr.py "big data" 100 | tee twitter_status/twitter_status.txt
Chương trình tạo một tệp twitter_status.txt trong thư mục twitter_status được theo dõi bởi Splunk Forwarder. Bộ chuyển tiếp gửi tệp đầu ra tới Splunk Storm. Sau một thời gian, nó sẽ xuất hiện dưới các phần đầu vào như là giao nhận xác thực. Các tập tin sẽ được hiển thị như là một nguồn cùng với nhật ký truy cập apache và syslog đã tải lên trước đó. Nếu chúng tôi muốn tìm kiếm người dùng có vị trí London, truy vấn tìm kiếm sẽ như thế này:
source="/home/ec2-user/splunk_blog/twitter_status/twitter_status.txt" user.location="London, UK"
Chúng tôi cũng có thể xác định truy vấn tìm kiếm để hiển thị 10 múi giờ hàng đầu từ kết quả Twitter và từ kết quả tìm kiếm, thật dễ dàng để tạo Báo cáo chỉ bằng vài cú nhấp chuột trên giao diện người dùng web. Báo cáo cho phép chọn nhiều tùy chọn trực quan hóa như các loại biểu đồ cột, khu vực hoặc hình tròn, v.v.
source="/home/ec2-user/splunk_blog/twitter_status/twitter_status.txt" | top limit=10 user.time_zone

Phần kết luận

Như đã đề cập ở đầu bài viết này, sự đa dạng và khối lượng được tạo ra bởi các máy đang tăng lên đáng kể; dữ liệu cảm biến, nhật ký ứng dụng, nhật ký truy cập web, nhật ký hệ thống, cơ sở dữ liệu và nhật ký kiểm toán hệ thống tập tin chỉ là một vài ví dụ về các nguồn dữ liệu tiềm năng cần chú ý nhưng có thể gây khó khăn để xử lý và phân tích kịp thời. Splunk là một công cụ tuyệt vời để đối phó với khối lượng dữ liệu ngày càng tăng và với người dùng Splunk Storm có thể bắt đầu phân tích dữ liệu của họ trên đám mây mà không gặp rắc rối.
|