Đồng bộ hóa MongoDB với nhật ký tìm kiếm đàn hồi

Nó hoàn toàn miễn phí và mã nguồn mở hoàn toàn. Giấy phép là Apache 2. 0, có nghĩa là bạn được tự do sử dụng nó theo bất kỳ cách nào bạn muốn

Tài liệu

Đây là một plugin logstash để kéo dữ liệu ra khỏi mongodb và xử lý bằng logstash. Nó sẽ kết nối với cơ sở dữ liệu được chỉ định trong uri, sử dụng thuộc tính

sudo apt-get install golang-go
0 để tìm các bộ sưu tập để lấy tài liệu từ đó, bắt đầu từ bộ sưu tập đầu tiên mà nó tìm thấy và lấy số lượng tài liệu được chỉ định trong
sudo apt-get install golang-go
1, lưu tiến trình của nó trong cơ sở dữ liệu sqlite có vị trí được chỉ định . Nó sẽ tiếp tục điều này cho đến khi không còn tìm thấy tài liệu nào mới hơn những tài liệu mà nó đã xử lý, tạm dừng trong giây lát, sau đó tiếp tục lặp qua các bộ sưu tập

Điều này được thiết kế để phân tích nhật ký được ghi vào mongodb. Điều này có nghĩa là nó có thể không phân tích lại các mục db đã được thay đổi và đã được phân tích cú pháp

Hướng dẫn cài đặt plugin

Logstash được cài đặt từ ZIP. TGZ[Dành cho Logstash Phiên bản cũ hơn < 2. 0. 0+]

  • bin/cài đặt plugin/đường dẫn/đến/logstash-input-mongodb-0. 3. 0. đá quý

Logstash được cài đặt từ logstash-plugin [Dành cho Logstash Phiên bản mới hơn > 4. 0. 0+]

  • logstash-6. 4. 1]#. /bin/logstash-plugin cài đặt logstash-input-mongodb
Liệt kê plugin

Các gói phát hành log-stash bao gồm các plugin phổ biến để bạn có thể sử dụng chúng ngay lập tức

Để liệt kê các plug-in hiện có sẵn trong quá trình triển khai của bạn

Tùy chọn cấu hình
Name                 Type          Description
uri [String] A MongoDB URI for your database or cluster [check the MongoDB documentation for further info on this] [No Default, Required]
placeholder_db_dir [String] Path where the place holder database will be stored locally to disk [No Default, Required]
This gets created by the plugin so the directory needs to be writeable by the user that logstash is running as
placeholder_db_name [String] Name of the database file that will be created [Default: logstash_sqlite.db]
collection [String] A regex that will be used to find desired collecitons. [No Default, Required]
generateId [Boolean] If true, this will add a field '_id' that contains the MongoDB Document id
batch_size [Int] Size of the batch of mongo documents to pull at a time [Default: 30]
parse_method [String] Built in parsing of the mongodb document object [Default: 'flatten']
dig_fields [Array] An array of fields that should employ the dig method
dig_dig_fields [Array] This provides a second level of hash flattening after the initial dig has been done
Cấu hình

Thí dụ. -

đầu vào {
mongodb {
codec => “json”
uri => ‘mongodb. //máy chủ cục bộ. 27017/NewDb’
placeholder_db_dir => ‘/home/devbrt. shukla/Máy tính để bàn/scalaoutput/ELK/logstash-6. 4. 1/db_dir’
placeholder_db_name => ‘Employee_sqlite. db'
collection => 'Employee'
batch_size => 5000
generateId => 'true'
parse_method => “simple”
}
}

bộ lọc {
biến đổi {
remove_field => [ “_id” ]
}
}

đầu ra {
elasticsearch {
hosts => [“localhost. 9200”]
index => “nhân viên-%{+YYYY. MM. dd}”
}
stdout { codec => rubydebug }
}

URI MongoDB

Tham số URI là nơi bạn sẽ chỉ định tất cả các tùy chọn mongodb của mình bao gồm những thứ như auth và SSL. Bạn nên sử dụng chuỗi kết nối [URI] tương thích với thông số mongodb

Để biết thêm thông tin về MongoDB URI, vui lòng xem tài liệu MongoDB. https. // tài liệu. mongodb. tổ chức/v3. 0/tham chiếu/chuỗi kết nối/

ELK ngăn xếp bằng đàn hồi là tuyệt vời. Ngày nay, nhiều công ty dựa vào elaticsearch để tìm kiếm và phân tích dữ liệu của họ trong thời gian thực, kibana để trực quan hóa phân tích hoặc tìm kiếm đó và logstash như một quy trình xử lý dữ liệu có thể lấy các loại dữ liệu đầu vào khác nhau, lọc và sau đó gửi đến

Các thư viện plugin của ELK rất phong phú, nhưng cho đến nay, chỉ có một plugin ổn định để xuất/ghi vào mongo và vào tháng 2 năm 2018, một plugin mới để nhập vào mongo đã ra mắt, nhưng nó phụ thuộc vào JDBC của Java và co giãn . Vì vậy, cuối cùng bạn sẽ cố gắng tìm một phiên bản hoạt động và giá rẻ, điều này có thể vừa khó khăn vừa tốn kém. Chưa kể toàn bộ lỗi liên quan đến Java mà bạn có thể mắc phải. Điều đó khiến chúng ta có hai lựa chọn cuối cùng

  1. trình kết nối Mongo

Một thư viện dựa trên python tốt, nhưng tiếc là chưa được cập nhật trong gần một năm, chưa kể rằng nó không hỗ trợ Elaticsearch phiên bản 6+.

2. người vận chuyển

