ELK之二----kibana部署及logstash單(多)日志收集


一、安裝部署Kibana插件

Kibana官網下載地址:https://www.elastic.co/cn/downloads/past-releases#kibana

1、介紹

kibana 是您走進 Elastic Stack 的窗口,Kibana 讓您能夠可視化 Elasticsearch 中的數據並操作Elastic Stack,因此您可以在這里解開任何疑問:例如,為何會在凌晨 2:00 被傳呼,雨水會對季度數據造成怎樣的影響。

① 一張圖片勝過千萬行日志

  Kibana 讓您能夠自由地選擇如何呈現您的數據。或許您一開始並不知道自己想要什么。不過借助Kibana 的交互式可視化,您可以先從一個問題出發,看看能夠從中發現些什么。

② 從基礎入手

  Kibana 核心搭載了一批經典功能:柱狀圖、線狀圖、餅圖、環形圖,等等。它們充分利用了Elasticsearch 的聚合功能。

③ 將地理數據融入任何地圖

  利用我們的 Elastic Maps Services 來實現地理空間數據的可視化,或者發揮創意,在您自己的地圖上實現自定義位置數據的可視化。

④ 時間序列也在菜單之列

  您可以利用 Timelion,對您 Elasticsearch 中的數據執行高級時間序列分析。您可以利用功能強大、簡單易學的表達式來描述查詢、轉換和可視化。

⑤ 利用 graph 功能探索關系

  憑借搜索引擎的相關性功能,結合 graph 探索,揭示您 Elasticsearch 數據中極其常見的關系。

2、安裝部署kibana

1、下載kibaba安裝包並安裝

[root@elk-1 ~]# yum install kibana-6.8.1-x86_64.rpm -y

2、修改kibana配置文件/etc/kibana/kibana.yml

server.port: 5601  # 默認的監聽端口5601
server.host: "0.0.0.0"  # 監聽的IP地址
elasticsearch.hosts: ["http://192.168.7.101:9200"]  # 對端elasticsearch集群主機的IP地址
i18n.locale: "zh-CN"          # 添加此項支持漢化版

3、在另一台集群主機安裝kibana,並修改對端的elasticsearch主機配置文件,將hosts的IP地址指向另一台集群的elasticsearch主機的IP地址。

server.port: 5601  # 默認的監聽端口5601
server.host: "0.0.0.0"  # 監聽的IP地址
elasticsearch.hosts: ["http://192.168.7.100:9200"]  # 對端elasticsearch集群主機的IP地址
i18n.locale: "zh-CN"          # 添加此項支持漢化版

4、啟動kibana服務,並設置為開機啟動

[root@elk-1 ~]# systemctl start kibana
[root@elk-1 ~]# systemctl enable  kibana

5、查看訪問的頁面:192.168.7.100:5601,實際訪問的是192.168.7.101主機的信息,同理訪問192.168.7.101:5601,訪問的就是192.168.7.100主機的信息。

二、管理kibana

1、添加數據到kibana

1、我們先開創建一個示例數據,查看是否集群能夠同步數據:在kibana--->添加指標數據------>樣例數據,進行添加數據

 2、查看兩個網頁的數據是否存在,點擊Discover,查看192.168.7.100有數距

3、查看192.168.7.101,也存在數據,此時就已經實現了集群備份的功能。

4、登陸head插件,此時也可以看到兩個集群上的數據信息

4、在elasticsearch主機上查看創建的數據

[root@elk-1 ~]# ll /data/esdata/nodes/0/indices/
total 0
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 2XedLDp7Sym8HNzdF8pGTQ
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 ASx4EO3lSkuXndRlcWNB5g
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 di2WPFxNTNOAjx8-XcKxWw
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 jfOVaC5STCmKYudya7paMg
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 QeV47qM9Q0unbIAjQVqHTQ

5、在elasticsearch集群主機上查看數據

[root@elk-2 ~]# ll /data/esdata/nodes/0/indices/
total 0
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 2XedLDp7Sym8HNzdF8pGTQ
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 ASx4EO3lSkuXndRlcWNB5g
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 di2WPFxNTNOAjx8-XcKxWw
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 jfOVaC5STCmKYudya7paMg
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 QeV47qM9Q0unbIAjQVqHTQ

