本專案係以2007-2009三年間某銷售資料,進一步以ELK做銷售分析,以圖表形式取得產品銷售情況。
環境需求
1.Ubuntu Server 22.04.4
2.ELASTICSEARCH 8.13.0
3.LOGSTASH 8.13.0
4.KIBANA 8.13.0
功能
1.以logstash設定日期與經緯度資料型態,並output至Elasticsearch再以Kibana進行分析。
2.用Kibana製作5張不同類型分析圖表的Dashboard,以此了解銷售情況。
環境設定安裝
- ELASTICSEARCH 離線安裝
- 1.下載/安裝ELASTICSEARCH
sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.5.3-amd64.deb
*如沒有安裝則使用:sudo dpkg -i elasticsearch-8.5.3-amd64.deb - 2.開啟Elasticsearch
sudo systemctl daemon-reload
sudo systemctl start elasticsearch - 3.確認是否可以進入Elasticsearch
網頁輸入: https://10.167.223.84:9200/ - 4.重置密碼Elasticsearch(設定密碼:(elastic)
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u elastic - 5.重置密碼kibana(設定密碼:elastic])
sudo /usr/share/elasticsearch/bin/elasticsearch-reset-password -i -u kibana_system
- 1.下載/安裝ELASTICSEARCH
- KIBANA 離線安裝
- 1.下載/安裝KIBANA
sudo wget https://artifacts.elastic.co/downloads/kibana/kibana-8.5.3-amd64.deb
dpkg -i kibana-8.5.3-amd64.deb
*如沒有安裝則使用:sudo dpkg -i kibana-8.5.3-amd64.deb - 2.重新啟動
systemctl start kibana - 3.確認是否可以進入kibana
網頁輸入: http://10.167.223.84:5601/ - 4.取得 Token 貼上kibana網頁
sudo /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana - 5.取得 驗證碼 貼上kibana網頁.
sudo /usr/share/kibana/bin/kibana-verification-code
*TOKEN 與驗證碼修改內容(如無法連線 最底下可以修改)
sudo vi /etc/kibana/kibana.yml
- 1.下載/安裝KIBANA
- LOGSTASH 離線安裝
- 1.下載/安裝LOGSTASH
sudo wget https://artifacts.elastic.co/downloads/logstash/logstash-8.5.3-amd64.deb
*如沒有安裝則使用:sudo dpkg -i logstash-8.5.3-amd64.deb - 2.重啟
sudo systemctl restart elasticsearch
- 1.下載/安裝LOGSTASH
KIBANA儀表板圖表製作
- 匯入銷售資料/圖表製作:
- 1.進入KIBANA的Data Visualizer匯入資料範例資料檔案下載
- 2.進入Discover,擴大搜尋資料範圍改成Last150 years即可看到匯入的全部資料
- 3.創建儀表板,拉入原始資料欄位創建圖表
- 儀錶板畫面呈現





Logstash設定日期與經緯度資料型態
- output至Elasticsearch:
- 1.建立conf設定檔(可參考網頁最底下)
- 2.使用指令啟動:/usr/share/logstash/bin/logstash –f /etc/logstash/環境變數.conf
- 儀錶板畫面呈現

conf設定檔內容(僅供參考,應依環境變數設定):
#sudo /usr/share/logstash/bin/logstash -f /etc/logstash/manual/hwhw.conf
input {
file {
path => "/home/jonas/Downloads/*data.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
# 設置檔案的編碼格式
codec => plain {
charset => "UTF-8"
}
}
}
filter {
# 解析 CSV 檔案
csv {
separator => ","
columns => ["UNIT" ,"AC-YEAR" ,"YEAR" ,"MONTH" , "YM","DEP","STORE","BRAND","SEASON","TYPE","QUALITY","SALES(K)","COST(K)","PRICE(K)","MARGIN(K)","ORIGEN", "Latitude", "Longitude"]
# 如果第一行是標頭,你可以設置為 true
# skip_header => true
}
# 設定日期欄位的資料型態
date {
match => ["YEAR", "YYYY年"]
target => "YEAR"
}
# 將經緯度欄位轉換為浮點數型態
mutate {
convert => { "QUALITY" => "integer" }
convert => { "SALES(K)" => "float" }
convert => { "COST(K)" => "float" }
convert => { "PRICE(K)" => "float" }
convert => { "MARGIN(K)" => "float" }
convert => { "Latitude" => "float" }
convert => { "Longitude" => "float" }
}
}
output {
elasticsearch {
hosts => ["https://localhost:9200"]
index => "hwhw"
ssl => true
ssl_certificate_verification => false
user => elastic
password=>"elastic"
}
stdout { codec => rubydebug }
}