###### tags: `cycu` `walsin` `elastic` `grafana` --- author: 黃怡萍 --- # 利用 log 畫出日常觀測儀表板 slide: https://hackmd.io/@xDPShmd5RuSn8AzgAUwB5A/BkyjLBAFP --- ![](https://www.innovue.ltd/Pages/img/logo.svg) - 黃怡萍 - 產品開發部 副理 - yipein@innovue.ltd - https://www.innovue.ltd --- ### Agenda - 工具介紹 - elasticsearch - cerebro - grafana - docker - 環境安裝與部署 - 實作 - import data to elasticsearch - 製作儀表板 --- ![](data:image/png;base64,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) - https://www.elastic.co/ --- - [What is Elasticsearch?](https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html) - 分散式資料庫 - 海量資料檢索快速 - 檢索引擎 - 分析引擎 - 資料儲存格式: JSON --- ### 集中式資料庫系統 (Centralized Database, CDB) ![](https://images.stockfeel.com.tw/stockfeelimage/2019/04/unnamed-file.jpg) --- ### 分散式資料庫系統(Distributed Database, DDB) ![](https://images.stockfeel.com.tw/stockfeelimage/2019/04/unnamed-file-1.jpg) --- ### 分散式資料庫系統優點 - 增加資料庫系統的執行效能 - 提高可靠性和可用性 - 更多的彈性和擴充性 --- ### 分散式資料庫系統缺點 - 系統複雜成本高 - 缺乏標準維護不易 --- ### JSON 格式 * JSON(JavaScript Object Notation,JavaScript物件表示法) ```json= { "user" : "kimchy", "post_date" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" } ``` --- ### cerebro - cerebro is an open source(MIT License) `elasticsearch web admin tool` built using Scala, Play Framework, AngularJS and Bootstrap. - https://github.com/lmenezes/cerebro --- ![](https://www.neteye-blog.com/wp-content/uploads/2017/12/Grafana.png) - https://grafana.com/grafana/ --- - Grafana 是一个通用的可視化圖表工具 - 支援多種資料庫來源 - 通過 Dashboard 組織及管理資料的可視化圖表 - 支援圖表權限管理 --- ![](https://miro.medium.com/max/336/0*7pLYtIrRNXSsER2M.png) - https://www.docker.com/ --- - 一致性的發佈環境 - 可攜性發佈 - 在同一台機器運行更多的工作 - 基礎設施即代碼(Infrastructure as Code)及軟體定義網路 - reference - https://tw.alphacamp.co/blog/docker-introduction --- ### 環境安裝與部署 --- - download `docker-compose.yml` file from github - https://github.com/yipein/estools - save file to `walsin` folder in `Documents` --- * 開啟 `Windows Powershell` 應用程式 ```shell= # switch folder to walsin cd .\Documents\walsin # list files dir # distribute servies docker-compose up -d ``` --- ### 安裝過程 ```shell= yipein@Anneys-MBP> ~/gitRepo/dockers/walsin > docker-compose up -d Pulling es (docker.elastic.co/elasticsearch/elasticsearch:7.10.0)... 7.10.0: Pulling from elasticsearch/elasticsearch e320e40c33f8: Extracting [====> ] 8.356MB/84.39MB be0367056981: Download complete 67e849725737: Download complete 2689ab201ca3: Downloading [===========> ] 82.65MB/345.7MB 054ab54cebfb: Download complete 4e6ca8ea18d1: Download complete 033f0d2daef0: Download complete 3e873ca10c18: Download complete 19c868cd4818: Download complete ``` --- ### 完成安裝 ```shell= latest: Pulling from lmenezes/cerebro 8559a31e96f4: Pull complete 65306eca6b8e: Pull complete ddbf88050b6e: Pull complete 0cb03c61bf26: Pull complete 872b276b18ca: Pull complete Digest: sha256:229e776839833fcfb21dac39bb2bd89d59fdb8cdb322036cb15e6cba6e4e5199 Status: Downloaded newer image for lmenezes/cerebro:latest Creating walsin_grafana_1 ... done Creating walsin_cerebro_1 ... done Creating walsin_es_1 ... done yipein@Anneys-MBP> ~/gitRepo/dockers/walsin> ``` --- ### 確認是否完成安裝 * cerebro: http://localhost:9000 * elastic: http://localhost:9200 * grafana: http://localhost:3000 * uid/pwd: `admin` / `12345678` --- ### cerebro connect to elastic - input: `http://es:9200` --- ## import data to elastic - open `cerebro` and connect to `http://es:9200` - click `rest` tab on top menu bar 1. `_bulk` 2. change method from `GET` to `POST` 3. copy text from `sample-data-batchid.json`, `sample-data-telemetry.json` and paste to `textarea` --- ## check data - click `overview` tab on the top menu - `sample-statistics-2020.11` index --- ## 資料設計 - `_id`: 唯一值 - `timestamp`: 保留每筆資料的存入時間 --- ## ES 展示 - insert doc - delete doc - query - sort - aggregation --- ## Sample 資料分析 ```json= { "name": "meter01", "location": "xinzhuang", "from": "log", "value": 995, "mpm": 16, "max": 995, "min": 979, "start": 979, "end": 995, "doc_count": 50, "timestamp": "2020-11-22T15:59:00Z", "received": "2020-11-22T15:59:00Z", "reset": false, "previousvalue": 979, // -- from mes system "batchid": "M170505039", "pid": "CS05170512230303", "pnum": "SS732401", "pdesc": "61/2.3mm(250mm2)圓壓軟銅絞線", "expectwidth": 3000, "actualwidth": 3030, "remainingmeter": 30, "mesmpm": 15, "weght": 6682.76, "IsWorkingHours": true } ``` --- ## 製作儀表板 - grafana: `http://localhost:3000` - Add data source - Add dashboard --- ## Add data source - Type: `Elasticsearch` - Name: `sample-st` - HTTP - Url: `http://es:9200` - Elasticsearch details - Index name: `sample-statistics-2020.11` - Pattern: `No pattern` - Time field name: `received` - Version: `7.0+` --- ## Add dashboard - 計米速度統計圖 - 平均製米速度 --- ### Add `計米速度統計圖` - 1 - Add Panel - Quey - `+mpm:>=0 +mpm:<30` - Metric - `Average` - `value` - Group by - `Date Histogram` - `received` - inverval: `1m` - Alias: `計米 (m)` --- ### Add `計米速度統計圖` - 2 - Settings - Visualization - Graph - Display - Stacking and null value: `null as zero` - Legend - Axes --- ### Add `計米速度統計圖` - 3 - Quey - `+mpm:>=0 +mpm:<30` - Metric - `Average` - `mpm` - Group by - `Date Histogram` - `received` - inverval: `1m` - Alias: `速度 (m/min)` --- ### Add `計米速度統計圖` - 4 - Series overrides - Alias or regex: - `速度 (m/min)` - `Y-axis`: 2 - Axes - Left Y and Right Y: `Lebel`, `Unit` --- ### Add `平均製米速度` -1 - Add Panel - Metric - `Average` - `mpm` - Group by - `Date Histogram` - `received` - inverval: `1m` --- ### Add `平均製米速度` - 2 - Settings - Visualization - Gauge - Display - enable `Show threshold labels` - Field/Standard - Unit: `Length -> meter` - Field/Thresholds --- ### Thank you! :sheep:
{"metaMigratedAt":"2023-06-15T15:47:12.827Z","metaMigratedFrom":"Content","title":"利用 log 畫出日常觀測儀表板","breaks":true,"contributors":"[{\"id\":\"c433d286-6779-46e4-a7f0-0ce0014c01e4\",\"add\":17781,\"del\":6025}]"}
    328 views