ELK開發日記(1) - Elastic 7.2.0 自動啓動, Mysql批量導入, 用戶鑑權, SSL通訊, 中文拼音分詞

最近給本身的平臺作搜索系統服務,發現了ELK這個寶貝,先佔個坑,一邊學一邊寫點心得

1、開發路徑

1.部署ElasticSearch爲系統服務

  • 下載v7.2.0 Debian安裝包,小於7.2.0版本沒法無償使用該功能
  • 下載地址:https://www.elastic.co/downlo...
  • 拷貝至服務器,執行dpkg -i elasticsearch-7.2.0-amd64.deb 安裝
  • 如需外網訪問,配置/etc/elasticsearch.yml文件以下:
cluster.name: your_cluster # 集羣名字
node.name: yout_node_1 # 節點名稱,多個節點能夠採用_1,_2,_3等後綴方便管理
network.host: 127.0.0.1 # ES工做IP地址,默認localhost屏蔽遠程
http.port: 9200 # ES工做端口,默認9200
discovery.seed_hosts: ["127.0.0.1"] # 節點發現IP,初始推薦與工做IP相同
http.cors.enabled: true # 啓用跨域請求策略
http.cors.allow-origin: "*"
http.cors.allow-headers: X-Requested-With, X-Auth-Token, Content-Type, Content-Length, Authorization
http.cors.allow-credentials: true
  • 調用 service elasticsearch start或systemctl start elasticsearch.service啓動
  • 也能夠登陸非root帳戶,調用 ./bin/elasticsearch -d -p pid
  • 如啓動失敗,檢查/etc/elasticsearch,/var/log/elasticsearch,/var/lib/elasticsearch三個文件夾是否屬於elasticsearch用戶
  • 若使用自定義用戶運行,則修改以上三個文件夾的全部者爲你使用的用戶
  • 若仍啓動失敗,修改/usr/lib/systemd/system/elasticsearch.service文件:
User=cosloli # 改成當前使用的用戶
Group=cosloli # 改成當前所在的用戶組
  • 測試: GET http://es.host.name:9200
  • 返回結果以下則配置成功:

注意!記得在服務器安全策略中配置9200,9100,5601,1358,5044端口容許訪問node

2.啓用HTTP基本鑑權(Basic Authorization)

  • 進入es安裝目錄
  • 調用bin/elasticsearch-setup-passwords interactive 初始化各個預置帳戶的密碼
  • 初始化成功後,配置/etc/elasticsearch/elasticsearch.yml以下:
xpack.security.enabled: true
  • 測試訪問:GET http://es.host.name:9200 ,配置成功將返回401 (Unauthorized)錯誤
  • 開啓鑑權後,使用腳本通訊的話,須要在請求頭部配置Authorization字段:
# Authorization字段值經過Base64編碼生成,js可調用:btoa(‘username:password’)
request.header[‘Authorization’] = ‘Basic Y0EtqzNzX129zTpQA2FbG9sa’
  • 使用瀏覽器的話,直接在彈出的對話框輸入用戶名密碼便可

3.啓用SSL通訊

  • 申請SSL證書,儘可能避免使用自簽名證書,容易被瀏覽器攔截
  • 拷貝證書到/etc/elasticsearch/certs/
  • 配置/etc/elasticsearch/elasticsearch.yml以下:
# 啓用節點間SSL傳輸
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
# 工做域名的ssl密鑰
xpack.security.transport.ssl.key: certs/your.ssl.cert.key
# 工做域名的ssl證書,證書鏈可能不完整,請參閱下方提示!!!!!
xpack.security.transport.ssl.certificate: certs/your.ssl.cert_chain.crt

# 啓用服務器https通訊
xpack.security.http.ssl.enabled: true
# 工做域名的ssl密鑰
xpack.security.http.ssl.key: certs/your.ssl.cert.key
# 工做域名的ssl證書,證書鏈可能不完整,請參閱下方提示!!!!!
xpack.security.http.ssl.certificate: certs/your.ssl.cert_chain.crt
  • 經過openssl s_client -connect host:9200 -showcerts查看證書鏈信息,應返回0(ok)

注意! 證書鏈不完整可能致使被瀏覽器識別爲不安全的文件!儘可能不要使用自簽名證書!可在網上申請免費的SSL證書,部署時將公鑰證書和證書鏈合併成一個crt文件做爲certification文件,不懂原理不要緊,直接用notepad++將兩段密鑰放在一塊兒就能夠,先證書後證書鏈。mysql

4.經過postman, dejavu, es-head訪問es(可跳過直接看5)

5.部署kibana訪問可視化ES查詢+分析+管理界面

6.ik中文分詞器

  • 自動安裝,使用如下命令直接從GitHub安裝插件(網速略慢):
./bin/elasticsearch-plugin install http://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
  • 手動安裝,下載zip文件到本地,拷貝到./elasticsearch/plugins/ik/目錄
  • 進入ik目錄,調用unzip elasticsearch-analysis-ik-7.2.0.zip解壓

7.pinyin拼音分詞器

8.從mysql導入數據到es

  • 注意:導入時設置mapping

9.部署filebeat採集日誌

  • 下載後使用dpkg -i filebeat-7.2.0-amd64.deb安裝,配置filebeat.yml的輸出地址,若是啓用監聽的程序均使用默認位置安裝,能夠直接經過filebeat module enable自動啓動各個所需模塊,無需手動配置輸入
  • 使用filebeat setup -e初始化環境
  • 使用service filebeat start開始採集各個日誌文件
  • 請謹慎配置elasticsearch.gcelasticsearch.deprecate模塊,數據量爆炸多,請考慮本身的硬盤夠不夠用

10.部署LogStash

2、手動命令合集:

  • 進入es目錄:cd /usr/share/elasticsearch
  • 前臺啓動es:./bin/elasticsearch
  • 後臺啓動es:./bin/elasticsearch -d -p pid
  • 手動重啓es:
pkill -F pid
bin/elasticsearch -d -p pid
  • 手動啓動filebeat:
./bin/filebeat -e \
-c /etc/filebeat/filebeat.yml \
-path.home /usr/share/filebeat \
-path.config /etc/filebeat \
-path.data /var/lib/filebeat \
-path.logs /var/log/filebeat
相關文章
相關標籤/搜索