Friday, November 1, 2024

Cài đặt Graylog sử dụng OpenSearch để lưu trữ

-

1. Graylog là gì?

Graylog là một công cụ quản lý và phân tích log mã nguồn mở, được thiết kế để thu thập, lưu trữ và phân tích dữ liệu log từ nhiều nguồn khác nhau trong thời gian thực. Nó cho phép người dùng tập trung dữ liệu log từ các ứng dụng, hệ thống và thiết bị mạng và cung cấp khả năng tìm kiếm mạnh mẽ để truy vấn và khám phá dữ liệu. Graylog hỗ trợ nhiều định dạng log và cho phép người dùng tạo bảng điều khiển, cảnh báo và trực quan hóa tùy chỉnh để nhận được thông tin về trạng thái và hiệu suất hệ thống.

  • Các thành phần chính của Graylog bao gồm:
    • Graylog Server: Là thành phần cốt lõi nhận và xử lý dữ liệu log.
    • Elasticsearch: Được sử dụng làm cơ sở dữ liệu để lưu trữ và chỉ mục dữ liệu log.
    • MongoDB: Lưu trữ dữ liệu cấu hình và siêu dữ liệu.
    • Graylog Web Interface: Giao diện người dùng đồ họa được sử dụng để tương tác với dữ liệu log.

2. OpenSearch là gì?

OpenSearch là một công cụ tìm kiếm và phân tích dữ liệu dựa trên Elasticsearch và được thiết kế như một phiên bản mã nguồn mở thay thế cho Elasticsearch. Nó được tạo ra bởi một nhóm các nhà phát triển như một phản ứng với việc thay đổi giấy phép của Elasticsearch, dẫn đến việc mất tính mã nguồn mở của nó.

OpenSearch tương thích với API của Elasticsearch, điều này có nghĩa là các ứng dụng và công cụ đã được xây dựng cho Elasticsearch có thể hoạt động với OpenSearch mà chỉ cần thực hiện ít sửa đổi. Nó cung cấp nhiều tính năng như tìm kiếm toàn văn bản, phân tích và trực quan hóa, làm cho nó phù hợp cho việc phân tích log, quản lý thông tin và sự kiện bảo mật (SIEM), giám sát ứng dụng và các trường hợp sử dụng khác yêu cầu phân tích dữ liệu quy mô lớn.

  • OpenSearch cũng có các thành phần tương tự như Elasticsearch:
    • OpenSearch Server: Là thành phần cốt lõi chịu trách nhiệm lưu trữ dữ liệu, chỉ mục và chức năng tìm kiếm.
    • OpenSearch Dashboards: Cung cấp giao diện trực quan để khám phá và trực quan hóa dữ liệu, trước đây được gọi là Kibana.
    • OpenSearch Alerting: Xử lý cảnh báo và thông báo dựa trên các điều kiện cụ thể, trước đây được gọi là Alerting trong Elastic Stack.

3. Cài đặt Graylog.

Bước 1 – Cài đặt MongoDB.

Cài đặt tiện ích bổ sung.

sudo apt-get install gnupg curl -y

Tải xuống public key của MongoDB và chuyển đổi nó sang định dạng gpg

curl -fsSL https://pgp.mongodb.com/server-6.0.asc | \
   sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg \
   --dearmor

Cho phép Ubuntu truy cập và cài đặt các gói từ kho lưu trữ MongoDB với public key đã xác thực được tải xuống trước đó.

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

Cập nhật lại danh sách gói và cài đặt MongoDB.

sudo apt-get update
sudo apt-get install -y mongodb-org

Ngăn không cho MongoDB tự động nâng cấp tránh hư hỏng cấu trúc dữ liệu.

echo "mongodb-org hold" | sudo dpkg --set-selections
echo "mongodb-org-database hold" | sudo dpkg --set-selections
echo "mongodb-org-server hold" | sudo dpkg --set-selections
echo "mongodb-mongosh hold" | sudo dpkg --set-selections
echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
echo "mongodb-org-tools hold" | sudo dpkg --set-selections

Khởi động và bật chế độ tự khởi động theo hệ thống cho MongoDB.

sudo systemctl start mongod
sudo systemctl enable mongod

Kiểm tra lại trạng thái của MongoDB.

$ sudo systemctl status mongod
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-08-02 13:35:41 UTC; 24min ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 9521 (mongod)
     Memory: 173.6M
        CPU: 18.809s
     CGroup: /system.slice/mongod.service
             └─9521 /usr/bin/mongod --config /etc/mongod.conf


Transparent Huge Pages (THP) là một tính năng có sẵn trong một số hệ điều hành, bao gồm Linux, nhằm tối ưu hóa việc quản lý bộ nhớ trong các ứng dụng lớn hoặc trên các hệ thống có nhiều bộ nhớ RAM. Tính năng này cho phép hệ thống tự động xử lý bộ nhớ theo các trang lớn hơn so với trang thông thường, với mục tiêu cải thiện hiệu suất và tiết kiệm bộ nhớ.

Tuy nhiên, trong một số trường hợp, THP có thể gây ra những vấn đề hiệu năng và tương thích trong môi trường MongoDB cụ thể. MongoDB khuyến nghị tắt tính năng THP để đảm bảo hoạt động ổn định và hiệu suất tối ưu của cơ sở dữ liệu.

Các vấn đề phổ biến khi sử dụng THP trong MongoDB bao gồm:

  • Fragmentation: THP có thể gây ra sự phân mảnh nội bộ trong bộ nhớ, làm cho các trang dữ liệu không liên tục và làm giảm hiệu suất truy xuất dữ liệu.
  • Latency: Khi THP được kích hoạt, có thể xuất hiện một vài đợi độc quyền (exclusive lock) trên các trang bộ nhớ, dẫn đến tăng đáng kể thời gian truy cập dữ liệu.
  • CPU overhead: Quá trình tự động xử lý THP yêu cầu sử dụng tài nguyên CPU và có thể gây ảnh hưởng đến hiệu suất tổng thể của hệ thống.
cat > /etc/systemd/system/disable-transparent-huge-pages.service << 'OEF'
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service

[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'

[Install]
WantedBy=basic.target
OEF

Reload lại Deamon.

sudo systemctl daemon-reload

Khởi động và bật chế độ tự khởi động theo hệ thống cho THP.

sudo systemctl start disable-transparent-huge-pages
sudo systemctl enable disable-transparent-huge-pages

Xác nhận lại việc tắt THP thành công.

$ cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

Nếu kết quả hiển thị là [never], điều đó có nghĩa là tính năng THP đã được tắt thành công trong hệ thống của bạn. Điều này có lợi khi triển khai MongoDB, vì nó giúp tránh các vấn đề hiệu năng và tương thích được đề cập trước đó.

Nếu bạn không thấy [never] trong kết quả và thấy một trong các giá trị khác, hãy thực hiện lại các bước để tắt THP như đã được mô tả trước đó. Bạn có thể kiểm tra lại cấu hình và thực hiện một khởi động lại hệ thống để chắc chắn rằng cấu hình đã được áp dụng thành công.

Khi THP đã được tắt thành công và kết quả cat /sys/kernel/mm/transparent_hugepage/enabled hiển thị [never], bạn đã chuẩn bị môi trường tốt hơn để triển khai MongoDB với hiệu suất và tính tương thích tốt hơn.

Bước 2 – Cài đặt OpenSearch.

Tương tự như ở bước trên ta tiếp tục tải xuống public key của MongoDB và chuyển đổi nó sang định dạng gpg và cho phép Ubuntu truy cập và cài đặt các gói từ kho lưu trữ MongoDB với public key đã xác thực được tải xuống trước đó.

curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo apt-key add -
echo "deb https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/opensearch-2.x.list

Cập nhật lại danh sách gói.

sudo apt-get update

Mình cài đặt Opensearch phiên bản 2.5.0.

sudo apt-get install opensearch=2.5.0

Backup cấu file cấu hình opensearch.yml.

cp /etc/opensearch/opensearch.yml /home/opensearch.yml

Thay đổi thông tin file opensearch.yml bằng cách chạy script dưới.

sudo cat > /etc/opensearch/opensearch.yml << 'OEF'
cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.authcz.admin_dn:
  - CN=kirk,OU=client,O=client,L=test, C=de
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-ano
maly-detection-state", ".opendistro-reports-*", ".opensearch-notifications-*", ".opensearch-notebooks", ".opensearch-observability", ".opendistro-asynchronous-search-response*", ".replication-metadata-store"]
node.max_local_storage_nodes: 3
OEF

Tiếp tục vào file /etc/opensearch/jvm.options và thêm nội dung dưới nếu chưa có.

-Xms1g
-Xmx1g

Thiết lập giá trị vm.max_map_count trong bộ nhớ tạm thời (runtime). Thay đổi này chỉ có hiệu lực trong phiên làm việc hiện tại của hệ thống và sẽ mất đi khi bạn khởi động lại hệ thống.

sudo sysctl -w vm.max_map_count=262144

Thêm một dòng chứa vm.max_map_count=262144 vào file /etc/sysctl.conf. File này chứa cấu hình hệ thống cho các tham số kernel, và các giá trị được thêm vào file này sẽ có hiệu lực sau khi hệ thống khởi động lại.

sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf

Reload lại Deamon.

sudo systemctl daemon-reload

Khởi động và bật chế độ tự khởi động theo hệ thống cho OpenSearch.

sudo systemctl start opensearch.service
sudo systemctl enable opensearch.service

Kiểm tra lại trạng thái của OpenSearch.

$ sudo systemctl status opensearch.service
● opensearch.service - OpenSearch
     Loaded: loaded (/lib/systemd/system/opensearch.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-08-02 13:40:11 UTC; 31min ago
       Docs: https://opensearch.org/
   Main PID: 10750 (java)
      Tasks: 71 (limit: 4646)
     Memory: 1.2G
        CPU: 1min 3.060s
     CGroup: /system.slice/opensearch.service
             └─10750 /usr/share/opensearch/jdk/bin/java -Xshare:auto -Dopensearch.networkaddress.cache.ttl=60 -Dopensearch.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-Omit>

Bước 3 – Cài đặt Graylog.

Tải xuống gói dữ liệu (.deb) chứa thông tin kho lưu trữ (repository) của Graylog phiên bản 5.0 từ địa chỉ được cung cấp.

wget https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.deb

Cài đặt gói dữ liệu (.deb) đã tải xuống vào hệ thống bằng công cụ dpkg, giúp thêm kho lưu trữ Graylog vào danh sách kho lưu trữ của hệ thống.

sudo dpkg -i graylog-5.0-repository_latest.deb

Cập nhật thông tin về các gói có sẵn từ các kho lưu trữ và sau đó cài đặt gói graylog-server, tức là phần mềm máy chủ Graylog, từ kho lưu trữ đã được thêm vào.

sudo apt-get update && sudo apt-get install graylog-server 

Thêm hai thông tin bắt buộc là password_secretroot_password_sha2 vào file /etc/graylog/server/server.conf.

Tạo mật khẩu password_secretroot_password_sha2 như sau .

passwd=$(echo -n "hoanghd" | sha256sum | cut -d" " -f1)
sudo sed -i "s/password_secret =.*/password_secret = $passwd/" /etc/graylog/server/server.conf
sudo sed -i "s/root_password_sha2 =.*/root_password_sha2 = $passwd/" /etc/graylog/server/server.conf

Script trên sẽ đưa thông tin password_secretroot_password_sha2 vào /etc/graylog/server/server.conf như hình dưới nhé.

Thay đổi thông tin http_bind_address phù hợp với hệ thống của bạn.

sudo sed -i "s|#http_bind_address = 127.0.0.1:9000|http_bind_address = 192.168.13.181:9000|" /etc/graylog/server/server.conf

Hình dưới cho bạn tham khảo.

Reload lại Daemon.

sudo systemctl daemon-reload

Khởi động và bật chế độ tự khởi động theo hệ thống cho Graylog.

sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service

Xác nhận Graylog đã hoạt động.

$ sudo systemctl --type=service --state=active | grep graylog
  graylog-server.service                         loaded active running Graylog server

Bước 4 – Kiểm tra kết quả.

Truy cập vào http://<ipaddress>:9000 và login theo thông tin admin/hoanghd với hoanghd là password lúc nãy chúng ta đã tạo ở trên.

Và đây là kết quả khi login thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories