Skip to content

huytm/Cai-dat-ELK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

Cai-dat-ELK

#Sử dụng ELK để thu thập log trên ubuntu 14.04 ####A. Mở đầu Bài viết này sử dụng logstash 1.4.2kibana3. Logstash là một opensoure tool dùng để thu thập, phân loại và lưu trữ log để sử dụng trong tương lai. Kibana 3 là web interface dùng để tìm kiếm và hiển thị log. Cả 2 công cụ này đều sử dụng dựa vào elasticsearch. Do đó Elasticsearch, Logstash, Kibana kết hợp với nhau tạo thành bộ công cụ ELK

Log tập trung rất có lợi cho việc khai thác các thông tin về máy chủ hoặc ứng dụng của bạn. như đã nói ở trên, logstash là công cụ để thu thập log. Có nhiều cách để chuyển tiếp log từ phía client lên ELK server tuy nhiên trong bài viết này mình giới hạn sử dụng rsyslog thuần túy.

Tóm gọn lại như sau:

  • Logstash xử lý các log đến
  • Elasticsearch lưu trữ tất cả các log
  • Kibana Web interface để tìm kiếm và hiển thị log
  • Rsyslog : Cài đặt phía client và sẽ gửi log đến logstash

Ba thành phần đầu tiên sẽ cài đặt trên 1 server, gọi là ELK server, Tại phía client sẽ sử dụng rsyslog để đẩy log đến server

Sử dụng ubuntu 14.04, lượng CPU, RAM và HDD phụ thuộc vào số lượng log mà máy chủ xử lý, trong bài viết này mình thu thập khoảng 1000 events/s nên RAM = 4Gb, CPU = 2


###B.Bắt đầu cài đặt

####TẠI SERVER

#####1. Cài đặt các gói bổ trợ

sudo apt-get install python-software-properties software-properties-common -y

#####2. Cài đặt JAVA 7 Elasticsearh và Logstash yêu cầu Java 7.

  • add repo
sudo add-apt-repository ppa:webupd8team/java -y
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections
echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections
  • Update packet

sudo apt-get update

  • Install bản stable của Oracle Java 7

sudo apt-get -q -y install oracle-java7-installer

  • Thiết lập môi trường

sudo bash -c "echo JAVA_HOME=/usr/lib/jvm/java-7-oracle/ >> /etc/environment"

  • Kiểm tra lại

java -version

#####3. Cài đặt Elasticsearch Note: Logstash 1.4.2 yêu cầu sử dụng Elasticsearch 1.1.1

Để cài đặt Elasticsearch 1.1.1 ta thực hiện các bước sau

  • import Elasticsearh public GPG key:

wget -O - http://packages.elasticsearch.org/GPG-KEY-elasticsearch | sudo apt-key add -

  • Tạo file Elastisearch source list:

echo 'deb http://packages.elasticsearch.org/elasticsearch/1.1/debian stable main' | sudo tee /etc/apt/sources.list.d/elasticsearch.list

  • Update packet:

sudo apt-get update

  • Install Elasticsearch bằng câu lệnh

sudo apt-get -y install elasticsearch=1.1.1

  • Cấu hình lại elasticsearch

sudo vi /etc/elasticsearch/elasticsearch.yml

  • Khởi động elasticsearch

sudo service elasticsearch restart

  • Để Elasticsearch khởi động cùng với server sử dụng lệnh sau

sudo update-rc.d elasticsearch defaults 95 10


#####4. Cài đặt Kibana Note: Logstash 1.4.2 khuyến cáo sử dụng kibana 3.0.1

  • Cài đặt các gói cần thiêt

apt-get install apache2 unzip -y

  • Download và extract kibana 3
cd ~; wget http://download.elasticsearch.org/kibana/kibana/kibana-latest.zip
unzip kibana-latest.zip
  • Tạo root folder và khởi động kibana webserver
sudo mkdir -p /var/www/kibana
sudo cp -R ~/kibana-latest/* /var/www/kibana/
  • Cấu hình kibana webserver
vi /etc/apache2/conf-enabled/kibana.conf
Alias /kibana /var/www/kibana
<Directory /var/www/kibana>
  Order allow,deny
  Allow from all
</Directory>
  • Khởi động lại apache2

sudo service apache2 restart

  • Cài đặt apache2-utils để xác thực user đăng nhập vào kibana
sudo apt -y install apache2-utils
vi /etc/apache2/sites-available/auth-basic.conf
<Directory /var/www/kibana>
    AuthType Basic
    AuthName "Basic Authentication"
    AuthUserFile /etc/apache2/.htpasswd
    require valid-user
</Directory>
  • Tạo user để đăng nhập ( tham số -c tức là add 1 user, nếu add user thứ 2 sẽ ghi đè lên user1. Muốn add nhiều user sử dụng tham số -b)
htpasswd -c /etc/apache2/.htpasswd admin
New password: # set password
Re-type new password: # confirm
Adding password for user admin
mkdir /var/www/html/auth-basic 
a2ensite auth-basic 
service apache2 reload
service apache2 restart

#####5. Cài đặt Logstash

  • Tạo file logstash source list:

echo 'deb http://packages.elasticsearch.org/logstash/1.4/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash.list

  • Update packet

sudo apt-get update

  • Cài đặt logstash

sudo apt-get install -y logstash=1.4.1-1-bd507eb --force-yes

  • Cấu hình logstash
input {
  tcp {
    port => 9292
    type => syslog
  }
  udp {
    port => 9292
    type => syslog
  }
}
filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    syslog_pri { }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}
output {
  elasticsearch { host => localhost }
  stdout { codec => rubydebug }
}

http://semicomplete.com/presentations/logstash-scale11x/images/tiered-outputs-to-inputs.jpg

Như đã nói ở các bài viêt trước, logstash xử lý log như sau: input => filer => output*

ở đây mình dùng input là syslog gửi qua tcp và udp sau đó putput vào elasticsearch để tiện cho việc lưu trữ và sử dụng sau này

  • Khởi động lại logstash

service logstash restart

####Tại phía client

  • Cấu hình rsyslog để đẩy log đến server

vi /etc/rsyslog.d/50-default.conf

  • add dòng sau vào cuối file
*.*         @@logstashserver:port
Ví dụ với mô hình của mình
*.* 	    @@172.16.69.210:9292 
  • Khởi động lại rsyslog

sudo service rsyslog restart

Truy cập vào địa chỉ http://IP_ELK_SERVER/kinana


Tham khảo

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published