LogHub (SLS) veri kaynağı, DataWorks içinde Simple Log Service (SLS) ile diğer veri kaynakları arasında çift yönlü veri senkronizasyonu sağlar.
Özellikler
Simple Log Service (SLS) aşağıdaki veri senkronizasyonu senaryolarını destekler:
Farklı bölgelerdeki LogHub ile MaxCompute gibi veri kaynakları arasında veri senkronizasyonu.
Farklı Alibaba Cloud hesaplarındaki LogHub ile MaxCompute gibi veri kaynakları arasında veri senkronizasyonu.
Aynı Alibaba Cloud hesabındaki LogHub ile MaxCompute gibi veri kaynakları arasında veri senkronizasyonu.
Genel cloud ve China Finance Cloud hesapları arasındaki LogHub ile MaxCompute gibi veri kaynakları arasında veri senkronizasyonu.
Sınırlamalar
Data Integration, LogHub (SLS) üzerine çevrimdışı yazma işlemi yaparken bir yük devretme sonrası görev yeniden çalıştırılırsa veri çoğaltması oluşabilir. Bunun nedeni LogHub (SLS) işleminin idempotent olmamasıdır.
Desteklenen alan türleri
Data Integration, okuma ve yazma işlemleri için aşağıdaki LogHub (SLS) alan türlerini destekler.
|
|
|
|
|
|
|
|
|
|
Ayrıntılar:
-
Veriler çevrimdışı modda LogHub (SLS) üzerine yazılırken
Tüm veri türleri LogHub (SLS) üzerine yazılmadan önce STRING türüne dönüştürülür. Aşağıdaki tabloda LogHub (SLS) Writer tarafından yapılan veri türü dönüşümleri listelenmiştir.
Desteklenen Data Integration dahili türü
LogHub (SLS) üzerine yazıldığında veri türü
LONG
STRING
DOUBLE
STRING
STRING
STRING
DATE
STRING
BOOLEAN
STRING
BYTES
STRING -
Veriler gerçek zamanlı modda LogHub (SLS) üzerinden okunurken
Aşağıdaki meta veri alanları otomatik olarak dahil edilir.
LogHub (SLS) gerçek zamanlı senkronizasyon alanı
Veri türü
Açıklama
__time__
STRING
SLS ayrılmış alanı: __time__, günlük verileri yazıldığında günlük zamanını belirtir. Değer saniye cinsinden UNIX zaman damgasıdır.
__source__
STRING
SLS ayrılmış alanı: __source__, günlüğün kaynak cihazını belirtir.
__topic__
STRING
SLS ayrılmış alanı: __topic__, konu adını belirtir.
__tag__:__receive_time__
STRING
Günlüğün sunucuya ulaştığı zaman. Genel IP adreslerini kaydetme özelliğini etkinleştirdiğinizde, sunucu bu alanı ham günlüğe alındığında ekler. Değer saniye cinsinden UNIX zaman damgasıdır.
__tag__:__client_ip__
STRING
Günlüğün kaynak cihazının genel IP adresi. Genel IP adreslerini kaydetme özelliğini etkinleştirdiğinizde, sunucu bu alanı ham günlüğe alındığında ekler.
__tag__:__path__
STRING
Logtail tarafından toplanan günlük dosyasının yolu. Logtail bu alanı günlüğe otomatik olarak ekler.
__tag__:__hostname__
STRING
Logtail'in veri topladığı kaynak makinenin ana bilgisayar adı. Logtail bu alanı günlüğe otomatik olarak ekler.
Veri kaynağı oluşturma
Veri kaynağı yapılandırma
Bir veri senkronizasyonu görevi geliştirmeden önce, DataWorks'te ilgili veri kaynağını oluşturmanız gerekir. Prosedür için bkz. Veri kaynağı oluşturma. Yapılandırma parametrelerinin ayrıntılı açıklamaları için yapılandırma sayfasında görüntülenen araç ipuçlarına bakın.
Alibaba Cloud hesapları arasında veri kaynağı oluşturma
Aşağıdaki örnekte, B Hesabı'nın Data Integration'da bir senkronizasyon görevini nasıl yapılandırarak A Hesabı'ndan LogHub verilerini B Hesabı'nın MaxCompute hizmetine senkronize edeceği açıklanmaktadır. Hesaplar arası senaryolar için özel notlar şöyledir:
-
A Hesabı'nın AccessKey ID ve AccessKey Secret bilgilerini kullanarak bir LogHub veri kaynağı oluşturun.
Bu durumda, B Hesabı A Hesabı altındaki tüm SLS projelerinden veri senkronize edebilir.
-
A Hesabı altındaki RAM kullanıcısı A1'in AccessKey ID ve AccessKey Secret bilgilerini kullanarak bir LogHub veri kaynağı oluşturun.
-
A Hesabı, RAM kullanıcısı A1'e SLS için genel izinleri, yani
AliyunLogFullAccessveAliyunLogReadOnlyAccessilkelerini verir. Daha fazla bilgi için bkz. RAM kullanıcısı oluşturma ve izin verme.NotBir RAM kullanıcısına
AliyunLogFullAccessveAliyunLogReadOnlyAccesssistem ilkelerini ekledikten sonra, RAM kullanıcısı Alibaba Cloud hesabı altındaki tüm SLS kaynaklarını sorgulayabilir. -
A Hesabı, RAM kullanıcısı A1'e SLS için özel bir izin verir.
A Hesabı ile sayfasına giriş yapın ve Create Permission Policy seçeneğine tıklayın.
İlgili yetkilendirme hakkında bilgi için bkz. Erişim kontrolüne genel bakış ve RAM özel yetkilendirme örnekleri.
Aşağıdaki ilkeye göre RAM kullanıcısı A1'i yetkilendirdikten sonra, B Hesabı yalnızca RAM kullanıcısı A1 aracılığıyla project_name1 ve project_name2 SLS projelerinden veri senkronize edebilir.
{ "Version": "1", "Statement": [ { "Action": [ "log:Get*", "log:List*", "log:CreateConsumerGroup", "log:UpdateConsumerGroup", "log:DeleteConsumerGroup", "log:ListConsumerGroup", "log:ConsumerGroupUpdateCheckPoint", "log:ConsumerGroupHeartBeat", "log:GetConsumerGroupCheckPoint" ], "Resource": [ "acs:log:*:*:project/project_name1", "acs:log:*:*:project/project_name1/*", "acs:log:*:*:project/project_name2", "acs:log:*:*:project/project_name2/*" ], "Effect": "Allow" } ] }
-
Veri senkronizasyonu görevi geliştirme
Bir senkronizasyon görevini yapılandırmak için giriş noktası ve prosedür hakkında bilgi almak için aşağıdaki yapılandırma kılavuzlarına bakın.
LogHub veri kaynağı kaynak olarak kullanıldığında, görev yapılandırması sırasında LogHub sorgu sözdizimi veya SPL ifadeleri (SLS Processing Language, SLS'nin günlükleri işlemek için kullandığı sözdizimi) kullanarak LogHub'daki verileri filtreleyebilirsiniz. Sözdizimi hakkında ayrıntılı bilgi için bkz. Ek: LogHub veri filtreleme.
Tek tablo çevrimdışı senkronizasyon görevi yapılandırma kılavuzu
-
Prosedür için bkz. Kodsuz arayüzde tek tablo çevrimdışı senkronizasyon görevi yapılandırma ve Betik kullanarak tek tablo çevrimdışı senkronizasyon görevi yapılandırma.
NotKodsuz arayüz modunda bir senkronizasyon düğümü yapılandırdığınızda, parametre formatı betik modu parametre yapılandırma formatıyla tutarlı olmalıdır.
Betik modundaki tam parametreler ve betik demosu için aşağıdaki Betik modu parametreleri bölümüne bakın.
Tek tablo gerçek zamanlı senkronizasyon görevi yapılandırma kılavuzu
Prosedür için bkz. Tek tablo gerçek zamanlı senkronizasyon görevi yapılandırma.
Tam veritabanı gerçek zamanlı senkronizasyon ve diğer veritabanı düzeyinde senkronizasyon yapılandırma kılavuzu
Prosedür için bkz. Tam veritabanı gerçek zamanlı senkronizasyon görevi yapılandırma.
SSS
LogHub'da veri içeren bir alan, senkronizasyondan sonra boş görünüyor
LogHub'dan alan eşlemesi sırasında alınan alanlar beklenenden farklı
Data Integration ile ilgili daha yaygın sorunlar için bkz. Data Integration SSS.
Ek 1: Betik demosu ve parametre açıklaması
Kod düzenleyiciyi kullanarak toplu senkronizasyon görevi yapılandırma
Toplu senkronizasyon görevini kod düzenleyiciyi kullanarak yapılandırmak istiyorsanız, betikteki ilgili parametreleri birleşik betik formatı gereksinimlerine göre yapılandırmanız gerekir. Daha fazla bilgi için bkz. Betik modu yapılandırması. Aşağıdaki bilgiler, kod düzenleyiciyi kullanarak toplu senkronizasyon görevi yapılandırırken veri kaynakları için yapılandırmanız gereken parametreleri açıklar.
Reader betik demosu
Logstore'dan okuma demosu
{
"type":"job",
"version":"2.0",// The version number.
"steps":[
{
"stepType":"LogHub",// The plug-in name.
"parameter":{
"datasource":"",// The data source.
"column":[// The columns.
"col0",
"col1",
"col2",
"col3",
"col4",
"__category__",
"__source__",
"__topic__", // The log topic.
"__machineUUID__", // The unique identifier of the collection machine.
"__tag__:__hostname__", // The hostname.
"__tag__:__path__", // The path.
"__time__" // The event time.
],
"beginDateTime":"",// The start time for data consumption.
"batchSize":"",// The number of data entries queried from SLS at a time.
"endDateTime":"",// The end time for data consumption.
"fieldDelimiter":",",// The column delimiter.
"logstore":""// The name of the destination Logstore.
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// The number of error records.
},
"speed":{
"throttle":true,// If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":1 // The number of concurrent threads.
"mbps":"12",// The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
SPL ile veri işleme sonrası Logstore'dan okuma demosu
{
"type":"job",
"version":"2.0",// The version number.
"steps":[
{
"stepType":"LogHub",// The plug-in name.
"parameter":{
"datasource":"",// The data source.
"column":[// The columns.
"col100",
"col1"
],
"beginDateTime":"",// The start time for data consumption.
"batchSize":"",// The number of data entries queried from SLS at a time.
"endDateTime":"",// The end time for data consumption.
"fieldDelimiter":",",// The column delimiter.
"logstore":"",// The name of the destination Logstore.
"query":"* | where regexp_like(col0, '[0-9]+') | project col100=col0, col1 " // SPL
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// The number of error records.
},
"speed":{
"throttle":true,// If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":1 // The number of concurrent threads.
"mbps":"12",// The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
SPL ile alan genişletme sonrası Logstore'dan okuma demosu
{
"type":"job",
"version":"2.0",// The version number.
"steps":[
{
"stepType":"LogHub",// The plug-in name.
"parameter":{
"datasource":"",// The data source.
"column":[// The columns.
"col0",
"col1",
"col2",
"col3",
"col4",
"__category__",
"__source__",
"__topic__", // The log topic.
"__machineUUID__", // The unique identifier of the collection machine.
"__tag__:__hostname__", // The hostname.
"__tag__:__path__", // The path.
"__time__", // The event time.
"col100",
"col101"
],
"beginDateTime":"",// The start time for data consumption.
"batchSize":"",// The number of data entries queried from SLS at a time.
"endDateTime":"",// The end time for data consumption.
"fieldDelimiter":",",// The column delimiter.
"logstore":"",// The name of the destination Logstore.
"query":"* | where regexp_like(col0, '[0-9]+') | extend col100=cast(col2 as BIGINT), extend col101=date_parse(col3, '%Y-%m-%d %H:%i') ",// SPL
},
"name":"Reader",
"category":"reader"
},
{
"stepType":"stream",
"parameter":{},
"name":"Writer",
"category":"writer"
}
],
"setting":{
"errorLimit":{
"record":"0"// The number of error records.
},
"speed":{
"throttle":true,// If throttle is set to false, the mbps parameter does not take effect, which means throttling is disabled. If throttle is set to true, throttling is enabled.
"concurrent":1 // The number of concurrent threads.
"mbps":"12",// The throttling rate. 1 mbps = 1 MB/s.
}
},
"order":{
"hops":[
{
"from":"Reader",
"to":"Writer"
}
]
}
}
Reader betik parametreleri
Parametre | Açıklama | Zorunlu | Varsayılan değer |
endPoint | Simple Log Service uç noktası, bir projeye ve günlük verilerine erişmek için kullanılan URL'dir. Projenin bulunduğu Alibaba Cloud bölgesi ve proje adı ile ilişkilidir. Her bölgenin hizmet uç noktaları için bkz. Uç noktalar. | Evet | Yok |
accessId | Simple Log Service'e erişmek ve kullanıcıyı tanımlamak için kullanılan AccessKey ID. | Evet | Yok |
accessKey | Kullanıcı kimlik doğrulaması için Simple Log Service'e erişmek üzere kullanılan AccessKey. | Evet | Yok |
project | Hedef Simple Log Service projesinin adı. Proje, Simple Log Service'deki kaynak yönetim birimidir ve kaynakları yalıtmak ve yönetmek için kullanılır. | Evet | Yok |
logstore | Hedef Logstore'un adı. Logstore, Simple Log Service'de günlük verilerini toplamak, depolamak ve sorgulamak için kullanılan birimdir. | Evet | Yok |
batchSize | Tek bir sorguda Simple Log Service'den alınan veri girişi sayısı. | Hayır | 128 |
column | Her veri girişindeki sütun adları. Simple Log Service meta veri alanlarını senkronizasyon sütunları olarak yapılandırabilirsiniz. Simple Log Service; günlük konusu, toplama makinesinin benzersiz tanımlayıcısı, ana bilgisayar adı, yol ve günlük zamanı gibi meta verileri destekler. Not Sütun adları büyük/küçük harfe duyarlıdır. Daha fazla bilgi için aşağıdaki yapılandırılabilir sütun değerleri bölümüne bakın. | Evet | Yok |
beginDateTime | Veri tüketiminin başlangıç zamanı; bu, günlük verilerinin LogHub (SLS) üzerine geldiği zamandır. Bu parametre, zaman aralığının sol sınırını (dahil) belirtir. Bu parametreyi yyyyMMddHHmmss formatında bir zaman dizesi olarak ayarlayın (örneğin, 20180111013000). Bu parametreyi DataWorks zamanlama parametreleriyle birlikte kullanabilirsiniz. Örneğin, düğüm düzenleme sayfasının sağ tarafındaki Scheduling Settings bölümünde, Parameter alanında Not
| Evet | Yok |
endDateTime | Veri tüketiminin bitiş zamanı; bu, zaman aralığının sağ sınırıdır (hariç). Bu parametreyi yyyyMMddHHmmss formatında bir zaman dizesi olarak ayarlayın (örneğin, 20180111013010). Bu parametreyi DataWorks zamanlama parametreleriyle birlikte kullanabilirsiniz. Örneğin, düğüm düzenleme sayfasının sağ tarafındaki Scheduling Settings bölümünde, Parameter alanında endDateTime=${yyyymmdd} değerini ayarlayın ve ardından Log End Time değerini ${endDateTime}000000 olarak ayarlayın. Bu, günlük bitiş zamanının iş tarihinden sonraki günün 00:00:00 saati olduğunu gösterir. Daha fazla bilgi için bkz. Zamanlama parametreleri. Önemli
| Evet | Yok |
query | LogHub sorgu sözdizimi veya SPL ifadeleri (SLS Processing Language, SLS'nin günlükleri işlemek için kullandığı sözdizimdir) kullanarak LogHub'daki verileri filtreler. | Evet | Yok |
LogHub'dan okurken veri eksikliği yaşıyorsanız, LogHub konsolunda meta veri alanı receive_time değerinin görev için yapılandırılan zaman aralığı içinde olup olmadığını kontrol edin.
Özel iş alanlarına göre bölümlendirme
LogHub (SLS) çevrimdışı senkronizasyon görevleri için zaman filtresi her zaman __tag__:__receive_time__ temel alınır. start_time gibi özel iş alanlarına göre doğrudan filtreleme veya bölümlendirme desteklenmez. Verileri MaxCompute üzerinde özel bir iş alanına göre bölmek için aşağıdaki geçici çözümü kullanın:
Tüm LogHub (SLS) verilerini bir MaxCompute ara tablosuna senkronize etmek için bir çevrimdışı senkronizasyon görevi yapılandırın (bir bölüm alanı belirtmeden).
-
Bir MaxCompute SQL düğümü oluşturun ve verileri özel bir iş alanına (örneğin
start_time) göre hedef bölümlenmiş tabloya yazmak için aşağıdaki ifadeyi çalıştırın:INSERT OVERWRITE TABLE target_table PARTITION(start_time) SELECT col1, col2, start_time FROM temp_table; Bölüm değerlerini dinamik olarak iletmek ve günlük veya saatlik otomatik bölümlendirmeyi uygulamak için zamanlama parametrelerini kullanın.
Writer betik demosu
{
"type": "job",
"version": "2.0",// The version number.
"steps": [
{
"stepType": "stream",
"parameter": {},
"name": "Reader",
"category": "reader"
},
{
"stepType": "LogHub",// The plug-in name.
"parameter": {
"datasource": "",// The data source.
"column": [// The columns.
"col0",
"col1",
"col2",
"col3",
"col4",
"col5"
],
"topic": "",// The selected topic.
"batchSize": "1024",// The number of records to submit at a time.
"logstore": ""// The name of the destination LogService Logstore.
},
"name": "Writer",
"category": "writer"
}
],
"setting": {
"errorLimit": {
"record": ""// The number of error records.
},
"speed": {
"throttle":true,// If throttle is set to false, the mbps parameter does not take effect and bandwidth is not throttled. If throttle is set to true, bandwidth is throttled.
"concurrent":3, // The number of concurrent threads.
"mbps":"12"// The throttling rate. 1 mbps = 1 MB/s.
}
},
"order": {
"hops": [
{
"from": "Reader",
"to": "Writer"
}
]
}
}
Writer betik parametreleri
LogHub (SLS) Writer, Data Integration çerçevesi aracılığıyla Reader tarafından oluşturulan verileri alır ve ardından desteklenen tüm veri türlerini tek tek STRING türüne dönüştürür. Belirtilen batchSize değerine ulaşıldığında, veriler LogService Java SDK kullanılarak tek bir partide LogHub (SLS) üzerine gönderilir.
Parametre | Açıklama | Zorunlu | Varsayılan değer |
endpoint | Log Service uç noktası, bir projeye ve günlük verilerine erişmek için kullanılan URL'dir. Alibaba Cloud bölgesi ve proje adı tarafından belirlenir. Her bölgenin uç noktaları için bkz. Hizmet uç noktaları. | Evet | Yok |
accessKeyId | Log Service'e erişmek için kullanılan AccessKeyId. | Evet | Yok |
accessKeySecret | Log Service'e erişmek için kullanılan AccessKeySecret. | Evet | Yok |
project | Hedef Log Service projesinin adı. | Evet | Yok |
logstore | Hedef Logstore'un adı. Logstore, Log Service'de günlük verilerini toplamak, depolamak ve sorgulamak için kullanılan birimdir. | Evet | Yok |
topic | Hedef SLS'deki topic adı. | Hayır | Boş dize |
batchSize | Tek seferde LogHub (SLS) üzerine senkronize edilen veri kaydı sayısı. Varsayılan değer: 1.024. Maksimum değer: 4.096. Not LogHub (SLS) üzerine tek parti yazım için veri boyutu 5 MB'yi aşmamalıdır. Tekil kayıt boyutunuza göre partide gönderilen kayıt sayısını ayarlayın. | Hayır | 1.024 |
column | Her veri kaydındaki sütun adı. | Evet | Yok |
Ek 2: LogHub SPL sözdizimi filtreleme
LogHub veri kaynağı olarak kullanıldığında, görev yapılandırması sırasında LogHub'daki verileri filtrelemek için LogHub sorgu sözdizimi veya SPL (SLS Processing Language) ifadelerini kullanabilirsiniz. Sözdizimi aşağıda açıklanmıştır:
SPL hakkında daha fazla bilgi için bkz. SPL'ye genel bakış.
Senaryo | SQL ifadesi | SPL ifadesi |
Veri filtreleme | |
|
Alan işleme ve seçimi | Belirli alanları seçin ve yeniden adlandırın: |
|
Veri dönüştürme (SQL işlevlerini çağırma) | Veri türlerini dönüştürün, zaman damgalarını ayrıştırın ve daha fazlasını yapın: | Veri türlerini dönüştürün, zaman damgalarını ayrıştırın ve daha fazlasını yapın: |
Alan çıkarma | Düzenli ifade çıkarma: JSON çıkarma: |
|
Ek 3: Yapılandırılabilir sütun değerleri
Tam alan okuma mantığı yalnızca column tam olarak bir * veya "*" öğesi içerdiğinde tetiklenir. Aksi takdirde, her column öğesi normal eşleştirme sırasına göre işlenir. Örneğin, ["*", "__time__"] şeklinde yapılandırırsanız, * tam alan okuma mantığını tetiklemez. Bunun yerine, normal bir alan adı olarak eşleştirilir ve genellikle null çıktısı verir.
Normal eşleştirme sırası şöyledir: normal günlük içerik alanları → Reader yerleşik meta alan eşlemesi → tek tırnaklı sabitler → __tag__:<tagKey> → null. Normal bir günlük içerik alanının adı bir meta alan veya LogTag anahtarıyla aynıysa, normal günlük içerik alanı önceliklidir.
Aşağıdaki tabloda, SLS ayrılmış alanlarının alan tanımlarına dayanarak, LogHub Reader column ayarlarında kullanıcıya yönelik yapılandırmalar için yaygın olarak kullanılan ve önerilen alanlar listelenmiştir. Bir alanın değerinin bulunup bulunmadığı, gerçek günlük içeriğine, LogGroup meta verilerine ve alınan LogTags'e bağlıdır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Yapılandırma örneği:
"column": [
"content",
"__time__",
"__source__",
"__tag__:__receive_time__",
"'constant_value'"
]