文章

ELK查詢指令-類似where的搜索條件-文字搜索-前處理

前言 ELK對文字的處理方式分成兩種 使用分析器分析 不進行分析 可藉由改變欄位的類型讓ELK跳過文字分析的動作,這會改變搜索的方法 而預設中文分析後,全部沒有空白的中文字會是一個 token 第一種,使用分析器分析 ELK對文字(Text類型)會進行底下的動作,做完後塞到elasticsearch資料庫內 移除大部分的符號 把剩餘的文字切割成一個一個的字,這些字有個特殊的名字叫做 token 把 token 變成小寫 會進行這些動作是為了全文搜索,這也是elasticsearch的優點之一 通常透由 logstash 輸入的文字欄位都是 text,除非有特別寫一份template指定欄位類型 例如輸入的文字是 POST myindex/_doc {   "message": "He is your friend, trust me." } 會先把符號拿掉 He friend trust me 分割成字 [He, your, friend, trust, me] 變成小寫 [he, your, friend, trust, me] 上面五個字就是 token,在進行文字搜索時,只要比對到一個token就算比對成功 is 這類型的字會被分析器過濾掉,因為它們是 stop token 筆者不是文字分析師,對此表達不懂,大概就是介係詞會被移除掉 這邊有被移除的英文字清單 如果想要保留 is 這類的英文字,這邊 官方文章 有說明 現在elasticsearch有中文分析器 _cjk_,筆者還沒用過 要搜索到上面的文字只要找到其中一個token就好 GET myindex/_search {   "query": {     "match": {       "message": "me"     }   } } 第二種,不進行分析 (Keyword) 將資料型態變為 keyword,可以停止elasticsearch對特定欄位進行分析 常用在 email、地址、主機名稱、序號等,整串文字放在一起才有意義 也可以把數字變成 k

ELK查詢指令-類似where的搜索條件-數字和日期搜索

前言 在用MySQL時,常常會用到類似底下的語法 SELECT 'name', 'id' FROM 'mytable' WHERE name = 'myname' SELECT 'name', 'id' FROM 'mytable' WHERE id BETWEEN 10 AND 20 這邊牽涉到文字的比對和數字的比對 ELK在數字的比對,與SQL的思維很像,只是語法不同 但ELK在文字的比對有一些眉角在,需要先知道ELK怎麼處理文字,才能知道怎麼下條件 先從簡單的數字和日期比對開始 PS : 從這篇開始不會提到URL的部分,如想了解URL格式可 參考此文章 數字的比對 GET myindex/_search {   "query": {     "range": {       "欄位": {         "gte": "12",         "lt": "15"       }     }   } } 時間的比對 如果目標欄位的類型是 date,可以直接進行時間的搜索 GET myindex/_search {   "query": {     "range": {       "timestamp": {         "gt": "2020-03-02",         "le": "now-2h"       }     }   } } range 搜索一個範圍內的東西,包括數字、時間和文字 不建議使用range的方式搜索文字,elasticsearch實際上還是會對個別的可能性進行term搜索 gt 大於,不等於 gte 大於,等於 lt 小於,不等於 lte 小於,等於 日期運算方法有兩種 日期的加減 日期 + 時間 或 日期 - 時間 2

ELK查詢指令-index過濾

前言 ELK使用HTTP的POST方法送出查詢指令,使用URL位置作為查詢範圍,JSON格式內容作為過濾指令 測試的方法可以用Kibana的工具或postman,也可自己用程式撰寫或用curl 例如: http://127.0.0.1:9200/myindex/_search {   query: {     match_all: {}   } } curl指令為: curl -X POST http://127.0.0.1:9200/myindex/_search -d '{ query: { match_all: {} } }' 上面的範例會把myindex的全部資料搜索出來 這篇先簡單較介紹使用URL過濾index的方法 搜索的URL格式 URL的格式如下 http:// IP : Port / index名稱 / type /_search?額外的參數 IP 在elasticsearch的設定檔中 network.host 所設定的IP,也就是elasticsearch的服務IP Port elasticsearch設定檔的 http.port ,預設是9200 index名稱 就是index名稱,可以忽略不寫,代表全部index type 筆者沒用過type進行搜索,ELK 7 以後取消了type這個東西,可以省略不寫,代表全部的type 額外的參數: 有很多參數可以用,像是可以搜索已經close的index 詳細的參數可以看官方說明: 官方說明 PS : 底下的範例都沒有使用type,也就是全部的type都在搜索範圍 index過濾法 搜索單個index 如: http://127.0.0.1:9200/myindex/_search 指定多個index搜索 使用 , 符號分隔多個index 如: http://127.0.0.1:9200/myindex,goodindex,badindex/_search 搜索相同前綴的index 可以在URL的地方使用 * 符號(又稱為wildcard) 如: myindex-*,可以代表 myindex-20200203, myindex-20200204..... http

