在Serverless 應用引擎 SAE(Serverless App Engine)產生的日志導入到云消息隊列 Kafka 版之后,您可以將Kafka中的日志統一寫入阿里云Elasticsearch,便于后續的統一查看和處理。本文介紹通過SAE日志導入到Kafka,再從Kafka將數據寫入Elasticsearch的最佳實踐。
前提條件
購買Kafka實例,并創建Topic和Group供SAE應用使用。具體信息,請參見創建Kafka資源。
創建或部署SAE應用時,開通日志收集到Kafka日志服務功能。具體信息,請參見設置日志收集至Kafka。
確認是否成功采集消息到Kafka。具體信息,請參見消息查詢。
創建阿里云Elasticsearch實例。具體信息,請參見創建阿里云Elasticsearch實例。
創建阿里云Logstash實例。具體信息,請參見創建阿里云Logstash實例。
步驟一:創建Group
本步驟介紹如何創建阿里云Elasticsearch所屬的Group。
在概覽頁面的資源分布區域,選擇地域。
在實例列表頁面,單擊目標實例名稱。
在左側導航欄,單擊Group 管理。
在Group 管理頁面,單擊創建 Group。
在創建 Group面板的Group ID文本框輸入Group的名稱,在描述文本框簡要描述Group,并給Group添加標簽,單擊確定。
創建完成后,在Group 管理頁面的列表中顯示已創建的Group。
步驟二:創建索引
本步驟介紹如何通過阿里云Elasticsearch創建索引,接收云消息隊列 Kafka 版的數據。
- 登錄阿里云Elasticsearch控制臺。
- 在左側導航欄,單擊Elasticsearch實例。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在左側導航欄,選擇 。
在Kibana區域中,單擊私網入口或公網入口。
私網入口:開啟Kibana私網訪問后(默認未開啟),才會顯示。具體操作,請參見配置Kibana公網或私網訪問白名單。
說明僅以5601為公網訪問端口的Kibana實例支持開放私網訪問,具體以控制臺為準。
公網入口:開啟Kibana公網訪問后(默認開啟),才會顯示。具體操作,請參見配置Kibana公網或私網訪問白名單。
說明首次從公網入口進入Kibana控制臺且公網訪問配置未修改時,系統會提示您修改配置。單擊修改配置,進入Kibana配置頁面修改Kibana公網訪問白名單,在白名單中加入您客戶端的IP地址,具體操作請參見配置Kibana公網或私網訪問白名單。修改后,再次單擊公網入口,即可進入Kibana控制臺。
獲取客戶端的IP地址:如果您的客戶端處在家庭網絡或公司局域網中,您需要將局域網的公網出口IP地址添加到白名單中,而非客戶端機器的內網機制。建議您通過瀏覽器訪問https://myip.ipip.net查詢。您也可以將白名單配置為0.0.0.0/0,允許所有IPv4地址訪問Kibana,此配置會導致Kibana完全暴露在公網中,增加安全風險,配置前請確認您是否可以接受這個風險。
在Kibana登錄頁面,輸入用戶名和密碼,單擊Log in。
參數說明如下。
用戶名:默認為elastic。您也可以創建自定義用戶,具體操作請參見通過Elasticsearch X-Pack角色管理實現用戶權限管控。
密碼:對應用戶的密碼。elastic用戶的密碼在創建實例時設定,如果忘記可重置。重置密碼的注意事項和操作步驟,請參見重置實例訪問密碼。
在Kibana控制臺的左側導航欄,選擇 。
執行以下命令,創建索引。
PUT /elastic_test {}
步驟三:創建管道
本步驟介紹如何通過阿里云Logstash創建管道。成功部署管道后,數據將持續地從消息隊列Kafka版導入到阿里云Elasticsearch。
- 登錄阿里云Elasticsearch控制臺。
- 進入目標實例。
- 在頂部菜單欄處,選擇地域。
- 在Logstash實例中單擊目標實例ID。
在左側導航欄,單擊管道管理。
在管道列表頁面,單擊創建管道。
在創建管道任務配置向導頁面,配置相關參數。
在Config配置頁簽,配置相關參數并單擊下一步。
本文的參數配置以Kafka數據導入Elasticsearch為例。參數的更多信息,請參見通過配置文件管理管道。
管道ID:自定義。
Config配置:配置示例如下。
input { kafka { bootstrap_servers => ["alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-2-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-3-vpc.alikafka.aliyuncs.com:9092"] group_id => "elastic_group" topics => ["elastic_test"] codec => json consumer_threads => 12 decorate_events => true } } output { elasticsearch { hosts => ["http://es-cn-o40xxxxxxxxxxxxwm.elasticsearch.aliyuncs.com:9200"] index => "elastic_test" password => "XXX" user => "elastic" } }
參數說明如下。
參數
說明
示例值
input
bootstrap_servers
Kafka的VPC環境接入點。
alikafka-pre-cn-zv**********-1-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-2-vpc.alikafka.aliyuncs.com:9092,alikafka-pre-cn-zv**********-3-vpc.alikafka.aliyuncs.com:9092
group_id
Group的名稱。
elastic_group
topics
Topic的名稱。
elastic_test
codec
解碼的類型。
說明建議設置為JSON格式,與SAE日志導入到Kafka的數據格式保持一致。
json
consumer_threads
消費線程數。
說明建議與Topic的分區數保持一致。
12
decorate_events
是否包含消息元數據。默認值為
false
。true
output
hosts
Elasticsearch的訪問地址。您可在Elasticsearch實例的基本信息頁面獲取。
http://es-cn-o40xxxxxxxxxxxxwm.elasticsearch.aliyuncs.com:9200
index
索引的名稱。
elastic_test
password
訪問Elasticsearch的密碼。您在創建Elasticsearch實例時設置的密碼。
XXX
user
訪問Elasticsearch的用戶名。您在創建Elasticsearch實例時設置的用戶名。
elastic
在管道參數配置頁簽,配置相關參數,單擊保存并部署。
本示例以默認配置為準,您可以按需修改。
在提示對話框,單擊確認。
步驟四:搜索數據
您可以在Kibana控制臺搜索通過管道導入阿里云Elasticsearch的數據,確認數據是否導入成功。
- 登錄阿里云Elasticsearch控制臺。
- 進入目標實例。
- 在頂部菜單欄處,選擇資源組和地域。
- 在Elasticsearch實例中單擊目標實例ID。
在左側導航欄,選擇 。
在Kibana控制臺的左側導航欄,選擇 。
登錄Kibana控制臺的具體步驟,請參見創建索引步驟5~7。
執行以下命令,搜索數據。
GET /elastic_test/_search {}
返回示例如下。