EFK操作說明 == 注意 TASK_4327_20181206 舊版的kubenetes符合efk yml設定,安裝請先進入此branch ## 原理 1. container輸出的log,以-json.log命名方式存在/var/lib/log/containers目錄底下 2. 在各node上運行fluentd服務(同logstash),採集所在節點/var/log與/var/lib/docker/containers兩個目錄下的log 3. fluentd採集的日誌數據彙總到elasticsearch 4. 最後由kibana展示 ### Abc ```abc X:1 T:Speed the Plough M:4/4 C:Trad. K:G |:GABc dedB|dedB dedB|c2ec B2dB|c2A2 A2BA|A2F2 G4:| GABc dedB|dedB dedB|c2ec B2dB|A2F2 G4:| |:g2gf gdBd|g2f2 e2d2|c2ec B2dB|c2A2 A2df| g2gf g2Bd|g2f2 e2d2|c2ec B2dB|AF G4:| ``` ## 安裝 #### 準備imges ~~~shell= sudo docker pull netonline/fluentd-elasticsearch:v2.0.4 sudo docker pull netonline/elasticsearch:v5.6.4 sudo docker pull netonline/kibana:5.6.4 ~~~ #### 下載yaml ~~~shell= mkdir -p /usr/local/src/yaml cd /usr/local/src/yaml sudo scp -r k200@60.250.213.48:~/efk/ . ~~~ #### 設置標籤 ~~~shell= # 所有期望運行fluentd Pod的節點都需要設置標籤 # 找到所有nodes name kubectl get nodes | grep Ready | awk '{print $1}' kubectl label nodes [node name] beta.kubernetes.io/fluentd-ds-ready=true ~~~ ## 驗證 #### 啟動服務 ~~~shell= cd /usr/local/src/yaml/efk/ kubectl create -f . ~~~ #### 查看服務 ~~~shell= # 查看statefulset,daemonset與deployment kubectl get statefulset -n kube-system kubectl get daemonset -n kube-system kubectl get deployment -n kube-system | grep kibana # 查看elasticsearch與kibana的Pod運行狀態 kubectl get pods -n kube-system | grep -E 'elasticsearch|kibana' # 查看fluentd的Pod運行狀態 kubectl get pods -n kube-system -o wide | grep fluentd # 查看service運行狀態 kubectl get svc -n kube-system | grep -E 'elasticsearch|kibana' # kibana Pod第一次啟動時有一定的初始化操作來優化並cache狀態頁面,時間一般在10~20分鐘內; # 下列輸入kibana pod ID kubectl log kibana-logging-5d4b6ddfc7-szx6d -n kube-system -f ~~~ ## 查看EFK Info ~~~shell= kubectl cluster-info ~~~ ## 訪問elasticsearch 瀏覽器訪問訪問elasticsearch,返回json https://[user_IP]:6443/api/v1/namespaces/kube-system/services/elasticsearch-logging/proxy/ ## 訪問kibana 瀏覽器訪問訪問kibana https://[user_IP]:6443/api/v1/namespaces/kube-system/services/kibana-logging/proxy ## 解決 #### 若kibana跑不起來,需要生成金鑰餵給瀏覽器 Firefox ~~~shell= cd /etc/kubernetes/ssl sudo cp apiserver-kubelet-client.crt ~/ |sudo cp apiserver-kubelet-client.key ~/ |sudo cp ca.crt ~/ #cd 到home底下生成金鑰client.p12 cd openssl pkcs12 -export -in apiserver-kubelet-client.crt -inkey apiserver-kubelet-client.key -certfile ca.crt -name $(openssl x509 -noout -in apiserver-kubelet-client.crt -subject | sed -e 's;.*CN=;;' -e 's;/Em.*;;') -caname $(openssl x509 -noout -in ca.crt -subject | sed -e 's;.*CN=;;' -e 's;/Em.*;;') -out client.p12 #會請求金鑰密碼設定,可以不用設定,在import這組金鑰時會需要使用 ~~~ #### 若生成金鑰有權限問題,將apiserver-kubelet-client.crt、apiserver-kubelet-client.key、ca.crt權限設成 user name ~~~shell= chown [user_name] apiserver-kubelet-client.crt | chown [user_name] apiserver-kubelet-client.key | chown [user_name] ca.crt ~~~ #### 將client.p12放進Firefox的 Preferences → Privacy&Security → 拉到最下面 View Certificates → Your Certificates → import client.p12 #### 金鑰放完必須要把Firefox整個頁面關閉,重開elasticsearch、kibana頁面要輸入帳號密碼,帳號 #### 連線嘗試kibana有沒有回覆 ~~~shell= curl -i —cert apiserver-kubelet-client.crt —key apiserver-kubelet-client.key —cacert ca.crt https://192.168.62.131/api/v1/namespaces/kube-system ~~~