raspberry pi zero 初始設定

Raspberry Pi Zero 初始設定 使用 2019-09-26-raspbian-buster-lite 的官方映像檔 預設帳密 帳號: pi 密碼: raspberry 初始設定 請輸入底下指令 會進入互動選項的環境,根據底下的順序設定 sudo raspi-config 設定時區 I2 Change Timezone Asia Taipei 設定WIFI國別 PS : 這個不設定不能使用WIFI I4 Change Wi-fi Country TW Taiwan 設定WIFI帳密 2 Network Options N2 Wi-fi 輸入WIFI的SSID 輸入WIFI密碼 設定鍵盤 Layout PS : 預設鍵盤Layout會是 UK PS : 這個設定完要重開 4 Localisation Options I3 Change Keyboard Layout Generic 104-Key PC US English (US) No AltGr Key Left Logo Key 啟動SSH 5 Interfacing Options P2 SSH YES 完成初始設定,會詢問是否重開,建議選是 重新安裝vi 原始的 vi 很難使用,建議重新安裝vim 第一次update要等一段時間 sudo apt update sudo apt-get remove --purge vi sudo apt-get install vim 其他設定 WIFI也可使用底下方式設定 sudo vi /etc/wpa_supplicant/wpa_supplicant.conf 底下的設定為最低限度設定 ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=TW network={         ssid="foo"         psk="1234567890123" } 重啟wpa連線工具 sudo wpa_cli reconfigure

markdown快速筆記

git的README.rd可以使用一個特殊的語法,稱為markdown 其用意是簡化書寫README的方法,而不用<H1><H1/>這樣的HTML語法書寫 線上markdown,可以用這個網站即時看到書寫的結果 https://stackedit.io/app# # Title # H1 ## H2 ### H3 # Title End # H1 # ## H2 # ### H3 # # 引用 > 一層引用 >> 二層引用 # 斜體 *AA* # 粗體 **AA** # 清單 * A * B * C # 縮排清單 * A   * B     * C # 序號 1. A 2. B 3. C # 程式碼 (前面加上四個空白)<br /> (與前一行要一個空行)<br />     function()         AA + BB         return A # 行內程式碼 AA `function()` BB # 分隔號 ↓ - - - ↑ # 超連結 [連結名稱](http://example.com "連結文字,移到連結上面產生的文字") # 參考形式的超連結 你可以使用[google][a]或是[yahoo][b]連到入口網站 [a]: http://www.google.cpm "Google網站" [b]: http://tw.yahoo.com "奇摩網站" # 圖片 ![Alt text](/path/to/img.jpg "Optional title") # 參考形式的圖片 ![Alt text][id] [id]: url/to/image  "Optional title attribute"

MySQL個人手札-Database

設定檔位置 ubuntu 16 18 mariadb 10.1.37 /etc/mysql/mariadb.conf.d/50-server.cnf mysql 8.0 /etc/mysql/conf.d/mysql.cnf centos7 mysql /etc/my.cnf 建立Database ( [ ] 中跨號代表可以有無 ) CREATE DATABASE [IF NOT EXISTS] db_name [ [DEFAULT] CHARACTER SET [=] charset_name ] [ [DEFAULT] COLLATE [=] collation_name ] IF NOT EXISTS - 如果Database不存在,就建立新的Database (如果沒有上面的指令,且Database已存在,mariaDB會報錯) [DEFAULT] CHARACTER SET - Database裡面的Table預設會使用的字集,也就是文字的二進位編碼 [DEFAULT] COLLATE - 儲存的文字的排序方法 (末碼為 ci 帶表不分大小寫,AaBbCcDdEe) (末碼為 cs 帶表區分大小寫,ABCDEabcde) (末碼為 bin 處理的單位事二進位) CHARACTER SET 建議用 utf8mb4,可以儲存emoji COLLATE 建議用 utf8mb4_bin 範例: CREATE DATABASE IF NOT EXISTS testDB DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_bin; 修改資料庫的CHARACTER和COLLATE ALTER DATABASE db_name DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_bin; 顯示全部Database SHOW DATABASES; 顯示DATABASE的CHARACTER和COLLATE SHOW CREATE DATABASE db_name; 顯示預設的資料庫ENGINE (現在都預設 INNODB) SHOW VARIABLES LIKE 'storage_engine'; 顯示全部支援的ENGINE 在support

