如果您已經在Kibana上實現Elasticsearch日志可視化,想要將日志數據從Elasticsearch遷移到SLS,可以使用SLS提供的Elasticsearch兼容接口,無需改動業務代碼。
本文檔為阿里云原創文檔,知識產權歸阿里云所有,由于本文檔旨在介紹阿里云與第三方產品交互的服務能力,因此可能會提及第三方公司或產品等名稱。
前提條件
已創建Project、標準型Logstore并完成日志采集。具體操作,請參見創建項目Project、創建Logstore和數據采集概述。
查詢日志前,已配置索引。具體操作,請參見創建索引。
已創建RAM用戶的AccessKey,并且為RAM用戶授予Logstore的查詢權限。具體操作,請參見RAM授權。
背景信息
Kibana是一款基于Elasticsearch的數據可視化和探索工具。您可以通過Kibana對Elasticsearch中的數據進行查詢、分析和可視化。對于已經習慣使用Kibana做日志查詢和可視化報表的用戶,日志服務提供了兼容Elasticsearch的接口,用戶可以使用這些兼容接口實現在Kibana中查詢和分析日志服務中的數據。
操作視頻
本視頻指導您使用Kibana訪問日志服務的Elasticsearch兼容接口。
工作原理
您需要在客戶端環境中部署Kibana、Proxy和Elasticsearch。
Kibana:用于查詢、分析和可視化展示數據。
Elasticsearch:用于存儲Kibana的Meta數據(主要為配置信息,數據量極?。?/p>
由于Kibana的Meta信息經常需要更新,而日志服務不支持更新操作。因此需要部署一個Elasticsearch專門用于存儲Kibana的Meta數據。
Proxy:用于區分Kibana對Meta數據和日志服務Elasticsearch兼容接口的API請求,需要部署一個Proxy對Kibana的API請求進行路由。
步驟一:部署Elasticsearch、Kibana和Proxy
建議服務器的內存為8G及以上。
使用Docker Compose部署
在服務器執行以下命令,創建一個名為
sls-kibana
的新目錄,在sls-kibana
目錄下創建一個名為data
子目錄。更改data
目錄的權限,確保Elasticsearch容器具有對該目錄的讀、寫和執行權限。mkdir sls-kibana cd sls-kibana mkdir data chmod 777 data
在
sls-kibana
目錄創建.env
文件,內容如下,請根據實際參數修改。ES_PASSWORD=aStrongPassword # 請根據實際情況修改 SLS_ENDPOINT=cn-huhehaote.log.aliyuncs.com SLS_PROJECT=etl-dev-7494ab**** SLS_ACCESS_KEY_ID=xxx SLS_ACCESS_KEY_SECRET=xxx #SLS_PROJECT_ALIAS=etl-dev # 可選,如果覺得SLS_PROJECT名字太長,可以設置一下別名 #SLS_LOGSTORE_FILTERS="access*" # 可選,過濾哪些logstore自動創建index pattern,多個index pattern用逗號分隔,比如 "access*,error*",注意加上雙引號 #KIBANA_SPACE=default # 可選,指定索引模式(index pattern)創建在哪個space下, 不存在則自動創建。 # 如果有更多project,可以繼續加; 注意超過6個的話,docker-compose.yml中引用也要加 #SLS_ENDPOINT2=cn-huhehaote.log.aliyuncs.com #SLS_PROJECT2=etl-dev2 #SLS_ACCESS_KEY_ID2=xxx #SLS_ACCESS_KEY_SECRET2=xxx #SLS_PROJECT_ALIAS2=etl-dev2 # 可選,如果覺得SLS_PROJECT名字太長,可以設置一下別名 #SLS_LOGSTORE_FILTERS2="test*log" # 可選,過濾哪些logstore自動創建index pattern創建,多個pattern用逗號分隔,比如 "access*,error*",注意加上雙引號 #KIBANA_SPACE2=default # 可選,指定index parttern創建在哪個space下; 不存在則自動創建
參數
說明
ES_PASSWORD
Elasticsearch的密碼,也是Kibana的密碼。
SLS_ENDPOINT
Project的訪問域名,請參見管理Project。
SLS_PROJECT
日志服務的Project名稱,請參見管理Project。
SLS_ACCESS_KEY_ID
前提條件中創建的RAM用戶的AK。RAM用戶需要具備Logstore的查詢權限,請參見RAM授權。
SLS_ACCESS_KEY_SECRET
前提條件中創建的RAM用戶的SK。RAM用戶需要具備Logstore的查詢權限,請參見RAM授權。
SLS_PROJECT_ALIAS
可選,如果SLS_PROJECT名稱過長,可以選擇設置一個別名。
SLS_LOGSTORE_FILTERS
可選,過濾哪些logstore自動創建index pattern,多個index pattern用逗號分隔,比如
"access*,error*"
,注意加上雙引號。KIBANA_SPACE
可選,指定索引模式(index pattern)創建在哪個space下, 不存在則自動創建。
在
sls-kibana
目錄中創建docker-compose.yaml
文件,內容如下。services: es: image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/elasticsearch:7.17.3 environment: - "discovery.type=single-node" - "ES_JAVA_OPTS=-Xms2G -Xmx2G" - ELASTIC_USERNAME=elastic - ELASTIC_PASSWORD=${ES_PASSWORD} - xpack.security.enabled=true volumes: # TODO 這里的./data目錄需要提前建立, 確認已經mkdir data && chmod 777 data - ./data:/usr/share/elasticsearch/data kproxy: image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2 depends_on: - es environment: - ES_ENDPOINT=es:9200 # 第一個sls project - SLS_ENDPOINT=${SLS_ENDPOINT} - SLS_PROJECT=${SLS_PROJECT} - SLS_LOGSTORE_FILTERS=${SLS_LOGSTORE_FILTERS} - KIBANA_SPACE=${KIBANA_SPACE} - SLS_PROJECT_ALIAS=${SLS_PROJECT_ALIAS} - SLS_ACCESS_KEY_ID=${SLS_ACCESS_KEY_ID} - SLS_ACCESS_KEY_SECRET=${SLS_ACCESS_KEY_SECRET} # 第二個sls project - SLS_ENDPOINT2=${SLS_ENDPOINT2} - SLS_PROJECT2=${SLS_PROJECT2} - SLS_LOGSTORE_FILTERS2=${SLS_LOGSTORE_FILTERS2} - KIBANA_SPACE2=${KIBANA_SPACE2} - SLS_PROJECT_ALIAS2=${SLS_PROJECT_ALIAS2} - SLS_ACCESS_KEY_ID2=${SLS_ACCESS_KEY_ID2} - SLS_ACCESS_KEY_SECRET2=${SLS_ACCESS_KEY_SECRET2} - SLS_ENDPOINT3=${SLS_ENDPOINT3} - SLS_PROJECT3=${SLS_PROJECT3} - SLS_LOGSTORE_FILTERS3=${SLS_LOGSTORE_FILTERS3} - KIBANA_SPACE3=${KIBANA_SPACE3} - SLS_PROJECT_ALIAS3=${SLS_PROJECT_ALIAS3} - SLS_ACCESS_KEY_ID3=${SLS_ACCESS_KEY_ID3} - SLS_ACCESS_KEY_SECRET3=${SLS_ACCESS_KEY_SECRET3} - SLS_ENDPOINT4=${SLS_ENDPOINT4} - SLS_PROJECT4=${SLS_PROJECT4} - SLS_LOGSTORE_FILTERS4=${SLS_LOGSTORE_FILTERS4} - KIBANA_SPACE4=${KIBANA_SPACE4} - SLS_PROJECT_ALIAS4=${SLS_PROJECT_ALIAS4} - SLS_ACCESS_KEY_ID4=${SLS_ACCESS_KEY_ID4} - SLS_ACCESS_KEY_SECRET4=${SLS_ACCESS_KEY_SECRET4} - SLS_ENDPOINT5=${SLS_ENDPOINT5} - SLS_PROJECT5=${SLS_PROJECT5} - SLS_LOGSTORE_FILTERS5=${SLS_LOGSTORE_FILTERS5} - KIBANA_SPACE5=${KIBANA_SPACE5} - SLS_PROJECT_ALIAS5=${SLS_PROJECT_ALIAS5} - SLS_ACCESS_KEY_ID5=${SLS_ACCESS_KEY_ID5} - SLS_ACCESS_KEY_SECRET5=${SLS_ACCESS_KEY_SECRET5} - SLS_ENDPOINT6=${SLS_ENDPOINT6} - SLS_PROJECT6=${SLS_PROJECT6} - SLS_LOGSTORE_FILTERS6=${SLS_LOGSTORE_FILTERS6} - KIBANA_SPACE6=${KIBANA_SPACE6} - SLS_PROJECT_ALIAS6=${SLS_PROJECT_ALIAS6} - SLS_ACCESS_KEY_ID6=${SLS_ACCESS_KEY_ID6} - SLS_ACCESS_KEY_SECRET6=${SLS_ACCESS_KEY_SECRET6} # 如有更多,可以繼續加,最多255個 kibana: image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kibana:7.17.3 depends_on: - kproxy environment: - ELASTICSEARCH_HOSTS=http://kproxy:9201 - ELASTICSEARCH_USERNAME=elastic - ELASTICSEARCH_PASSWORD=${ES_PASSWORD} - XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true ports: - "5601:5601" # 這個服務組件是可選的,作用是自動創建kibana index pattern index-patterner: image: sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2 command: /usr/bin/python3 -u /workspace/create_index_pattern.py depends_on: - kibana environment: - KPROXY_ENDPOINT=http://kproxy:9201 - KIBANA_ENDPOINT=http://kibana:5601 - KIBANA_USER=elastic - KIBANA_PASSWORD=${ES_PASSWORD} - SLS_PROJECT_ALIAS=${SLS_PROJECT_ALIAS} - SLS_ACCESS_KEY_ID=${SLS_ACCESS_KEY_ID} - SLS_ACCESS_KEY_SECRET=${SLS_ACCESS_KEY_SECRET} - SLS_PROJECT_ALIAS2=${SLS_PROJECT_ALIAS2} - SLS_ACCESS_KEY_ID2=${SLS_ACCESS_KEY_ID2} - SLS_ACCESS_KEY_SECRET2=${SLS_ACCESS_KEY_SECRET2} - SLS_PROJECT_ALIAS3=${SLS_PROJECT_ALIAS3} - SLS_ACCESS_KEY_ID3=${SLS_ACCESS_KEY_ID3} - SLS_ACCESS_KEY_SECRET3=${SLS_ACCESS_KEY_SECRET3} - SLS_PROJECT_ALIAS4=${SLS_PROJECT_ALIAS4} - SLS_ACCESS_KEY_ID4=${SLS_ACCESS_KEY_ID4} - SLS_ACCESS_KEY_SECRET4=${SLS_ACCESS_KEY_SECRET4} - SLS_PROJECT_ALIAS5=${SLS_PROJECT_ALIAS5} - SLS_ACCESS_KEY_ID5=${SLS_ACCESS_KEY_ID5} - SLS_ACCESS_KEY_SECRET5=${SLS_ACCESS_KEY_SECRET5} - SLS_PROJECT_ALIAS6=${SLS_PROJECT_ALIAS6} - SLS_ACCESS_KEY_ID6=${SLS_ACCESS_KEY_ID6} - SLS_ACCESS_KEY_SECRET6=${SLS_ACCESS_KEY_SECRET6} # 如有更多,可以繼續加,最多255個
執行以下命令,啟動服務。
docker compose up -d
執行以下命令,查看服務狀態。
docker compose ps
部署完成后,在瀏覽器中輸入
http://${部署Kibana的IP地址}:5601
,進入Kibana的登錄頁面,輸入第一步中設置的Elasticsearch的用戶名和密碼。重要必須在服務器的安全組規則中添加5601端口,請參見添加安全組規則。
http://${部署Kibana的IP地址}:5601
使用Helm部署
前提條件
確保阿里云容器服務 Kubernetes 版ACK集群中有以下組件。查看已安裝組件的操作步驟,請參見管理組件。
以下任意一種Ingress controller:
操作步驟
創建命名空間(Namespace)。
# 創建namespace kubectl create namespace sls-kibana
創建并編輯
values.yaml
文件,內容如下,請根據實際情況修改。kibana: ingressClass: nginx # 根據實際安裝的ingress controller修改 # 根據ack集群->運維管理->組件管理下搜ingress,查看已安裝的ingress控制臺確定該值 # ALB Ingress Controller 設置為alb # MSE Ingress Controller 設置為mse # Nginx Ingress Controller 設置為nginx ingressDomain: #可以為空,如果需要通過域名訪問kibana,可以設置該值 ingressPath: /kibana/ # 必填,訪問時的子路徑 # 如果ingressDomain非空, 那么ingressPath支持設置為/ #i18nLocale: en # 設置Kibana的語言,默認為英文,如果需要中文可以設置值為zh-CN elasticsearch: password: aStrongPass # 請根據實際情況修改es的密碼,同時也是kibana的訪問密碼,對應賬號為elastic #diskZoneId: cn-hongkong-c # 指定es使用的云盤所在的az。不設置的情況下az會系統選擇 repository: region: cn-hangzhou # 鏡像所在區域,中國固定設置為cn-hangzhou 海外固定設置為ap-southeast-1;會使用公網拉取鏡像 sls: - project: k8s-log-c5****** # sls的project endpoint: cn-huhehaote.log.aliyuncs.com # sls project對應的endpoint accessKeyId: 具有sls訪問權限的accessKeyId accessKeySecret: 具有sls訪問權限的accessKeySecret # alias: etl-logs # 可選,如果覺得project名在kibana中顯示太長,可以設置別名 # kibanaSpace: default # 可選,指定index pattern創建在哪個space下; 不存在則自動創建 # logstoreFilters: "*" # 可選,過濾哪些logstore自動創建index pattern創建,多個pattern用逗號分隔,比如 "access*,error*",注意加上雙引號。 # 如果有第二個繼續按上面的格式添加 #- project: etl-dev2 # sls的project # endpoint: cn-huhehaote.log.aliyuncs.com # sls project對應的endpoint # accessKeyId: 具有sls訪問權限的accessKeyId # accessKeySecret: 具有sls訪問權限的accessKeySecret # alias: etl-logs2 # 可選,如果覺得project名在kibana中顯示太長,可以設置別名 # kibanaSpace: default # 可選,指定index pattern創建在哪個space下; 不存在則自動創建 # logstoreFilters: "*" # 可選,過濾哪些logstore自動創建index pattern創建,多個pattern用逗號分隔,比如 "access*,error*",注意加上雙引號
參數說明
說明
kibana.ingressClass
根據實際安裝的ingress controller修改,查看組件的步驟請參見管理組件。
ALB Ingress Controller:設置為alb
MSE Ingress Controller:設置為mse
Nginx Ingress Controller:設置為nginx
kibana.ingressDomain
可以為空,如果需要通過域名訪問kibana,需要設置該值。
repository.region
鏡像所在區域,中國固定設置為
cn-hangzhou
,海外固定設置為ap-southeast-1
,會使用公網拉取鏡像。kibana.ingressPath
訪問時的子路徑。如果ingressDomain非空, 那么ingressPath支持設置為
/
。elasticsearch.password
請根據實際情況修改Elasticsearch的密碼,同時也是Kibana的訪問密碼,Elasticsearch賬號為
elastic
。sls.project
日志服務的Project名稱,請參見管理Project。
sls.endpoint
Project的訪問域名,請參見管理Project。
sls.accessKeyId
前提條件中創建的RAM用戶的AK。RAM用戶需要具備Logstore的查詢權限,請參見RAM授權。
sls.accessKeySecret
前提條件中創建的RAM用戶的SK。RAM用戶需要具備Logstore的查詢權限,請參見RAM授權。
sls.alias
可選,如果Project名在Kibana中顯示太長,可以設置別名。
sls.kibanaSpace
可選,指定索引模式(index pattern)創建在哪個space下, 不存在則自動創建。
sls.logstoreFilters
可選,過濾哪些logstore自動創建index pattern,多個index pattern用逗號分隔,比如
"access*,error*"
,注意加上雙引號。執行以下命令,使用Helm部署。
helm install sls-kibana https://sls-kproxy.oss-cn-hangzhou.aliyuncs.com/sls-kibana-1.5.2 -f values.yaml --namespace sls-kibana
部署完成后,在瀏覽器中輸入
http://${ingress地址}/kibana/
,進入Kibana的登錄頁面,輸入第一步中設置的Elasticsearch的用戶名和密碼。http://${ingress地址}/kibana/
使用Docker部署
第一步:部署Elasticsearch
使用Docker部署,必須先安裝和啟動Docker,請參見安裝Docker。
在服務器上執行如下命令,部署Elasticsearch。
sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/elasticsearch:7.17.3 sudo mkdir /data # Elasticsearch數據的存儲目錄, 請根據實際情況修改。 sudo chmod 777 /data # 配置權限。 sudo docker run -d --name es -p 9200:9200 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms2G -Xmx2G" \ -e ELASTIC_USERNAME=elastic \ -e ELASTIC_PASSWORD=passwd \ -e xpack.security.enabled=true \ -v /data:/usr/share/elasticsearch/data \ sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/elasticsearch:7.17.3
參數
說明
ELASTIC_USERNAME
登錄Elasticsearch的用戶名,固定為elastic。
ELASTIC_PASSWORD
登錄Elasticsearch的密碼。Elasticsearch的密碼必須是字符串類型。
/data
Elasticsearch在物理機上的數據存儲位置,請根據情況修改。
部署完成后,請執行如下命令驗證Elasticsearch是否部署成功。如果使用公網IP,必須在服務器的安全組規則中添加9200端口,請參見添加安全組規則。
curl http://${Elasticsearch所在機器的IP地址}:9200
如果返回結果是包含
security_exception
的JSON格式數據,則表示Elasticsearch已經成功部署。{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
第二步:部署Proxy
Kibana對接日志服務時,支持對接單個或多個Project,您需要在部署Proxy時,添加對應的Project信息。對應的部署示例如下所示。
單個Project
sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2
sudo docker run -d --name proxy \
-e ES_ENDPOINT=${Elasticsearch所在機器的IP地址}:9200 \
-e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
-e SLS_PROJECT=prjA \
-e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
-e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
-p 9201:9201 \
-ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2
多個Project
最多可添加32個Project。
SLS_PROJECT、SLS_ENDPOINT、SLS_ACCESS_KEY_ID、SLS_ACCESS_KEY_SECRET為第一個Project相關的變量名稱。從第二個Project開始,其相關變量名稱需加數字后綴,例如SLS_PROJECT2、SLS_ENDPOINT2。
如果后面某Project的相關變量取值與第一個Project相同,則該Project對應的Endpoint、AccessKey可省略配置。
sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2
sudo docker run -d --name proxy \
-e ES_ENDPOINT=${Elasticsearch所在機器的IP地址}:9200 \
-e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \
-e SLS_ENDPOINT2=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \
-e SLS_PROJECT=prjA \
-e SLS_PROJECT2=prjB \
-e SLS_ACCESS_KEY_ID=${aliyunAccessId} \
-e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \
-e SLS_ACCESS_KEY_ID2=${aliyunAccessId} \ #如果值和SLS_ACCESS_KEY_ID相同,無需配置。
-e SLS_ACCESS_KEY_SECRET2=${aliyunAccessKey} \ #如果值和SLS_ACCESS_KEY_SECRET相同,無需配置。
-p 9201:9201 \
-ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2
示例1
對接2個Project(prjA和prjB),且使用相同的AccessKey,則示例如下:
sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2 sudo docker run -d --name proxy \ -e ES_ENDPOINT=${Elasticsearch所在機器的IP地址}:9200 \ -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \ -e SLS_ENDPOINT=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \ -e SLS_PROJECT=prjA \ -e SLS_PROJECT2=prjB \ -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \ -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \ -p 9201:9201 \ -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2
示例2
對接3個Project(prjA、prjB、prjC),其中prjA和prjC使用相同的AccessKey,則示例如下:
sudo docker run -d --name proxy \ -e ES_ENDPOINT=${Elasticsearch所在機器的IP地址}:9200 \ -e SLS_ENDPOINT=https://prjA.cn-guangzhou.log.aliyuncs.com/es/ \ -e SLS_ENDPOINT2=https://prjB.cn-guangzhou.log.aliyuncs.com/es/ \ -e SLS_ENDPOINT3=https://prjC.cn-guangzhou.log.aliyuncs.com/es/ \ -e SLS_PROJECT=prjA \ -e SLS_PROJECT2=prjB \ -e SLS_PROJECT3=prjC \ -e SLS_ACCESS_KEY_ID=${aliyunAccessId} \ -e SLS_ACCESS_KEY_SECRET=${aliyunAccessKey} \ -e SLS_ACCESS_KEY_ID2=${aliyunAccessId} \ -e SLS_ACCESS_KEY_SECRET2=${aliyunAccessKey} \ -p 9201:9201 \ -ti sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kproxy:2.1.2
重要參數說明如下表所示。
參數 | 說明 |
| Elasticsearch的訪問地址,格式為 |
| 數據訪問地址,格式為 重要 必須使用HTTPS協議。 |
| 日志服務的Project名稱,請參見管理Project。 |
| 阿里云AccessKey ID。 建議使用RAM用戶的AccessKey,該RAM用戶需具備Logstore的數據查詢權限。您可以通過權限助手,配置權限。具體操作,請參見配置權限助手。AccessKey的獲取方法,請參見訪問密鑰。 |
| 阿里云AccessKey Secret。 建議使用RAM用戶的AccessKey,該RAM用戶需具備Logstore的數據查詢權限。您可以通過權限助手,配置權限。具體操作,請參見配置權限助手。AccessKey的獲取方法,請參見訪問密鑰。 |
部署完成后,您可以執行如下命令驗證是否部署成功。如果使用公網IP,必須在服務器的安全組規則中添加9201端口,請參見添加安全組規則。
curl http://${Proxy所在機器IP地址}:9201
如果返回結果中包含security_exception
的JSON格式數據,則表示Proxy已經成功部署。
{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication credentials for REST request [/]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}
第三步:部署Kibana
參見如下示例,部署Kibana。本文以Kibana 7.17.3版本為例。
sudo docker pull sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kibana:7.17.3
sudo docker run -d --name kibana \
-e ELASTICSEARCH_HOSTS=http://${Proxy所在機器的IP地址}:9201 \
-e ELASTICSEARCH_USERNAME=elastic \
-e ELASTICSEARCH_PASSWORD=passwd \
-e XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED=true \
-p 5601:5601 \
sls-registry.cn-hangzhou.cr.aliyuncs.com/kproxy/kibana:7.17.3
參數 | 說明 |
| Proxy的訪問地址,格式為 |
| 登錄Kibana的用戶名。 需與您在部署Elasticsearch時設置的Elasticsearch用戶名一致。 |
| 登錄Kibana的密碼。 需與您在部署Elasticsearch時設置的Elasticsearch密碼一致。 |
部署完成后,在瀏覽器中輸入http://${部署Kibana的IP地址}:5601
,進入Kibana的登錄頁面,輸入第一步中設置的Elasticsearch的用戶名和密碼。
必須在服務器的安全組規則中添加5601端口,請參見添加安全組規則。
http://${部署Kibana的IP地址}:5601
步驟二:訪問Kibana
查詢和分析數據
在左側導航欄中,選擇Analytics>Discover。
重要使用Kibana和Elasticsearch兼容接口分析日志服務數據時,目前只支持使用Discover和Dashboard這兩個模塊。
在頁面左上角選擇目標索引,在頁面右上角選擇時間范圍,查詢日志數據。
手動配置IndexPattern(可選)
使用Docker Compose部署或使用Helm部署的情況下默認不需要手動創建Index Pattern。如果使用Docker手動部署,需要手工創建一下Index Pattern。
在左側導航欄中,選擇Management > Stack Management。
在左側導航欄中,選擇Kibana > Index Patterns。
首次使用時,請先在提示框中單擊create an index pattern against hidden or system indices.
說明在Index pattern列表中看不到數據是正常的,日志服務的logstore映射到Kibana中的Index patterns需要手動創建。
在Create index pattern窗口中,配置相關參數。
參數名稱
說明
Name
索引名稱,該名稱的命名規則為
${日志服務Project名稱}.${Logstore名稱}
。重要索引名稱僅支持精準匹配,不支持使用通配符,即您需要輸入完整的索引名稱。
例如Project名稱為etl-guangzhou,Logstore名稱為es_test22,那么此處名稱為
etl-guangzhou.es_test22
。Timestamp field
時間戳字段,固定選擇為
@timestamp
。單擊Create index pattern。
常見問題
使用Docker Compose部署,無法訪問Kibana?
在
sls-kibana
目錄里,執行docker compose ps
查看容器的啟動狀態STATUS,確保都處于UP狀態。如果三個容器的狀態都為UP,則查看每個容器的錯誤日志。
docker logs sls-kibana_es_1 # 查看es啟動日志 docker logs sls-kibana_kproxy_1 # 查看kproxy啟動日志 docker logs sls-kibana_kibana_1 # 查看kibana啟動日志
使用Helm部署,無法訪問Kibana?
如何卸載helm?
helm uninstall sls-kibana --namespace sls-kibana
Kibana中如何顯示高精度時間?
確保SLS中的時間使用高精度時間采集或上報,通過配置 納秒精度時間戳 ,支持納秒級精度時間戳。
在確保高精度時間采集后,需在字段索引中添加類型為
long
的__time_ns_part__
納秒字段索引配置。由于Kibana的部分查詢可能被轉換為SQL執行,因此需要在SQL結果中包含高精度時間
如何升級Helm Chart?
Helm Chart升級和install類似,把install命令換成upgrade即可。values.yaml可以復用之前install時的文件。
helm upgrade sls-kibana https://sls-kproxy.oss-cn-hangzhou.aliyuncs.com/sls-kibana-1.5.2.tgz -f values.yaml --namespace sls-kibana