Bir Elasticsearch sink connector, ApsaraMQ for Kafka örneğinizdeki bir konudan mesajları okur ve bunları bir Elasticsearch dizinine yazar. Connector, Function Compute'u aracı olarak kullanır: kaynak konudan mesajları tüketir, bunları bir Function Compute işlevine iletir ve işlev Bulk API aracılığıyla verileri Elasticsearch'e yazar. Her mesaj; konu, parça, ofset ve zaman damgası gibi meta verilerle birlikte hedef dizinde bir belgeye dönüşür.
Başlamadan önce
Connector'ü oluşturmadan önce aşağıdaki kurulum adımlarını tamamlayın.
ApsaraMQ for Kafka
Function Compute
Elasticsearch
Elasticsearch kümesi ve dizini oluşturun (Elasticsearch konsolu üzerinden). Function Compute istemcisiyle (sürüm 7.7.0) uyumluluk sağlamak için sürüm 7.0 veya sonraki bir sürümü kullanın.
Function Compute uç noktasının CIDR bloğunu Elasticsearch izin listesine ekleyin. İlk testler sırasında VPC'deki tüm IP adreslerine izin vermek için
0.0.0.0/0değerini belirtin; bağlantıyı doğruladıktan sonra aralığı kısıtlayın.
Toplanması gereken bilgiler
Sihirbazı başlatmadan önce aşağıdaki bilgileri toplayın.
| Bilgi | Nereden bulunur | Örnek |
|---|---|---|
| Elasticsearch örnek ID'si | Elasticsearch konsolu | es-cn-oew1o67x0000**** |
| Elasticsearch uç noktası (genel veya özel) | Küme temel bilgileri | es-cn-oew1o67x0000****.elasticsearch.aliyuncs.com |
| Elasticsearch bağlantı noktası | Küme temel bilgileri | 9200 (HTTP/HTTPS) veya 9300 (TCP) |
| Elasticsearch kullanıcı adı ve şifresi | Küme oluşturma sırasında ayarlanır; gerekirse sıfırlayın | elastic / **** |
| Elasticsearch dizin adı | Elasticsearch konsolu | elastic_test |
| Kaynak konu adı | ApsaraMQ for Kafka konsolu | elasticsearch-test-input |
Sınırlamalar
ApsaraMQ for Kafka örneği ile Elasticsearch kümesi aynı bölgede bulunmalıdır.
ApsaraMQ for Kafka, mesajları UTF-8 dizeleri olarak serileştirir. İkili veri desteklenmez.
Elasticsearch kümesinin özel uç noktasını belirtirseniz, Function Compute varsayılan olarak bu uç noktaya erişemez. Bağlantıyı etkinleştirmek için Function Compute hizmetini Elasticsearch kümesiyle aynı VPC ve vSwitch'i kullanacak şekilde yapılandırın. Bkz. Function Compute hizmetini yapılandırma.
Ek connector sınırlamaları için bkz. Sınırlamalar.
Faturalama
Connector, verileri dışa aktarmak için Function Compute kullanır. Function Compute ücretsiz bir kullanım katmanı sunar. Ücretsiz katman aşımı durumunda yapılan kullanımlar Function Compute faturalandırması esas alınarak ücretlendirilir.
Connector'ü oluşturma ve dağıtma
ApsaraMQ for Kafka konsoluna giriş yapın.
Overview sayfasının Resource Distribution bölümünde bölgenizi seçin.
Sol gezinme bölmesinde Connectors öğesine tıklayın.
Connectors sayfasında, Select Instance açılır listesinden örneğinizi seçin ve Create Connector seçeneğine tıklayın.
Adım 1: Temel bilgileri yapılandırma
Configure Basic Information adımında connector adını belirleyin ve örnek ayrıntılarını gözden geçirin.
| Parametre | Açıklama | Örnek |
|---|---|---|
| Name | ApsaraMQ for Kafka örneği içinde benzersiz bir ad. 1 ila 48 karakter kullanın: rakamlar, küçük harfler ve tire (-). Tire ile başlayamaz. Connector, otomatik olarak connect-<connector-name> adlı bir tüketici grubu oluşturur. |
kafka-elasticsearch-sink |
| Instance | Geçerli örneğin adını ve ID'sini gösterir. | demo alikafka_post-cn-st21p8vj**** |
Varsayılan olarak Authorize to Create Service Linked Role seçili gelir. ApsaraMQ for Kafka, henüz yoksa bir hizmet bağlantılı rol oluşturur.
Next seçeneğine tıklayın.
Adım 2: Kaynak hizmeti yapılandırma
Configure Source Service adımında kaynak hizmet olarak Message Queue for Apache Kafka seçeneğini belirleyin ve aşağıdaki parametreleri yapılandırın.
| Parametre | Açıklama | Örnek |
|---|---|---|
| Data Source Topic | Verilerin tüketileceği konu. | elasticsearch-test-input |
| Consumer Thread Concurrency | Eşzamanlı tüketici iş parçacığı sayısı. Geçerli değerler: 1, 2, 3, 6, 12. Varsayılan: 6. | 6 |
| Consumer Offset | Tüketimin nereden başlayacağı. Earliest Offset baştan itibaren okur. Latest Offset yalnızca yeni mesajları okur. | Earliest Offset |
Ek parametreleri genişletmek için Configure Runtime Environment seçeneğine tıklayın.
| Parametre | Açıklama | Örnek |
|---|---|---|
| VPC ID | Kaynak örneğin VPC'si. Otomatik doldurulur; değişiklik gerekmez. | vpc-bp1xpdnd3l*** |
| vSwitch ID | Kaynak örneğin vSwitch'i. Aynı VPC içinde olmalıdır. | vsw-bp1d2jgg81*** |
| Failure Handling Policy | Bir mesaj başarısız olduğunda alınacak eylem. Continue Subscription hatayı günlüğe kaydeder ve tüketmeye devam eder. Stop Subscription hatayı günlüğe kaydeder ve parçayı durdurur. Günlük ayrıntıları için Connector yönetimi bölümüne, sorun giderme için Hata kodları bölümüne bakın. Not
| Continue Subscription |
| Resource Creation Method | Auto gerekli dahili konuları otomatik olarak oluşturur. Manual bunları kendiniz oluşturmanıza olanak tanır. | Auto |
| Connector Consumer Group | Connector görevi için tüketici grubu. Format: connect-<connector-name>. | connect-kafka-elasticsearch-sink |
Dahili konular (yalnızca manuel oluşturma)
Resource Creation Method değerini Manual olarak ayarlarsanız aşağıdaki konuları oluşturun. Local Storage gerektiren tüm konular yalnızca Professional Edition örneklerde kullanılabilir.
| Parametre | Adlandırma kuralı | Parçalar | Depolama motoru | **cleanup.policy** |
|---|---|---|---|---|
| Task Offset Topic | connect-offset-* | 1'den fazla | Local Storage | Compact |
| Task Configuration Topic | connect-config-* | Tam olarak 1 | Local Storage | Compact |
| Task Status Topic | connect-status-* | 6 (önerilen) | Local Storage | Compact |
| Dead-letter Queue Topic | connect-error-* | 6 (önerilen) | Local Storage veya Cloud Storage | -- |
| Error Data Topic | connect-error-* | 6 (önerilen) | Local Storage veya Cloud Storage | -- |
Konu kaynaklarını tasarruf etmek için dead-letter queue konusu ve error data konusu olarak aynı konuyu kullanın.
Next seçeneğine tıklayın.
Adım 3: Hedef hizmeti yapılandırma
Configure Destination Service adımında hedef hizmet olarak Elasticsearch seçeneğini belirleyin ve aşağıdaki parametreleri yapılandırın.
| Parametre | Açıklama | Örnek |
|---|---|---|
| Elasticsearch Instance ID | Elasticsearch kümesinin ID'si. | es-cn-oew1o67x0000**** |
| Endpoint | Kümenin genel veya özel uç noktası. Bkz. Küme temel bilgilerini görüntüleme. | es-cn-oew1o67x0000****.elasticsearch.aliyuncs.com |
| Port | HTTP/HTTPS için 9200 veya TCP için 9300. | 9300 |
| Username | Elasticsearch kullanıcı adı. Varsayılan: elastic. Gerekirse X-Pack RBAC üzerinden özelleştirin. Hesabın hedef dizinde yazma izni olması gerekir. |
elastic |
| Password | Küme oluşturma sırasında belirlenen şifre. Unuttuysanız şifreyi sıfırlayın. | **** |
| Index | Hedef Elasticsearch dizin adı. | elastic_test |
Kullanıcı adı ve şifre, connector görevi oluşturulduğunda ortam değişkenleri olarak Function Compute'a iletilir. ApsaraMQ for Kafka, görev oluşturma sonrasında bu kimlik bilgilerini saklamaz.
Mesajlar Elasticsearch Bulk API aracılığıyla gönderildiğinden hesabın dizine yazma iznine sahip olması gerekir.
Create seçeneğine tıklayın.
Connector'ü dağıtma
Oluşturma işleminden sonra connector, Connectors sayfasında görünür. Connector'ü başlatmak için Actions sütunundaki Deploy seçeneğine tıklayın.
Function Compute hizmetini yapılandırma
Connector'ü dağıttıktan sonra Function Compute, kafka-service-<connector-name>-<random-string> adlı bir hizmeti otomatik olarak oluşturur. Elasticsearch kümesi özel bir uç nokta kullanıyorsa, Function Compute hizmetini Elasticsearch kümesiyle aynı VPC ve vSwitch'i kullanacak şekilde yapılandırın.
Connectors sayfasında connector'ü bulun. Actions sütununda More > Configure Function seçeneklerini belirleyin.
Function Compute konsolunda otomatik oluşturulan hizmeti bulun ve Elasticsearch kümesiyle eşleşecek şekilde VPC ve vSwitch ayarlarını güncelleyin.
Veri akışını doğrulama
Verilerin ApsaraMQ for Kafka'dan Elasticsearch'e aktığını onaylamak için bir test mesajı gönderin.
Test mesajı gönderme
Connectors sayfasında connector'ü bulun ve Actions sütunundaki Test seçeneğine tıklayın.
Send Message panelinde Method of Sending değerini Console olarak ayarlayın.
Message Key alanına bir anahtar girin; örneğin
demo.-
Message Content alanına bir JSON gövdesi girin; örneğin:
{"key": "test"} Send to Specified Partition seçeneği için belirli bir parçayı hedeflemek üzere Yes seçeneğine tıklayın ve bir Partition ID (örneğin
0) girin veya sistem tarafından atanmasını sağlamak için No seçeneğine tıklayın. Parça ID'lerini aramak için bkz. Parça durumunu görüntüleme.
Test mesajlarını Docker veya bir SDK üzerinden de gönderebilirsiniz. Method of Sending alanında ilgili seçeneği belirleyin ve ekrandaki talimatları izleyin.
Elasticsearch dizinini kontrol etme
-
Hedef dizinde arama yapmak için aşağıdaki sorguyu çalıştırın:
GET /<index_name>/_search -
Yanıtın gönderdiğiniz mesajı içerdiğini onaylayın. Başarılı bir yanıt şu şekildedir:
{ "took": 8, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": { "value": 1, "relation": "eq" }, "max_score": 1.0, "hits": [ { "_index": "product_****", "_type": "_doc", "_id": "TX3TZHgBfHNEDGoZ****", "_score": 1.0, "_source": { "msg_body": { "key": "test", "offset": 2, "overflowFlag": false, "partition": 2, "timestamp": 1616599282417, "topic": "dv****", "value": "test1", "valueSize": 8 }, "doc_as_upsert": true } } ] } }
Sorun giderme
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Connector Elasticsearch'e yazamıyor | Function Compute, Elasticsearch kümesine ulaşamıyor | Function Compute hizmetinin Elasticsearch kümesiyle aynı VPC ve vSwitch'i kullandığını doğrulayın. Bkz. Function Compute hizmetini yapılandırma. |
| Mesajlar tüketilmiyor | Yanlış tüketici ofseti ayarı | Consumer Offset ayarını kontrol edin. Mevcut tüm mesajları okumak için Earliest Offset seçeneğini, yalnızca yeni mesajlar için Latest Offset seçeneğini kullanın. |
| Kimlik doğrulama hataları | Geçersiz kimlik bilgileri veya yetersiz izinler | Kullanıcı adı ve şifrenin doğru olduğunu ve hesabın hedef dizinde yazma iznine sahip olduğunu onaylayın. |
Function Compute işlev çağrı günlükleri için bkz. Günlük kaydı özelliğini yapılandırma.