[喵咪BELK實戰(2)] elasticsearch+kibana搭建
[喵咪BELK實戰(2)] elasticsearch+kibana搭建
前言
上一節我們介紹了日誌系統和BELK之後就要到激動人心的安裝環境了,實踐出真知都知道日誌系統很重要只有把它搭建起來才有效果,那我們今天就來一同搭建 BELK 日誌系統中的elasticsearch+kibana來進行實時的索引線上檢視功能
附上:
喵了個咪的部落格:w-blog.cn
官網地址:https://www.elastic.co/cn/
1. 準備工作
BELK下載地址
- logstash : https://www.elastic.co/cn/downloads/logstash
- filebeat : https://www.elastic.co/downloads/beats/filebeat
- elasticsearch : https://www.elastic.co/cn/downloads/elasticsearch
- kibana : https://www.elastic.co/cn/downloads/kibana
筆者這裡的機器系統是centos6.8,使用BELK需要安裝jdk1.8以上(主要是elasticsearch依賴)
jdk1.8可以通過官網下載: Java SE Development Kit 8 - Downloads
tar -zxvf jdk-8u101-linux-x64.tar.gz mv jdk1.8.0_101/ /usr/local/jdk1.8 # 設定環境變數 vim /etc/profile # 加入如下內容 # java export JAVA_HOME=/usr/local/jdk1.8 export JRE_HOME=/usr/local/jdk1.8/jre export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$PATH # 使得環境變數生效 source /etc/profile # 列印java版本號 java -version # 看到如下輸出java環境安裝完成 java version "1.8.0_101" Java(TM) SE Runtime Environment (build 1.8.0_101-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
使用Supervisor進行程式常駐安裝可以參考筆者博文: 喵咪Liunx(1)計劃任務佇列指令碼後臺程序Supervisor幫你搞定 - 文振熙的個人空間
2. elasticsearch
elasticsearch是強大的索引程式,支援大量的資料索引查詢,使用JAVA編寫,缺點是太吃資源(CPU,記憶體)
2.1 安裝
首先我們安裝配置elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.tar.gz tar -zxvf elasticsearch-5.3.0.tar.gz mv elasticsearch-5.3.0 /usr/local/
此時就可以啟動elasticsearch了使用**/usr/local/elasticsearch-5.3.0/bin/elasticsearch** 就可以執行但是會得到如下異常:
[2017-04-27T15:12:06,495][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
主要原因是不能使用root使用者來執行elasticsearch, elasticsearch在默寫情況下可以直接對伺服器執行指令碼,出於安全性老老實實建立一個使用者:
groupadd esgroup
useradd esuser -g esgroup -p espassword
# 吧elasticsearch目錄的許可權賦予esuser
chown -R esuser:esgroup /usr/local/elasticsearch-5.3.0/
# 切換使用者執行
su esuser
看到如下資料表明elasticsearch可以正常執行:
[2017-04-27T15:15:12,291][INFO ][o.e.c.s.ClusterService ] [q-flXxl] new_master {q-flXxl}{q-flXxldTxWSCTqQn-Rjjg}{dXOgMmGISWyP5UB-_VPpjQ}{127.0.0.1}{127.0.0.1:9300}, reason: zen-disco-elected-as-master ([0] nodes joined)
[2017-04-27T15:15:12,312][INFO ][o.e.h.n.Netty4HttpServerTransport] [q-flXxl] publish_address {127.0.0.1:9200}, bound_addresses {127.0.0.1:9200}
[2017-04-27T15:15:12,315][INFO ][o.e.n.Node ] [q-flXxl] started
可以通過url呼叫的方式驗證服務是否可用
curl localhost:9200
# 會有如下輸出
{
"name" : "q-flXxl",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "vVx27KRfTR64Wc1NCwBO_Q",
"version" : {
"number" : "5.3.0",
"build_hash" : "3adb13b",
"build_date" : "2017-03-23T03:31:50.652Z",
"build_snapshot" : false,
"lucene_version" : "6.4.1"
},
"tagline" : "You Know, for Search"
}
2.2 警告解決
如果在輸出started之前還有一些[WARN]可以一一解決掉:
1.此警告是對於最大檔案開啟數量過少導致的
[2017-04-27T15:15:09,246][WARN ][o.e.b.BootstrapChecks ] [q-flXxl] max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
vi /etc/security/limits.conf
# 新增或修改如下內容:
* soft nofile 65536
* hard nofile 65536
2.此警告是對於最大虛擬記憶體過少導致的
[2017-04-27T15:15:09,246][WARN ][o.e.b.BootstrapChecks ] [q-flXxl] max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
vi /etc/sysctl.conf
# 新增下面配置:
vm.max_map_count=262144
# 執行
sysctl -p
3.在阿里雲伺服器上可能出現
[2017-04-27T15:15:09,246][WARN ][o.e.b.BootstrapChecks ] [q-flXxl] system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
# 編輯配置檔案
vim /usr/local/elasticsearch-5.3.0/config/elasticsearch.yml
bootstrap.system_call_filter: false
2.3 配置檔案
在配置檔案中有一些關鍵配置,編輯檔案/usr/local/elasticsearch-5.3.0/config/elasticsearch.yml
# 服務監聽IP地址
network.host: localhost
# 服務監聽埠
http.port: 9200
# 索引檔案和日誌檔案儲存地址預設是在安裝目錄
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
注意:elasticsearch沒有安全控制一定要限制內網才能使用,有elasticsearch被劫持勒索的事件
2.4 使用Supervisor執行
使用Supervisor常駐啟動修改配置檔案加入如下語句在重啟Supervisor就可以在後臺執行
[program:elasticsearch]
;你需要執行的語句
command=/usr/local/elasticsearch-5.3.0/bin/elasticsearch
;是否自動啟動
autostart=true
autorestart=true
;執行程式的使用者
user=esuser
3 kibana
kibana是一個使用elasticsearch 作為資料來源的 UI視覺化 查詢工具
3.1 安裝
kibana 安裝就相對簡單了很多
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.3.0-linux-x86_64.tar.gz
tar -zxvf kibana-5.3.0-linux-x86_64.tar.gz
mv kibana-5.3.0-linux-x86_64 /usr/local/kibana-5.3.0
預設kibana只能使用localhost進行訪問,需要修改配置檔案來允許外網訪問
vim /usr/local/kibana-5.3.0/config/kibana.yml
# 服務監聽埠預設5601
server.port: 5601
# 服務監聽IP段
server.host: "外網地址"
# 需要連線到elasticsearch的地址
elasticsearch.url: "http://localhost:9009"
然後使用外網地址就可以訪問了
但是現在elasticsearch還沒有資料所以也沒有辦法檢視檢索
3.2 對kibana進行許可權控制
細心的大家已經發現了登入kibana居然沒有任何的限制.... 那麼要怎麼辦呢? 這邊筆者建議使用nginx來進行許可權驗證 (Nginx安裝細節就不列舉出來了)
yum install httpd
# 建立使用者需要輸入密碼
htpasswd -c /usr/local/nginx/passwd.db kibanauser
chmod 400 /usr/local/nginx/passwd.db
chown -R www:www /usr/local/nginx/passwd.db
需要讓kibana配置檔案改回到localhost限制外網訪問之後在nginx加入如下配置:
server {
listen 8081;
server_name _;
location / {
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;
proxy_pass http://localhost:5601;
}
}
然後重啟nginx之後會發現老的5601無法訪問了,訪問8081埠會出現如下介面:
輸入之前配置好的使用者名稱密碼即可正常使用
3.3 使用Supervisor執行
使用Supervisor常駐啟動修改配置檔案加入如下語句在重啟Supervisor就可以在後臺執行
[program:kibana]
;你需要執行的語句
command=/usr/local/kibana-5.3.0/bin/kibana
;是否自動啟動
autostart=true
autorestart=true
;執行程式的使用者
user=root
4.建立測試資料
雖然還沒有logstash + filebeat來幫助採集資料但是我們可以先手動向elasticsearch中建立索引然後使用 kibana 進行檢視,先來了解一下elasticsearch常用API
# 檢視叢集狀態
curl 'localhost:9200/_cat/health?v'
# 檢視所有索引列表
curl 'localhost:9200/_cat/indices?v'
# 建立索引
curl -XPUT 'localhost:9200/索引名稱?pretty'
# 插入索引
curl -XPUT 'localhost:9200/索引名稱/TYPE名稱/ID名稱?pretty' -d '訊息體必須是JSON'
# 檢視索引
curl -XGET 'localhost:9200/索引名稱/TYPE名稱/ID名稱?pretty'
# 刪除縮影
curl -XDELETE 'localhost:9200/索引名稱?pretty'
我們試著建立一個索引並且寫入一條資料:
curl -XPUT 'localhost:9200/test-log-2017-4-28?pretty'
curl -XPUT 'localhost:9200/test-log-2017-4-28/log/1?pretty' -d '{"msg":"這是一條測試log"}'
然後在kibana中就可以查看了
總結
本節我們優先安裝並且比較完整的配置了elasticsearch+kibana 這樣一個索引和查詢系統,並且也瞭解了elasticsearch基本的使用方式,下一節將會結合日誌採集系統logstash + filebeat進行日誌採集傳輸到elasticsearch 讓 kibana 可以進行檢視,那麼今天的博文就到這裡我們下次再見...
注:筆者能力有限有說的不對的地方希望大家能夠指出,也希望多多交流!