Một thư viện tuyệt vời và được cập nhật thường xuyên, nhưng nó không thực sự đồng bộ hóa dữ liệu giữa mongodb và Elaticsearch trong thời gian thực. Điều đó có nghĩa là công việc của nó đã hoàn thành sau khi quá trình đồng bộ hóa hoàn tất. Cách giải quyết duy nhất là chạy nó nhiều lần, điều này sẽ tạo ra tải không cần thiết trên máy chủ của bạn. Vì vậy, hãy sử dụng trình vận chuyển nếu bạn chỉ muốn đồng bộ hóa một lần

Đồng bộ thời gian thực với Monstache

Monstache là một trình nền đồng bộ hóa được viết bằng Go liên tục lập chỉ mục các bộ sưu tập MongoDB của bạn vào Elaticsearch. Và đây là cách triển khai Monstache trong vài bước

Ghi chú. Các bước này dành cho máy chủ dựa trên Ubuntu, các bước tương tự có thể được thực hiện cho bất kỳ máy chủ nào khác, nhưng hãy đảm bảo rằng bạn đang sử dụng đúng lệnh cho loại máy chủ của mình

Bước 1

Hãy chắc chắn rằng bạn đã đi trên máy chủ của bạn. Bạn có thể cài đặt go bằng cách chạy

sudo apt-get install golang-go

Bước 2

Tải xuống bản phát hành mới nhất của Monstache từ đây. Giải nén thư mục. Trong thư mục, bạn sẽ tìm thấy một thư mục cho từng loại máy, trong trường hợp của chúng tôi linux-AMD64 là thư mục dành cho Ubuntu. Nhớ đường dẫn đến thư mục đó. Nếu bạn không muốn giữ các tệp mình không cần, hãy di chuyển nội dung của thư mục dành riêng cho máy chủ của bạn [linux-amd64 cho Ubuntu] vào bất kỳ thư mục nào khác trên máy chủ của bạn bằng FTP hoặc bất kỳ phương pháp nào khác và ghi nhớ đường dẫn [

Bước 3

Xuất đường dẫn của bạn sang. profile của máy chủ của bạn bằng cách chỉnh sửa nó, trong Ubuntu đó là ~/. bashrc nơi bạn cần thực hiện các thay đổi

sudo vi ~/.bashrc

Thêm dòng sau vào tệp, xem xét đường dẫn tôi đã yêu cầu bạn giữ trong bước hai

export PATH=“/home/ubuntu/build/linux-amd64:$PATH”

Lưu ý rằng đường dẫn kết thúc bằng tên thư mục liên quan đến loại máy chủ của bạn

Nhớ ghi nguồn hồ sơ của bạn

source ~/.bashrc

Chạy lệnh sau để đảm bảo mọi thứ được đặt chính xác, nếu đúng, nó sẽ trả về cho bạn phiên bản cài đặt Monstache của bạn

monstache -v

Bước 4

Monstache hoạt động bằng cách giám sát Mongodb oplog, bạn có thể đọc thêm về mongodb oplog, nhưng đó không phải là mục đích của hướng dẫn đó, bằng tiếng Anh đơn giản, oplog lưu giữ bản ghi về bất kỳ thay đổi nào xảy ra trong đối tượng mongodb và lưu cùng với thay đổi đó _id của . Tôi khuyên bạn nên tìm hiểu thêm về oplog

Để đảm bảo mongodb của bạn bắt đầu với oplog hoạt động, bạn cần chạy nó với tùy chọn chính là đúng, bạn có thể thiết lập điều đó trong mongodb. conf hoặc đơn giản bằng cách thêm — master vào mongo khi chạy

mongod --master

Bước 5 & Cuối cùng

Chạy Monstache bằng cách gõ vào terminal

monstache

Theo mặc định, monstache sẽ kết nối với Elaticsearch và MongoDB trên localhost trên các cổng mặc định và bắt đầu điều chỉnh oplog MongoDB

Tùy chọn nâng cao

Cả mongodb oplog và Monstache đều đi kèm với một số tùy chọn, một trong những thay đổi bạn có thể xem xét là kích thước oplog mongodb, đặc biệt nếu bạn định sử dụng tính năng này trong tác vụ cần nhiều dữ liệu. Xóa mongodb oplog thường xuyên cũng được khuyên để tiết kiệm dung lượng trong đĩa của bạn. Xin lưu ý rằng việc xóa oplog hoàn toàn không có nghĩa là Elaticsearch sẽ xóa đối tượng được lập chỉ mục khỏi chỉ mục của nó

Monstache cũng đi kèm với một tệp cấu hình mà bạn có thể tìm thấy tại đây

________số 8

bạn có thể kiểm tra ý nghĩa của từng cấu hình tại đây. Ví dụ: namespace-regex và namespace-exclude-regex có thể trở nên hữu ích nếu bạn muốn lọc những gì cần lập chỉ mục trong Elaticsearch

Thế là xong, bạn đã hoàn thành. Theo mặc định, Monstache sẽ tạo chỉ mục cho mỗi bộ sưu tập với cú pháp sau

db. thu thập

Vì vậy, nếu tên cơ sở dữ liệu của bạn là thử nghiệm và bộ sưu tập của bạn là dữ liệu, thì chỉ mục sẽ là thử nghiệm. dữ liệu

Tôi hy vọng điều đó hữu ích, vui lòng đặt bất kỳ câu hỏi nào hoặc chia sẻ bất kỳ cách tiếp cận nào khác mà bạn có với cộng đồng. Và cuối cùng, cảm ơn Ryan Wynn vì đã tạo ra Monstache

Chủ Đề