2、管理索引

1、此時刪除數據,一定要在管理界面刪除,不能在elasticsearch主機上刪除數據,否則會導致數據不同步。

 2、刪除一個數據后,然后在elasticsearch兩個主機集群分布上查看信息,兩個集群的內容都剩五個文件。

[root@elk-2 ~]# ll /data/esdata/nodes/0/indices/
total 0
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 95saCfoiSKKdFgNcZTxD1g
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 AD9HqYcQQ0Czds0Rwc9k-A
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:36 hPSzBwspRuycvSp8886DbA
drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 r5BNakB1Q6-WUgcLL1eMug

三、安裝部署logstash

1、介紹

(1)定義

查看官方文檔 https://www.elastic.co/cn/products/logstash

① 官方介紹:Logstash is an open source data collection engine with real-time pipelining capabilities。簡單來說logstash就是一根具備實時數據傳輸能力的管道,負責將數據信息從管道的輸入端傳輸到管道的輸出端;與此同時這根管道還可以讓你根據自己的需求在中間加上濾網,Logstash提供里很多功能強大的濾網以滿足你的各種應用場景。

 

② Logstash的事件(logstash將數據流中等每一條數據稱之為一個event)處理流水線有三個主要角色完成:inputs –> filters –> outputs:

  • inpust:必須(標准輸入),負責產生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
  • filters:可選,負責數據處理與轉換(filters modify them),常用:grok、mutate、drop、clone、geoip
  • output:必須(標准輸出),負責數據輸出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd

2、安裝JDK並配置JDK環境變量

1、logstash也依賴於java-JDK包,因此我們也要將jdk安裝到logstash主機上。

[root@logstash src]# tar  xvf jdk-8u212-linux-x64.tar.gz   # 解壓jdk包
[root@logstash src]# ln -sv /usr/local/src/jdk
jdk1.8.0_212/               jdk-8u212-linux-x64.tar.gz   
[root@logstash src]# ln -sv /usr/local/src/jdk1.8.0_212/ /usr/local/jdk  # 創建jdk軟鏈接
‘/usr/local/jdk’ -> ‘/usr/local/src/jdk1.8.0_212/’
[root@logstash src]# ln -sv /usr/local/jdk/bin/java /usr/bin/  # 創建java軟鏈接
‘/usr/bin/java’ -> ‘/usr/local/jdk/bin/java’

2、配置JAVA-JDK的環境變量

[root@logstash src]# vim /etc/profile.d/jdk.sh  # 配置環境變量
export HISTTIMEFORMAT="%F %T `whoami`"
export export LANG="en_US.utf-8"
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
[root@logstash src]# . /etc/profile.d/jdk.sh  # 使環境變量生效
[root@logstash src]# java -version  #查看JAVA版本
java version "1.8.0_212"
Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
[root@logstash src]# echo $JAVA_HOME  #查看此時的JDK環境變量路徑
/usr/local/jdk

3、安裝logstash

官網下載路徑:https://www.elastic.co/cn/downloads/logstash

1、安裝logstash包,logstash需要的內存也很大,根據實際來設置,我這里分配3G內存

[root@logstash src]# yum install logstash-6.8.1.rpm -y  # 安裝logstash
[root@logstash ~]# chown logstash.logstash /usr/share/logstash/data/queue/ -R  #權限更改為 logstash 用戶和組,否則啟動的時候日志報錯

2、指定logstash的環境變量

[root@logstash conf.d]# vim /etc/profile.d/logstash.sh
export PATH=$PATH:/usr/share/logstash/bin/

[root@logstash conf.d]# . /etc/profile.d/logstash.sh

4、開啟logstash前,測試logstash

實例一:標准輸入和標准輸出測試