Fortigate link-monitor 類似 IP SLA

Fortigate也有類似Cisco IP SLA 的功能,叫做 link-monitor 以前Fortigate有GUI,後來只剩下CLI。 link-monitor,可以監控介面和Ping對方位置,如果Ping不到,會認定這條線路不能用而變更路由。 這個功能可以在不使用WAN Loadbalance的狀況下,使多條WAN可以做為備援。 與WAN Load Balance不同的是,WAN Load Balance是屬於 Active Active Mode,而link-monitor是 Active Passive Mode。 設定方法: config system link-monitor  #進到link-monitor設定模式   edit wan1                 #建立或修改link-monitor,名稱可以自行設定,建議與介面名相同     set srcintf wan1        #設定要被監控的介面,Ping封包會從這個介面出去     set gateway-ip 123.123.123.123 #Gateway位置,用來轉送Ping封包用     set server 168.95.1.1   #要Ping的位置,建議用對方的gateway     set source-ip 123.1.1.1 #Ping封包的來源IP,可以不設定,預設會用監控介面的IP     set protocol ping       #設定ping的方法,方法有http和ping     set interval 3          #兩次發送Ping封包的間隔,單位秒,預設 5     set timeout 1           #Ping封包的tiemout時間,單位秒,預設 1     set failtime 3          #掉封包幾次,會認定線路不能用,預設 5     set recoverytime 5      #當線路是"不能用"的狀態時,連續Ping到幾次才會恢復,預設 5     set update-cascade-interface disable #當不能用時,同時會讓介面shutdown     set update-static-rou

raspberryPI + strongswan 建立自己的VPN伺服器

紅色字 - 重要訊息,須多加注意 綠色字 - 指令 (裡面的指令無須在意工作目錄) (須使用root角色執行命令或再前面加上 sudo) 環境介紹 raspberry 3 B+,使用內建的WIFI連線,沒有使用實體網路線 raspberry的IP為 192.168.10.100 作業系統用raspbian,2018 12月 使用小米AP WAN的部分使用PPPOE LAN的部分設定為192.168.10.1 設定 UDP 500和UDP 4500兩個對應到raspberry (連接阜轉發,外對內NAT,DMZ,依照AP品牌名字不一樣) 使用的手機是小米note5 前置作業 建議先更新到最新,並且確定WIFI每次重開機IP都依樣且會自動連線 安裝相關軟體 apt-get install strongswan libcharon-extra-plugins libstrongswan-extra-plugins strongswan-ike strongswan-pki 建立VPN伺服器憑證 有兩種建立方法,兩種則ㄧ 1. 用 ipsec pki 工具 建立VPN伺服器憑證私鑰 ipsec pki --gen --type rsa --size 2048 --outform pem > /etc/ipsec.d/private/vpnHostKey.pem 建立VPN伺服器憑證公鑰 這邊一次建立10年 第五行的部分可以依照個人狀況修改 C=代表國家縮寫, O=組織名稱, OU=組織內的單位, CN=伺服器的FQDN名稱 下一行的san同CN ipsec pki --pub --in /etc/ipsec.d/private/vpnHostKey.pem --type rsa | \  ipsec pki --issue --lifetime 3650 \    --cacert /etc/ipsec.d/certs/strongswanCert.pem \    --cakey /etc/ipsec.d/private/strongswanKey.pem \    --dn "C=TW, O=YourCompanyName, OU=IT, CN= vpn.MyCo