ELK學習實驗013:ELK的一個完整的配置操作

前面做了關於ELK組件的各個實驗,但是並沒有真正的把各個組件結合起來做一個實驗,現在使用一個腳本簡單的生成日誌,模擬生產不斷產生日誌的效果

一 流程說明

使用腳本產生日誌,模擬用戶的操作

日誌的格式

[INFO]  2019-11-30 18:00:20 [cn.success.dashboard.Main] -DAU|5206|使用優惠卷|2019-11-30 18:20:23

日誌的格式時"DAU" + userID + "|" + visit + "|"  +date

通過Filebeat讀取日誌文件的內容,並將內容發送給Logstash,,原因時需要對內容做處理

Logstash接收到內容後,進行處理,如分割操作,然後將內容發送到 Elasticsearch中

Kiana會讀取 Elasticsearch中的數據,並且在 Kiana中進行設計 Dashboard,最後進行展示

後面的日誌格式,圖表,Dashboard都是自定義的

二 編一個日誌的腳本

爲了方便實驗,腳本很簡陋,只是一個輸入工具,沒有什麼實際作用

2.1 日誌內容如下

#!/bin/bash
visit_array=("瀏覽頁面" "評論商品"  "加入收藏" "加入購物車" "提交訂單" "使用優惠卷" "領取優惠卷" "搜索" "查看訂單")
visit_number=`head /dev/urandom | cksum | cut -c 1-1`
id_number=`head /dev/urandom | cksum | cut -c 1-4`
echo "[INFO] `date +%F` `date|awk '{print $4}'` [cn.success.dashboard.Main] - DAU|$id_number|${visit_array[$visit_number]}|`date +%F` `date|awk '{print $4}'`"

2.2 執行測試

簡單執行一下,看一下效果

[root@node4 ~]# sh /opt/logs.sh
[INFO] 2019-11-30 05:35:28 [cn.success.dashboard.Main] - DAU|3149|查看訂單|2019-11-30 05:35:28
[root@node4 ~]# sh /opt/logs.sh
[INFO] 2019-11-30 05:35:29 [cn.success.dashboard.Main] - DAU|2686|搜索|2019-11-30 05:35:29
[root@node4 ~]# sh /opt/logs.sh
[INFO] 2019-11-30 05:35:30 [cn.success.dashboard.Main] - DAU|2922|加入收藏|2019-11-30 05:35:30
[root@node4 ~]# sh /opt/logs.sh
[INFO] 2019-11-30 05:35:30 [cn.success.dashboard.Main] - DAU|1680|加入收藏|2019-11-30 05:35:30
[root@node4 ~]# sh /opt/logs.sh
[INFO] 2019-11-30 05:35:31 [cn.success.dashboard.Main] - DAU|1987|加入購物車|2019-11-30 05:35:31

2.3 實際操作

然後寫一個死循環,兩秒執行一次,把這個輸入一個日誌文件裏模擬

[root@node4 ~]# while 
> :
> do
> sh /opt/logs.sh >> /var/log/elk-test.log
> sleep 2
> done

2.4 查看效果

[root@node4 ~]# tail -f /var/log/elk-test.log 

[INFO] 2019-11-30 05:40:52 [cn.success.dashboard.Main] - DAU|2461|評論商品|2019-11-30 05:40:52
[INFO] 2019-11-30 05:40:54 [cn.success.dashboard.Main] - DAU|1463|加入購物車|2019-11-30 05:40:54
[INFO] 2019-11-30 05:40:56 [cn.success.dashboard.Main] - DAU|3408|加入收藏|2019-11-30 05:40:56
[INFO] 2019-11-30 05:40:58 [cn.success.dashboard.Main] - DAU|2821|加入收藏|2019-11-30 05:40:58
[INFO] 2019-11-30 05:41:00 [cn.success.dashboard.Main] - DAU|3630|加入購物車|2019-11-30 05:41:00
[INFO] 2019-11-30 05:41:02 [cn.success.dashboard.Main] - DAU|4136|加入購物車|2019-11-30 05:41:02
[INFO] 2019-11-30 05:41:05 [cn.success.dashboard.Main] - DAU|1673|加入收藏|2019-11-30 05:41:05
[INFO] 2019-11-30 05:41:07 [cn.success.dashboard.Main] - DAU|1073|評論商品|2019-11-30 05:41:07
[INFO] 2019-11-30 05:41:09 [cn.success.dashboard.Main] - DAU|3007|提交訂單|2019-11-30 05:41:09
[INFO] 2019-11-30 05:41:11 [cn.success.dashboard.Main] - DAU|2361|評論商品|2019-11-30 05:41:11
[INFO] 2019-11-30 05:41:13 [cn.success.dashboard.Main] - DAU|2634|加入收藏|2019-11-30 05:41:13
[INFO] 2019-11-30 05:41:15 [cn.success.dashboard.Main] - DAU|1799|加入購物車|2019-11-30 05:41:15
[INFO] 2019-11-30 05:41:17 [cn.success.dashboard.Main] - DAU|3545|評論商品|2019-11-30 05:41:17
[INFO] 2019-11-30 05:41:19 [cn.success.dashboard.Main] - DAU|3488||2019-11-30 05:41:19
[INFO] 2019-11-30 05:41:21 [cn.success.dashboard.Main] - DAU|1711|加入購物車|2019-11-30 05:41:21
[INFO] 2019-11-30 05:41:23 [cn.success.dashboard.Main] - DAU|5896|加入購物車|2019-11-30 05:41:23

