Upload
mark-dai
View
422
Download
2
Embed Size (px)
Citation preview
今天來幹嘛?
來賺講師費的
今天來幹嘛?來教大家寫一點點程式蒐集並觀測社群媒體資訊
巨量資料處理與分析
隨手可得的巨量資料莫過於社群媒體
順帶一提:今天只講處理不講分析
今天的主角 量大 好抓 好開放
Elasticsearch LogstashKibana
0.今天的主角ELK
ELK 簡介
Elasticsearch◈ 開放源碼索引資料庫◈ 多語系斷詞外掛◈ 全文檢索搜尋◈ 跨機器叢集倉儲◈ 內建HA
Logstash◈ 資料解析與轉送◈ 可接收49種來源資訊◈ 可輸出至56種目的地◈ 提供42種常見資料中
介處理方式
Kibana◈ Elasticsearch視覺化
呈現界面◈ 快速觀察資料內容◈ 8種實用圖表◈ 自由搭建報表系統◈ 即時更新呈現內容
事前準備
◈ 下載 JDK 8http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
◈ 下載 Elasticsearchhttps://www.elastic.co/downloads/elasticsearch
◈ 下載 Logstashhttps://www.elastic.co/downloads/logstash
◈ 下載 Kibanahttps://www.elastic.co/downloads/kibana
◈ 確認 Twitter Key
實作步驟
蒐集關鍵字安裝
ElasticsearchLogstash 介接資料
Kibana 建立觀察版面
Elasticsearch LogstashKibana
1.Elasticsearch
Elasticsearch 簡介
◈ Elasticsearch = Lucene + REST api◈ 建立索引以達到快速查詢資料
1 , Mark , 25 , Taipei2 , Eric , 30 , Taipei3 , Lucas , 25 , Taipei
Name ID
Mark 1
Eric 2
Lucas 3
Age ID
25 1,3
30 2
City ID
Taipei 1,2,3
IndexID Name Age City
1 Mark 25 Taipei
2 Eric 30 Taipei
3 Lucas 25 Taipei
DB
Elasticsearch 簡介
◈ JSON based的儲存格式◈ 容易表達結構化的階層式資料◈ 不須先定義欄位(schema free)
Elasticsearch 簡介
◈ 叢集架構易於擴張與備份◈ Replica Set◈ Shard
Sharding 機制
◈ 分散儲存資料機制◈ 資料分散成不同區塊儲存◈ 分散存取加速運算
Data1
Data2
Data1
Data2
Node1
Node3
Data3
Data3
Node2Data
Replica 機制
◈ 重複儲存機制◈ 把每份資料複製一份以上◈ 避免叢集間機器損壞導致資料遺失
Data1
Data2
Data2
Data3
Data3
Data1
Node1
Node2
Node3
Data1
Data2
Data2
Data3
Node1
Node2
Shard機制
◈ REST api 方便資料管理URI分為3個區塊
Localhost:9200 / index / type / id分別對應傳統資料庫的
DB / table / primary key
傳統SQL資料庫 Elasticsearch
DB Index
Table Type
Primary key Id
Row Document
Column ( Schema ) Field
介紹完了,來安裝吧
安裝JAVA
◈ 安裝不難 , 重點在設定JAVA_HOME
安裝JAVA
◈ 安裝不難 , 重點在設定JAVA_HOME
修改設定檔
◈ Cluster Name◈ 檔案在 /config/elasticsearch.yml
# ---------------------------------- Cluster -----------------------------------## Use a descriptive name for your cluster:## cluster.name: my-application#
# ---------------------------------- Cluster -----------------------------------## Use a descriptive name for your cluster:#cluster.name: MarkES#
解壓縮,執行 Elasticsearch
◈ 使用 cmd 執行 elasticsearch.bat
確認有沒有執行成功
來個圖形界面吧
◈ 安裝 Head 圖形化界面 plugin.bat install mobz/elasticsearch-head
確認是剛剛打的名字
Elasticsearch LogstashKibana
2.Logstash
Logstash 簡介
◈ Logstash 三大組成
• file, exec, http, tcp, syslog• rss, TwitterInput
• grok, csv, json, key-value • date, geoip, Filter
• file, zip, tcp, stdout• elasticsearch, solr, redis Output
Logstash 簡介
◈ Logstash 多執行序設定
• threads or workers 參數• redis, Input
• 執行時加入-w參數Filter
• workers 參數• elasticsearch, solr, redis Output
Logstash 簡介
◈ threads + workers = CPU 核心數◈ 官方效能檢測:https://github.com/elastic/logstash-performance-testing/blob/master/README.md
◈ 非官方效能檢測:https://gist.github.com/paulczar/4513552
Logstash 業界使用情境
Logstash 業界使用情境
Logstash 業界使用情境
Logstash 基本使用
◈ 撰寫設定檔stdinStandard input就是鍵盤輸入拉
stdoutStandard output就是螢幕輸出拉
Logstash 基本使用
◈ 執行程式囉◈ logstash.bat agent –f simple.config
輸入的東西被直接輸出並且帶有時間及電腦名稱
Logstash 基本使用
◈ 但真正的輸出長相並非如此 ◈ 修改 simple.config
CodecCode & decode在這邊就是解碼囉
Logstash 基本使用
◈ 執行程式囉◈ logstash.bat agent –f simple.config
輸出其實是有欄位的!!
Logstash 基本使用
◈ 來吃看看檔案◈ 先下載範例日誌http://www.monitorware.com/en/logsamples/apache.php
Logstash 基本使用
◈ 來吃看看檔案◈ 吃檔案設定檔撰寫
Sincedb存放檔案讀取的進度
Logstash 基本使用
◈ 執行程式囉◈ logstash.bat agent –f apacheLog.config
欄位沒有被正確解析!!
Logstash 基本使用
◈ 撰寫 Filter◈ 使用 grok 解析日誌◈ https://grokdebug.herokuapp.com/
Logstash 基本使用
◈ 有Filter的設定檔
Logstash 基本使用
◈ 執行結果
欄位被正確解析囉 :)
Logstash 基本使用
◈ 其實不用這麼麻煩….
因為是標準APACHE Log才可以這樣噢
如何成為 Twitter 開發人員
◈ 註冊 Twitter 帳號◈ 一定要認證手機◈ 隨便完成註冊:)
如何成為 Twitter 開發人員
◈ 進入 Apps 管理頁面◈ https://apps.twitter.com/◈ Create New App !!
如何成為 Twitter 開發人員
◈ 輸入基本資料
不能跟別人重複
不能少於10個字
如何成為 Twitter 開發人員
◈ 取得授權 Token
如何成為 Twitter 開發人員
◈ 取得授權 Token
如何成為 Twitter 開發人員
◈ 取得授權 Token保留以下四個欄位的值Consumer KeyConsumer SecretAccess TokenAccess Token Secret
Logstash 與 Twitter
◈ input Twitter
設定關鍵字與語系
填入剛剛的內容
Logstash 與 Twitter
◈ 開始接收資料
Logstash 與 Twitter
◈ 撰寫儲存資料◈ Elasticsearch Output
設定取得完整的Tweet內容
Logstash 與 Twitter
◈ 查看搜集完成的資料
修改template
◈ 整理 twitter 文章地理資訊格式◈ 把不該斷詞的欄位設定為不斷詞◈ 把該拿掉的字拿掉(stopwords)
Logstash 補充說明
◈ 多個 Input 就要開啟多個 Logstash 嗎使用 type 參數區隔多個來源◈ 可以實作 Multi-forwarding 嗎?支援同時多種輸出管道
Logstash 補充說明
輸入時設定type參數
輸出時辨識以作區隔
Logstash 補充說明
輸入時設定type參數
也可做同內容多個輸出
Elasticsearch LogstashKibana
3.Kibana
事前準備
◈ 必須要裝好 Elasticsearch 版本 > 1.4.4
◈ Elasticsearch 裡面必須有資料 最好跟時間有關係 如果能跟地理位置有關那更好
Kibana 簡介
◈ 先運行起來◈ Kibana/bin/kibana.bat◈ http://localhost:5601
控制列介紹
◈ 功能區塊分成四大部份
看資料用的區塊
處理視覺化呈現
將視覺化區塊排版
資料來源設定
資料來源設定
◈ 勾選資料中有時間資訊
輸入index名稱twitter
辨識時間欄位@timestamp
時間設定
◈ 設定顯示資料的時間區間
時間設定
◈ 設定 Auto refresh◈ 固定時間畫面自動刷新◈ 顯示最新資料
Discover
◈ 快速掌握資料內容 Search區可下關鍵字查詢
時間軸區立即確認資料在時間的分布情形
原始資料區立即確認資料實際上的內容
Discover
◈ 快速掌握資料內容
欄位選擇區1. 確認欄位型態2. 修改原始資料
區顯示內容
地理位置時間字串
布林值數值
Discover
◈ 稍微下個關鍵字
Discover
◈ 稍微下個關鍵字
沒有iPhone阿….
Discover
◈ 多叫出一個欄位[retweeted_status.source]
Discover
◈ 更精準的關鍵字◈ 指定 text 欄位
Discover
◈ 儲存 Search
Visualize
Visualize
◈ 看看今天的目標
Visualize
◈ 看看今天的目標
Metric Metric Metric Markdown
Areachart
Linechart
Vertical Barchart
TileMap
Piechart
Datatable
Datatable
Visualize
◈ Metric◈ 單一統計數值◈ 配合 Search 做條件篩選
= tweet only search + count
Visualize
◈ Markdown◈ 增加描述文字 ◈ 用 Markdown 語法撰寫文字
#關鍵字: iPhone---------------* 觀察時間 : 2016/03/04* 觀察者 : Mark Dai
Visualize
◈ Area chart◈ 常用於畫堆疊圖◈ 利用 filter 堆疊不同的結果
Retweet =>retweeted_status.source:*Tweet =>NOT retweeted_status.source:*
Visualize
◈ Bar chart◈ 就長條圖◈ 利用 Date Histogram 做出時間軸
X軸 = @timestamp
Visualize
◈ Line chart◈ 就折線圖◈ 利用 term 分隔不同的結果
Split line : place.country.raw AND Top 5
Visualize
◈ Data table◈ 多層統計數值◈ 類似SQL Group By 的效果◈ 下載CSV
Visualize
◈ Pie chart◈ 可以做多層的圓餅圖
內圈:國家外圈:地點
Visualize
◈ Tile map◈ 在地圖上打點◈ 要配合專屬格式 : geo point
“快完成了,最後一步了
組個嚇人的儀表板!
Dashboard
◈ 你的圖都準備好了嗎?
Dashboard
◈ 選擇要加入的圖 ( 當然是全部囉 ! )
Dashboard
◈ 點完會變成這樣….◈ 拉一拉調整一下囉
Dashboard
◈ 調整完會變這樣
Dashboard
◈ 按下設定,套用黑色,質感再升級
◈ 辛苦做完別忘了儲存喔
Dashboard
◈ 可以下關鍵字對全文檢索◈ 也可按任意圖表加入篩選條件◈ 整個Dashboard篩選都是連動的喔
啟用篩選 | 釘選 | 反向選擇 | 刪除 | 修改條件