一、安裝部署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的日志信息