基本達到一個日誌的效果

三 配置filebeat

[root@node4 ~]# cd /usr/local/filebeat/

[root@node4 filebeat]# vi elk-test.yml

filebeat.inputs:
- type: log
  enabled: true
  paths:
    -  /var/log/elk-test.log 
setup.template.settings:
  index.number_of_shards: 3
output.logstash:
  hosts: ["192.168.132.131:5044"]

四 配置logstash

4.1 初步配置

[root@node1 logstash]# vi elk-test.conf

input {
  beats{
  port => "5044"
  }
}
filter{
  mutate {
    split => {"message" => "|"}
  }
  mutate {
    add_field =>{
        "UserId" => "%{[message][1]}"
        "visit"  => "%{[message][2]}"
        "date"   => "%{[message][3]}"
        }
    }
}
output {
  stdout {codec => rubydebug}
}

先輸出到控制檯

[root@node1 logstash]# bin/logstash -f elk-test.conf

[2019-11-30T05:58:26,028][INFO ][org.logstash.beats.Server][main] Starting server on port: 5044
[2019-11-30T05:58:26,864][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}

root@node1 ~]# netstat -antlup|grep 5044

再啓動filebeat

[root@node4 filebeat]# ./filebeat -e -c elk-test.yml

查看控制檯的輸出情況

4.2 把數據進行格式化配置

[root@node1 ~]# vim /usr/local/logstash/elk-test.conf

input {
  beats{
  port => "5044"
  }
}
filter{
  mutate {
    split => {"message" => "|"}
  }
  mutate {
    add_field =>{
        "UserId" => "%{[message][1]}"
        "visit" => "%{[message][2]}"
        "DateTime" => "%{[message][3]}"
        }
    }
  mutate{
    convert => {
      "UserId" => "integer"
      "visit" => "string"
      "DateTime" => "string"
    }
  }
}
output {
  stdout {codec => rubydebug}
}

啓動再看

數據處理完成

4.3 數據傳到elasticsearch配置

[root@node1 logstash]# vim elk-test.conf

input {
  beats{
  port => "5044"
  }
}
filter{
  mutate {
    split => {"message" => "|"}
  }
  mutate {
    add_field =>{
        "UserId" => "%{[message][1]}"
        "visit" => "%{[message][2]}"
        "DateTime" => "%{[message][3]}"
        }
    }
  mutate{
    convert => {
      "UserId" => "integer"
      "visit" => "string"
      "DateTime" => "string"
    }
  }
}
output {
  elasticsearch{
    hosts => ["192.168.132.131:9200","192.168.132.132:9200","192.168.132.133:9200"]
  }
}

啓動

[root@node1 logstash]# bin/logstash -f elk-test.conf

使用elasticsearch head查看

4.4 ES查看原數據

這樣就把所有數據收集到elasticsearch上

五  kibana配置

5.1 創建index patten

 

5.2 實時顯示數據

5.3 創建一個以時間間隔的柱狀圖

詳細步驟可參考前面的自定義圖表https://www.cnblogs.com/zyxnhr/p/11954663.html

創建結果

保存

5.4 各個操作的餅圖分佈

添加一個餅圖,依然選擇logstash

 

左側過濾

添加一個lable

添加前後顯示效果

依次添加所有動作

添加完後效果

設置選項

結果如下

保存

5.5 添加一個數據表格

這樣顯示

在數據探索中進行保存,將各個操作的數據以表格的形式展示出來

5.6 製作dashboard

創建新的dashboard

調正一下界面。就可以得到下面的界面

調整名字

5.7 最終結果

保存

整個的實驗完成

參考: https://www.bilibili.com/video/av67957955?p=64

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