[root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input {  stdin{} } output{ stdout { codec => rubydebug }}'  # 安裝完logstash時,需要對logstash進行測試
hello  #輸入一個hello
{
          "host" => "logstash", #主機名
       "message" => "hello",   #輸入的消息
      "@version" => "1",  # 版本
    "@timestamp" => 2020-03-12T06:44:48.693Z  #當前時間
}

實例二:測試輸入數據

[root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { file { path => "/tmp/linux.txt"}}'
hello

此時的hello信息就會輸入到/tmp/linux.txt文件中

{"@timestamp":"2020-03-12T06:54:46.889Z","host":"logstash","@version":"1","message":"hello"}

實例三:測試輸出到elasticsearch

[root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["http://192.168.7.100:9200"] index => "linux-test-%{+YYYY.MM.dd}"}}'

hello

此時可以在head插件的網頁上查看創建的文件

然后在kibana網頁上查看此時創建的文件:管理---->索引模式----->創建索引模式

下一步:

 2、然后就可以在discover能查看到自己創建的文件信息

 實例四:收集單系統日志並輸出至文件

1、在/etc/logstash/conf.d目錄下創建一個收集/var/log/messages的系統日志文件:linux.conf

[root@logstash conf.d]# pwd
/etc/logstash/conf.d
[root@logstash conf.d]# vim linux.conf 
input {
  file {
   path => "/var/log/messages"
   start_position => "beginning"
   stat_interval => 3  # 間隔時間3s.
   type => "messagelog"
  }

}

output {
  elasticsearch {
    hosts => ["192.168.7.100:9200"]
    index => "messagelog-7-100-%{+YYYY.MM.dd}"
  }

  #stdout {
  #codec => "rubydebug" #最開始測試輸入輸出使用
  #}

}

2、測試語法是否存在問題

[root@logstash conf.d]# logstash -f /etc/logstash/conf.d/linux.conf  -t
WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults
Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console
[WARN ] 2020-03-12 16:09:51.259 [LogStash::Runner] multilocal - Ignoring the 'pipelines.yml' file because modules or command line options are specified
Configuration OK  #測試語法,顯示OK,說明沒問題。
[INFO ] 2020-03-12 16:10:04.705 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash

3、由於/var/log/messages只有root的屬主有讀寫權限,需要將此文件的權限改為644,使文件在普通用戶啟動logstash時,有讀取的權限

[root@logstash conf.d]# chmod 644 /var/log/messages 
[root@logstash conf.d]# ll /var/log/messages 
-rw-r--r--. 1 root root 1101911 Mar 12 16:21 /var/log/messages

4、啟動logstash服務

[root@logstash conf.d]# systemctl start logstash  #啟動logstash服務
[root@logstash conf.d]# logstash -f linux.conf   # 執行編輯的logstash收集日志的文件

可以看到logstash已經啟動起來。

5、查看elasticsearch網頁上收集到的messages日志信息:管理---->索引模式---->創建索引模式-

 6、然后在discover上進行查看此時的日志文件信息

 實例五:收集多日志並輸出至文件

1、在logstash主機上安裝nginx服務,並啟動

[root@logstash conf.d]# yum install nginx -y
[root@logstash conf.d]# chmod 644 /var/log/nginx/access.log 
[root@logstash conf.d]# systemctl start nginx

2、修改logstash的配置文件

[root@logstash conf.d]# pwd
/etc/logstash/conf.d

[root@logstash conf.d]# vim linux.conf
  file {
   path => "/var/log/messages"
   start_position => "beginning"
   stat_interval => 3
   type => "messagelog"
  }

  file {
   path => "/var/log/nginx/access.log"
   start_position => "beginning"
   stat_interval => 3
   type => "nginx-log"
  }

}

output {
  if [type] == "messagelog" {
    elasticsearch {
    hosts => ["192.168.7.100:9200"]
    index => "messagelog-7-100-%{+YYYY.MM.dd}"
  }}

  if [type] == "nginx-log" {
    elasticsearch {
    hosts => ["192.168.7.100:9200"]
    index => "nginx-log-7-100-%{+YYYY.MM.dd}"
  }}
}

3、修改完以上的配置文件,重新啟動logstash服務:systemctl  restart  logstash

  測試配置文件是否正常,顯示OK就說明提取log沒問題

4、執行修改的配置文件,顯示successfuliy,說明執行文件正常。

[root@logstash conf.d]# logstash -f linux.conf 

5、在kibana網頁上查看此時添加的nginx-log日志收集文件,創建索引模式

6、在discover選項查看此時已經存在了nginx-log的日志信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM