【官網最新版】ELK 6.4 實時日誌分析平臺部署

ELK簡介:

ELK是三個開源軟件的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟件。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat佔用資源少,適合於在各個服務器上搜集日誌後傳輸給Logstash,官方也推薦此工具。

Elasticsearch 是個開源分佈式搜索引擎,提供蒐集、分析、存儲數據三大功能。它的特點有:分佈式,零配置,自動發現,索引自動分片,索引副本機制,restful風格接口,多數據源,自動搜索負載等。

Logstash 主要是用來日誌的蒐集、分析、過濾日誌的工具,支持大量的數據獲取方式。一般工作方式爲c/s架構,client端安裝在需要收集日誌的主機上,server端負責將收到的各節點日誌進行過濾、修改等操作在一併發往elasticsearch上去。

Kibana 也是一個開源和免費的工具,Kibana可以爲 Logstash 和 ElasticSearch 提供的日誌分析友好的 Web 界面,可以幫助彙總、分析和搜索重要數據日誌。

Filebeat 隸屬於Beats。目前Beats包含四種工具:

  • Packetbeat(蒐集網絡流量數據)
  • Topbeat(蒐集系統、進程和文件系統級別的 CPU 和內存使用情況等數據)
  • Filebeat(蒐集文件數據)
  • Winlogbeat(蒐集 Windows 事件日誌數據)

官方文檔:
Filebeat:
https://www.elastic.co/cn/products/beats/filebeat

Logstash:
https://www.elastic.co/cn/products/logstash

Kibana:
https://www.elastic.co/cn/products/kibana

Elasticsearch:
https://www.elastic.co/cn/products/elasticsearch

elasticsearch中文社區:
https://elasticsearch.cn/

一般我們需要進行日誌分析場景:直接在日誌文件中 grep、awk 就可以獲得自己想要的信息。但在規模較大的場景中,此方法效率低下,面臨問題包括日誌量太大如何歸檔、文本搜索太慢怎麼辦、如何多維度查詢。需要集中化的日誌管理,所有服務器上的日誌收集彙總。常見解決思路是建立集中式日誌收集系統,將所有節點上的日誌統一收集,管理,訪問。

一般大型系統是一個分佈式部署的架構,不同的服務模塊部署在不同的服務器上,問題出現時,大部分情況需要根據問題暴露的關鍵信息,定位到具體的服務器和服務模塊,構建一套集中式日誌系統,可以提高定位問題的效率。

一個完整的集中式日誌系統,需要包含以下幾個主要特點:

  1. 收集-能夠採集多種來源的日誌數據
  2. 傳輸-能夠穩定的把日誌數據傳輸到中央系統
  3. 存儲-如何存儲日誌數據
  4. 分析-可以支持 UI 分析
  5. 警告-能夠提供錯誤報告,監控機制

ELK提供了一整套解決方案,並且都是開源軟件,之間互相配合使用,完美銜接,高效的滿足了很多場合的應用。目前主流的一種日誌系統。

系統環境

主機名 操作系統 IP地址 服務名
es centos7.4 192.168.96.85 elasticsearch 6.4.0、kibana 6.4.0、rsyslog
nginx centos7.4 192.168.96.60 elasticsearch 6.4.0、logstash-6.4.0
httpd centos7.4 192.168.96.86 elasticsearch 6.4.0、filebeat-6.4
客戶機 windows 10 192.168.96.2 網頁瀏覽器

以上所有服務器均關閉防火牆及SElinux功能

setenforece 0

systemctl stop firewalld

角色劃分:

  • 所有機器全部安裝jdk1.8,因爲elasticsearch是java開發的,全部安裝elasticsearch
  • es服務器作爲主節點
  • 三臺服務器均爲數據節點
  • es服務器上需要安裝kibana
  • es服務器上通過rsyslog收集日誌
  • nginx服務器上通過logstash收集日誌
  • httpd服務器上通過filebeat收集日誌

這裏分別使用了3種收集日誌的方法,官網建議選用filebeat,因爲輕量、高效

開始部署

es集羣(三臺服務器操作一致):

1. 編輯hosts文件

vim /etc/hosts

192.168.96.85 es
192.168.96.86 httpd
192.168.96.60 nginx

2. 安裝elasticsearch軟件包

# 導入key
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# 創建es倉庫源
vim /etc/yum.repos.d/elasticsearch.repo

[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# 安裝es軟件包
yum -y install elasticsearch

3.編輯es配置文件

vim /etc/elasticsearch/elasticsearch.yml

17 cluster.name: es-server
23 node.name: master
24 node.master: true
25 node.data: true
58 network.host: 0.0.0.0
62 http.port: 9200
71 discovery.zen.ping.unicast.hosts: ["192.168.96.85", "192.168.96.86","192.168.96.60"]

提醒:以上三臺es均安裝好後再將elasticsearch.yml配置文件發送到httpd、nginx服務器

scp /etc/elasticsearch/elasticsearch.yml httpd:/etc/elasticsearch/

scp /etc/elasticsearch/elasticsearch.yml nginx:/etc/elasticsearch/

下面分別修改httpd、nginx服務器上的elasticsearch配置文件

# httpd服務器:
vim /etc/elasticsearch/elasticsearch.yml

node.name: httpd
node.master: false

# nginx服務器:
vim /etc/elasticsearch/elasticsearch.yml

node.name: nginx
node.master: false

啓動elasticsearch服務,先啓動master、在啓動其他es服務

# es服務器:(先啓動master,在啓動其他es)
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

# nginx服務器:
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

# httpd服務器:
systemctl enable elasticsearch.service
systemctl start elasticsearch.service

【官網最新版】ELK 6.4 實時日誌分析平臺部署
【官網最新版】ELK 6.4 實時日誌分析平臺部署
【官網最新版】ELK 6.4 實時日誌分析平臺部署

es集羣的健康檢查:

http://192.168.96.85:9200/_cluster/health?pretty

【官網最新版】ELK 6.4 實時日誌分析平臺部署

es集羣的狀態查看:

http://192.168.96.85:9200/_cluster/state?pretty

【官網最新版】ELK 6.4 實時日誌分析平臺部署

至此,es集羣已經部署完成了


kibana(es服務器)

1. 安裝kibana

yum -y install kibana

2. 編輯kibana.yml配置文件

vim /etc/kibana/kibana.yml

2 server.port: 5601
7 server.host: "192.168.96.85"
28 elasticsearch.url: "http://192.168.96.85:9200"
96 logging.dest: /var/log/kibana.log

3. 創建kibana日誌文件

touch /var/log/kibana.log
chmod 777 /var/log/kibana.log

4. 啓動kibana服務

systemctl enable kibana
systemctl start kibana

5. 查詢kibana服務

[root@es ~]# netstat -tunlp | grep 5601
tcp        0      0 192.168.96.85:5601      0.0.0.0:*               LISTEN      2597/node

【官網最新版】ELK 6.4 實時日誌分析平臺部署

客戶機訪問kibana(http://192.168.96.85:5601)測試

【官網最新版】ELK 6.4 實時日誌分析平臺部署


收集系統日誌

1. 安裝logstach(暫不支持jdk1.9版本,這裏安裝的是jdk1.8)

yum install logstash -y

【官網最新版】ELK 6.4 實時日誌分析平臺部署

2. 配置logstash收集syslog系統日誌

vim /etc/rsyslog.conf

第91行
*.* @@192.168.96.85:10514

3. 重啓rsyslog服務

systemctl restart rsyslog

4.收集系統日誌(rsyslog收集日誌)

vim /etc/logstash/conf.d/syslog.conf

input {
  syslog {
    type => "system-syslog"
    port => 10514
  }
}

output {
  elasticsearch {
     hosts => ["192.168.96.85:9200"]            //es服務器ip地址
     index => "system-syslog-%{+YYYY.MM}"           //索引
  }
}

5.啓動logstash收集syslog日誌

./logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog.conf

【官網最新版】ELK 6.4 實時日誌分析平臺部署

6.通過客戶端瀏覽kibana(192.168.96.85:5601),頁面提醒設置索引

【官網最新版】ELK 6.4 實時日誌分析平臺部署

【官網最新版】ELK 6.4 實時日誌分析平臺部署
【官網最新版】ELK 6.4 實時日誌分析平臺部署


httpd服務器:(filebeat收集日誌)

1. 下載並安裝filebeat軟件包

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.0-x86_64.rpm

rpm -ivh filebeat-6.4.0-x86_64.rpm

2. 編輯filebeat配置文件

vim /etc/filebeat/filebeat.yml

#註釋掉下一行
#enabled: false

    paths:
    - /var/log/messages      //指定日誌路徑
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.96.85:9200"]     //指向es服務器

3. 啓動filebeat服務

systemctl enable filebeat
systemctl start filebeat

4. 查看filebeat進行信息

ps aux | grep filebeat

【官網最新版】ELK 6.4 實時日誌分析平臺部署

5. 查看索引信息

curl '192.168.96.85:9200/_cat/indices?v'

【官網最新版】ELK 6.4 實時日誌分析平臺部署


nginx服務器:(logstash收集日誌)

1.創建收集nginx日誌配置文件

vim /etc/logstash/conf.d/nginx.conf

input {
  file {
    path => "/var/log/logstash/elk_access.log"
    start_position => "beginning"
    type => "nginx"
  }
}

filter {
    grok {
        match => { "message" => "%{IPORHOST:http_host} %{IPORHOST:clientip} - %{USERNAME:remote_user} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:http_verb} %{NOTSPACE:http_request}(?: HTTP/%{NUMBER:http_version})?|%{DATA:raw_http_request})\" %{NUMBER:response} (?:%{NUMBER:bytes_read}|-) %{QS:referrer} %{QS:agent} %{QS:xforwardedfor} %{NUMBER:request_time:float}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
    stdout { codec => rubydebug }
    elasticsearch {
        hosts => ["192.168.96.85:9200"]     //es服務器ip
        index => "nginx-test-%{+YYYY.MM.dd}"
  }
}

2. 檢查配置文件是否有錯誤

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/nginx.conf --config.test_and_exit

【官網最新版】ELK 6.4 實時日誌分析平臺部署

3. 下面新增nginx虛擬主機配置指向kibana

vim /etc/nginx/conf.d/elk.conf

server {
      listen 80;
      server_name www.test.com;

      location / {
          proxy_pass      http://192.168.96.85:5601;
          proxy_set_header Host   $host;
          proxy_set_header X-Real-IP      $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }

      access_log  /var/log/logstash/elk_access.log main2;
}

4. 在nginx主配置文件中設置日誌格式,如下

log_format main2 '$http_host $remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$upstream_addr" $request_time';

【官網最新版】ELK 6.4 實時日誌分析平臺部署

5. 啓動logstash服務

systemctl enable logstash
systemctl start logstash

重啓nginx服務

systemctl restart nginx

開啓logstash收集nginx日誌

/usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/nginx.conf

客戶端訪問瀏覽kibana(192.168.96.85:5601)

【官網最新版】ELK 6.4 實時日誌分析平臺部署
【官網最新版】ELK 6.4 實時日誌分析平臺部署
【官網最新版】ELK 6.4 實時日誌分析平臺部署
【官網最新版】ELK 6.4 實時日誌分析平臺部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章