Thứ sáu, 06/06/2014 | 00:00 GMT+7

Cách cài đặt Graylog2 và tập trung log trên Ubuntu 14.04

Trong hướng dẫn này, ta sẽ đề cập đến việc cài đặt Graylog2 (v0.20.2) và cấu hình nó để tập hợp các log hệ thống của ta ở một vị trí tập trung. Graylog2 là một công cụ phân tích và quản lý log mạnh mẽ có nhiều trường hợp sử dụng, từ theo dõi đăng nhập SSH và hoạt động bất thường cho đến gỡ lỗi ứng dụng. Nó dựa trên Elasticsearch, Java, MongoDB và Scala.

Lưu ý: Hướng dẫn này dành cho version Greylog2 đã lỗi thời. Đã có version mới tại đây: Cách cài đặt Graylog 1.x trên Ubuntu 14.04 .

Có thể sử dụng Graylog2 để thu thập và giám sát nhiều loại log , nhưng ta sẽ giới hạn phạm vi của hướng dẫn này là thu thập log hệ thống. Ngoài ra, vì ta đang trình bày những kiến thức cơ bản của Graylog2, ta sẽ cài đặt tất cả các thành phần trên một server duy nhất.

Giới thiệu về các thành phần Graylog2

Graylog2 có bốn thành phần chính:

  • Các node Server Graylog2: Hoạt động như một công nhân nhận và xử lý các thông báo, đồng thời giao tiếp với tất cả các thành phần không phải server khác. Hiệu suất của nó phụ thuộc vào CPU
  • Các node Elasticsearch : Lưu trữ tất cả log / tin nhắn. Hiệu suất của nó phụ thuộc vào RAM và đĩa I / O
  • MongoDB : Lưu trữ metadata và không tải nhiều
  • Giao diện Web : Giao diện user

Đây là sơ đồ của các thành phần Graylog2 ( lưu ý các thông báo được gửi từ các server khác của bạn):

 Cài đặt  Graylog2 cơ bản

Đối với một cài đặt rất cơ bản, tất cả các thành phần có thể được cài đặt trên cùng một server . Đối với cài đặt production lớn hơn, sẽ là khôn ngoan khi cài đặt một số tính năng có tính khả dụng cao vì nếu các thành phần server , Elasticsearch hoặc MongoDB gặp sự cố ngừng hoạt động, Graylog2 sẽ không thu thập các thông báo được tạo trong thời gian ngừng hoạt động.

Yêu cầu

Việc cài đặt được mô tả trong hướng dẫn này yêu cầu VPS Ubuntu 14.04 với ít nhất 2GB RAM. Bạn cũng cần quyền truy cập root (Các bước 1-4 của Cài đặt Server Ban đầu với Ubuntu 14.04 ).

Nếu bạn sử dụng VPS có RAM dưới 2GB, bạn sẽ không thể khởi động tất cả các thành phần Graylog2.

Hãy bắt đầu cài đặt phần mềm!

Cài đặt MongoDB

Việc cài đặt MongoDB rất đơn giản và nhanh chóng. Chạy lệnh sau để nhập khóa GPG công khai MongoDB thành apt:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10 

Tạo danh sách nguồn MongoDB:

echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list 

Cập nhật database gói apt của bạn:

sudo apt-get update 

Cài đặt version MongoDB ổn định mới nhất bằng lệnh này:

sudo apt-get install mongodb-org 

MongoDB sẽ được cài đặt và chạy ngay bây giờ. Hãy chuyển sang cài đặt Java 7.

Cài đặt Java 7

Elasticsearch yêu cầu Java 7, vì vậy ta sẽ cài đặt nó ngay bây giờ. Ta sẽ cài đặt Oracle Java 7 vì đó là những gì được khuyến khích trênasticsearch.org. Tuy nhiên, nó sẽ hoạt động tốt với OpenJDK, nếu bạn quyết định đi theo con đường đó.

Thêm Oracle Java PPA vào apt:

sudo add-apt-repository ppa:webupd8team/java 

Cập nhật database gói apt của bạn:

sudo apt-get update 

Cài đặt version ổn định mới nhất của Oracle Java 7 bằng lệnh này (và chấp nhận thỏa thuận cấp phép bật lên):

sudo apt-get install oracle-java7-installer 

Bây giờ Java 7 đã được cài đặt, hãy cài đặt Elasticsearch.

Cài đặt Elasticsearch

Graylog2 v0.20.2 yêu cầu Elasticsearch v.0.90.10. Download và cài đặt nó bằng các lệnh sau:

cd ~; wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.10.deb sudo dpkg -i elasticsearch-0.90.10.deb 

Ta cần thay đổi cài đặt Elasticsearch cluster.name . Mở file cấu hình Elasticsearch:

sudo vi /etc/elasticsearch/elasticsearch.yml 

Tìm phần chỉ định cluster.name . Bỏ ghi chú nó và thay thế giá trị mặc định bằng “graylog2”, vì vậy nó trông giống như sau:

cluster.name: graylog2 

Bạn cũng cần hạn chế quyền truy cập từ bên ngoài vào version Elasticsearch của bạn (cổng 9200), vì vậy người ngoài không thể đọc dữ liệu hoặc tắt cụm Elasticseach của bạn thông qua API HTTP. Tìm dòng chỉ định network.bind_host và bỏ ghi chú để nó trông giống như sau:

network.bind_host: localhost 

Sau đó, thêm dòng sau vào đâu đó trong file , để tắt các tập lệnh động:

script.disable_dynamic: true 

Lưu và thoát. Tiếp theo, khởi động lại Elasticsearch để các thay đổi của ta có hiệu lực:

sudo service elasticsearch restart 

Sau một vài giây, hãy chạy phần sau để kiểm tra xem Elasticsearch có chạy đúng cách không:

curl -XGET 'http://localhost:9200/_cluster/health?pretty=true' 

Bây giờ Elasticsearch đã được cài đặt và chạy, hãy cài đặt server Graylog2.

Cài đặt server Graylog2

Bây giờ ta đã cài đặt phần mềm cần thiết khác, hãy cài đặt server Graylog2. Ta sẽ cài đặt Server Graylog2 v0.20.2 trong / opt. Đầu tiên, hãy download repository Graylog2 để / opt bằng lệnh này:

cd /opt; sudo wget https://github.com/Graylog2/graylog2-server/releases/download/0.20.2/graylog2-server-0.20.2.tgz 

Sau đó extract repository :

sudo tar xvf graylog2-server-0.20.2.tgz 

Hãy tạo một softlink đến folder mới được tạo, để đơn giản hóa tên folder :

sudo ln -s graylog2-server-0.20.2 graylog2-server 

Sao chép file cấu hình ví dụ vào vị trí thích hợp, trong / etc:

sudo cp /opt/graylog2-server/graylog2.conf.example /etc/graylog2.conf 

Cài đặt pwgen, mà ta sẽ sử dụng để tạo khóa bí mật của password :

sudo apt-get install pwgen 

Bây giờ ta phải cấu hình password quản trị và khóa bí mật. Khóa bí mật của password được cấu hình trong graylog2.conf , bằng tham số password_secret . Ta có thể tạo một khóa ngẫu nhiên và chèn nó vào cấu hình Graylog2 bằng hai lệnh sau:

SECRET=$(pwgen -s 96 1) sudo -E sed -i -e 's/password_secret =.*/password_secret = '$SECRET'/' /etc/graylog2.conf 

Các password quản trị được gán bằng cách tạo ra một shasum của password mong muốn, và gán nó vào root_password_sha2 tham số trong file cấu hình Graylog2. Tạo password mong muốn của bạn bằng lệnh sau, thay thế "mật khẩu" được đánh dấu bằng của bạn . Lệnh sed sẽ chèn nó vào cấu hình Graylog2 cho bạn:

<pre>
PASSWORD = $ (echo -n <span class = “highlight”> password </span> | shasum -a 256 | awk '{print $ 1}')
sudo -E sed -i -e 's / root password sha2 =. * / root password sha2 =' $ PASSWORD '/' /etc/graylog2.conf
</pre>

Bây giờ password administrator đã được cài đặt , hãy mở cấu hình Graylog2 để thực hiện một số thay đổi:

sudo vi /etc/graylog2.conf 

Bạn sẽ thấy rằng password_secretroot_password_sha2 có các chuỗi ngẫu nhiên với chúng, do các lệnh bạn đã chạy trong các bước trên. Bây giờ ta sẽ cấu hình rest_transport_uri , đây là cách giao diện web Graylog2 sẽ giao tiếp với server . Vì ta đang cài đặt tất cả các thành phần trên một server duy nhất, hãy đặt giá trị thành 127.0.0.1 hoặc localhost. Tìm và bỏ ghi chú rest_transport_uri và thay đổi giá trị của nó để nó trông giống như sau:

<pre>
vận chuyển còn lại uri = http: // <span class = “highlight”> 127.0.0.1 </span>: 12900 /
</pre>

Tiếp theo, vì ta chỉ có một phân đoạn Elasticsearch (đang chạy trên server này), ta sẽ thay đổi giá trị elasticsearch_shards thành 1:

<pre>
asticsearch_shards = <span class = “highlight”> 1 </span>
</pre>

Lưu và thoát. Bây giờ server Graylog2 của ta đã được cấu hình và sẵn sàng khởi động.

Tùy chọn : Nếu bạn muốn kiểm tra, hãy chạy lệnh sau:

sudo java -jar /opt/graylog2-server/graylog2-server.jar --debug 

Bạn sẽ thấy rất nhiều kết quả . Khi bạn thấy kết quả tương tự như các dòng sau, bạn sẽ biết rằng server Graylog2 của bạn đã được cấu hình chính xác:

2014-06-06 14:16:13,420 INFO : org.graylog2.Core - Started REST API at <http://127.0.0.1:12900/> 2014-06-06 14:16:13,421 INFO : org.graylog2.Main - Graylog2 up and running. 

Nhấn CTRL-C để kết thúc kiểm tra và quay lại shell .

Bây giờ ta hãy cài đặt tập lệnh init Graylog2. Sao chép graylog2ctl vào /etc/init.d:

sudo cp /opt/graylog2-server/bin/graylog2ctl /etc/init.d/graylog2 

Cập nhật tập lệnh khởi động để đưa log Graylog2 vào /var/log và tìm kiếm file JAR server Graylog2 trong /opt/graylog2-server bằng cách chạy hai lệnh sed sau:

<pre>
sudo sed -i -e's / GRAYLOG2 SERVER JAR = \ $ {GRAYLOG2 SERVER JAR: = graylog2-server.jar} / GRAYLOG2 SERVER JAR = \ $ {GRAYLOG2 SERVER JAR: = <span class = “highlight”> \ / opt \ / graylog2-server \ / </span> greylog2-server.jar} / '/etc/init.d/graylog2
sudo sed -i -e 's / LOG FILE = \ $ {LOG FILE: = log \ /graylog2-server.log} / LOG FILE = \ $ {LOG FILE: = <span class = “highlight”> \ / var \ / log \ / </span> graylog2-server.log} / '/etc/init.d/graylog2
</pre>

Tiếp theo, cài đặt tập lệnh khởi động:

sudo update-rc.d graylog2 defaults 

Bây giờ ta có thể khởi động server Graylog2 bằng lệnh dịch vụ:

sudo service graylog2 start 

Bước tiếp theo là cài đặt giao diện web Graylog2. Hãy làm điều đó ngay bây giờ!

Cài đặt giao diện web Graylog2

Ta sẽ download và cài đặt giao diện web Graylog2 v.0.20.2 trong / opt bằng các lệnh sau:

cd /opt; sudo wget https://github.com/Graylog2/graylog2-web-interface/releases/download/0.20.2/graylog2-web-interface-0.20.2.tgz sudo tar xvf graylog2-web-interface-0.20.2.tgz 

Hãy tạo một softlink đến folder mới được tạo, để đơn giản hóa tên folder :

sudo ln -s graylog2-web-interface-0.20.2 graylog2-web-interface 

Tiếp theo, ta muốn cấu hình khóa bí mật của giao diện web, tham số application.secret trong graylog2-web-interface.conf . Ta sẽ tạo một khóa khác, như ta đã làm với cấu hình server Graylog2 và chèn nó bằng sed, như sau:

SECRET=$(pwgen -s 96 1) sudo -E sed -i -e 's/application\.secret=""/application\.secret="'$SECRET'"/' /opt/graylog2-web-interface/conf/graylog2-web-interface.conf 

Bây giờ hãy mở file cấu hình giao diện web bằng lệnh sau:

sudo vi /opt/graylog2-web-interface/conf/graylog2-web-interface.conf 

Bây giờ ta cần cập nhật cấu hình của giao diện web để chỉ định tham số graylog2-server.uris . Đây là danh sách được phân tách bằng dấu phẩy của các URI REST của server . Vì ta chỉ có một nút server Graylog2, nên giá trị phải trùng với giá trị của rest_listen_uri trong cấu hình server Graylog2 (tức là “ http://127.0.0.1:12900/” ).

<pre>
Graylog2-server.uris = “<span class =" highlight "> http://127.0.0.1:12900/ </span>“
</pre>

Giao diện web Graylog2 hiện đã được cấu hình . Hãy khởi động nó để kiểm tra:

sudo /opt/graylog2-web-interface-0.20.2/bin/graylog2-web-interface 

Bạn sẽ biết nó đã bắt đầu đúng cách khi bạn thấy hai dòng sau:

[info] play - Application started (Prod) [info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 

Nhấn CTRL-C để tắt giao diện web. Bây giờ hãy cài đặt một tập lệnh khởi động. Bạn có thể tạo của bạn hoặc download một cái mà tôi đã tạo cho hướng dẫn này. Để tải tập lệnh xuống folder chính của bạn, hãy sử dụng lệnh sau:

cd ~; wget https://assets.digitalocean.com/articles/graylog2/graylog2-web 

Tiếp theo, bạn cần sao chép nó vào /etc/init.d và thay đổi quyền sở hữu của nó thành root và các quyền của nó thành 755 :

sudo cp ~/graylog2-web /etc/init.d/ sudo chown root:root /etc/init.d/graylog2-web sudo chmod 755 /etc/init.d/graylog2-web 

Đến đây bạn có thể cài đặt tập lệnh init giao diện web bằng lệnh này:

sudo update-rc.d graylog2-web defaults 

Khởi động giao diện web Graylog2:

sudo service graylog2-web start 

Bây giờ ta có thể sử dụng giao diện web Graylog2. Hãy làm điều đó ngay bây giờ.

Cấu hình Graylog2 để nhận thông báo log hệ thống

Đăng nhập vào Giao diện Web Graylog2

Trong trình duyệt yêu thích của bạn, truy cập cổng 9000 của địa chỉ IP công cộng của VPS của bạn:

<pre>
http: // <span class = "highlight"> IP công cộng gl2 </span>: 9000 /
</pre>

Bạn sẽ thấy một màn hình đăng nhập. Nhập “admin” làm tên user của bạn và password là password quản trị mà bạn đã đặt trước đó.

Sau khi đăng nhập, bạn sẽ thấy như sau:

 Control panel  Graylog2

“1” màu đỏ nhấp nháy là một thông báo. Nếu bạn nhấp vào nó, bạn sẽ thấy một thông báo cho biết bạn có một nút mà không có bất kỳ đầu vào đang chạy nào. Hãy thêm đầu vào để nhận thông báo log hệ thống qua UDP ngay bây giờ.

Tạo đầu vào UDP Syslog

Để thêm đầu vào để nhận thông báo log hệ thống, hãy nhấp vào Đầu vào trong menu Hệ thống ở phía bên phải.

Bây giờ, từ menu thả xuống, chọn Syslog UDP và nhấp vào Chạy đầu vào mới .

Cửa sổ “ Chạy một đầu vào mới Syslog UDP ” sẽ bật lên. Nhập thông tin sau:

  • Tiêu đề: log hệ thống
  • Cổng : 514
  • Địa chỉ ràng buộc: gl2_private_IP

Sau đó nhấp vào Chạy .

Đến đây bạn sẽ thấy một đầu vào có tên “nhật ký hệ thống” trong phần Chạy đầu vào local (và nó sẽ có một hộp màu xanh lục cho biết “đang chạy” trong đó), như sau:

Đầu vào log  hệ thống Graylog

Bây giờ server Graylog2 của ta đã sẵn sàng nhận thông báo log hệ thống từ server của bạn. Hãy cấu hình server của ta để gửi thông báo log hệ thống của chúng đến Graylog2 ngay bây giờ.

Cấu hình rsyslog để gửi đến server Graylog2 của bạn

Trên tất cả các server mà bạn muốn gửi thông báo log hệ thống đến Graylog2, hãy thực hiện các bước sau.

Tạo file cấu hình log rsyslog trong /etc/rsyslog.d. Ta sẽ gọi 90-graylog2.conf ta :

sudo vi /etc/rsyslog.d/90-graylog2.conf 

Trong file này, hãy thêm các dòng sau để cấu hình rsyslog để gửi thông báo log hệ thống đến server Graylog2 của bạn (thay gl2_private_IP bằng địa chỉ IP riêng của server Graylog2 của bạn):

<pre>
$ template GRAYLOGRFC5424, “<% pri%>% protocol-version%% timestamp ::: date-rfc3339%% HOSTNAME%% app-name%% procid%% msg% \ n”
. @ <span class = “highlight”> IP riêng gl2 </span>: 514; GRAYLOGRFC5424
</pre>

Lưu và thoát. Tệp này sẽ được tải như một phần của cấu hình log rsyslog của bạn kể từ bây giờ. Đến đây bạn cần khởi động lại rsyslog để thay đổi có hiệu lực.

sudo service rsyslog restart 

Sau khi bạn hoàn tất cấu hình rsyslog trên tất cả các server mà bạn muốn theo dõi, hãy quay lại giao diện web Graylog2.

Xem các nguồn Graylog2 của bạn

Trong trình duyệt yêu thích của bạn, truy cập cổng 9000 của địa chỉ IP công cộng của VPS của bạn:

<pre>
http: // <span class = “highlight”> gl2 IP công cộng </span>: 9000 /
</pre>

Nhấp vào Nguồn ở thanh trên cùng. Bạn sẽ thấy danh sách tất cả các server mà bạn đã cấu hình rsyslog trên đó. Đây là một ví dụ về nó có thể trông như thế nào:

Nguồn Graylog2

Tên server của các nguồn nằm ở bên trái, với số lượng tin nhắn mà Graylog2 nhận được ở bên phải.

Tìm kiếm dữ liệu Graylog2 của bạn

Sau khi để Graylog2 của bạn thu thập tin nhắn một thời gian, bạn có thể tìm kiếm trong các tin nhắn. Ví dụ: hãy tìm kiếm “sshd” để xem loại hoạt động SSH nào đang diễn ra trên server của ta . Đây là một đoạn kết quả của ta :

Tìm kiếm ví dụ về Graylog2

Như bạn thấy , kết quả tìm kiếm mẫu của ta đã tiết lộ log sshd cho các server khác nhau và rất nhiều lần đăng nhập root không thành công. Kết quả của bạn có thể khác nhau, nhưng nó có thể giúp bạn xác định nhiều vấn đề, bao gồm cả cách user lạ đang cố gắng truy cập vào server của bạn.

Ngoài chức năng tìm kiếm cơ bản trên tất cả các nguồn của bạn, bạn có thể tìm kiếm log của một server lưu trữ cụ thể hoặc trong một khung thời gian cụ thể.

Tìm kiếm thông qua dữ liệu trong Graylog2 rất hữu ích, chẳng hạn, nếu bạn muốn xem lại log của một server hoặc một số server sau khi sự cố xảy ra. Ghi log tập trung giúp dễ dàng xác định các sự cố liên quan hơn vì bạn không cần phải đăng nhập vào nhiều server để xem tất cả các sự kiện đã xảy ra.

Để biết thêm thông tin về cách hoạt động của thanh tìm kiếm, hãy xem tài liệu chính thức: Giải thích về thanh tìm kiếm

Kết luận

Đến đây bạn đã cài đặt xong Graylog2, hãy thoải mái khám phá các chức năng khác mà nó cung cấp. Bạn có thể gửi các loại log khác vào Graylog2 và cài đặt trình extract (hoặc định dạng lại log bằng phần mềm như logstash) để làm cho log có cấu trúc hơn và có thể tìm kiếm được. Bạn cũng có thể xem xét mở rộng môi trường Graylog2 của bạn bằng cách tách các thành phần và thêm dự phòng để tăng hiệu suất và tính khả dụng.

Chúc may mắn!

<div class = “author”> Bởi Mitchell Anicas </div>


Tags:

Các tin liên quan

Cách cài đặt và cấu hình OpenLDAP và phpLDAPadmin trên server Ubuntu 14.04
2014-06-05
Cách cấu hình Collectd để thu thập số liệu hệ thống cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cấu hình StatsD để thu thập số liệu thống kê tùy ý cho Graphite trên Ubuntu 14.04
2014-06-03
Cách cài đặt OctoberCMS trên VPS chạy Ubuntu 14.04
2014-05-28
Cách cài đặt và sử dụng Graphite trên server Ubuntu 14.04
2014-05-27
Cách cài đặt và sử dụng Ack, một sự thay thế Grep cho các nhà phát triển, trên Ubuntu 14.04
2014-05-27
Cách sử dụng BitTorrent Sync để đồng bộ hóa các thư mục trong Ubuntu 14.04
2014-05-19
Cách sử dụng HAProxy làm bộ cân bằng tải lớp 4 cho server ứng dụng WordPress trên Ubuntu 14.04
2014-05-16
Cách sử dụng kpcli để quản lý tệp mật khẩu KeePass2 trên server Ubuntu 14.04
2014-05-16
Cách khởi chạy trang web của bạn trên server Ubuntu 14.04 mới với LAMP, SFTP và DNS
2014-05-13