Metrik yapılandırmaları, Telemetri hizmetinin çalıştırdığı telemetri kampanyalarını tanımlar. Metrik yapılandırması, MetricsConfig
protokol arabelleği (protobuf) mesajının bir örneğidir. Metrik yapılandırmaları, verilerin nasıl toplanacağını, işleneceğini ve raporlanacağını belirtir. OEM'ler, Telemetry hizmetinin API'si aracılığıyla metrik yapılandırmalarını etkinleştirebilir. Birden fazla yapılandırma aynı anda çalıştırılabilir.
Başlamadan önce, hizmetlerin verileri protobuf mesajları olarak yayınladığı hizmet odaklı bir mimari olan SDV mimarisi hakkında bilgi edinin. Bu mesajlar, RPC veya yayınlama/abone olma yoluyla SDV iletişim yığını kullanılarak iletilir.
Anahtar terimler
Metrik yapılandırması, veri kaynaklarını, işleme kurallarını ve raporlama mekanizmalarını tanımlayarak veri toplama sürecini düzenler. Bu uç işleme yönteminin temel avantajlarından biri, mobil veri kullanımının azalmasıdır. Yüksek frekanslı verileri cihazda işleyip yalnızca toplamları veya analizleri yükleyerek buluta iletilen veri miktarını önemli ölçüde azaltırsınız.
Metrik yapılandırmasının tanımı, yapılandırmada kullanılacak veri kaynaklarının listelenmesiyle başlar. Bunlar, SDV iletişim yığını üzerinden verileri kullanılabilir hale getiren hizmetlerdir. Bir yapılandırmayı etkinleştirdiğinizde Telemetri hizmeti, gerektiğinde verileri yayınlamak veya getirmek için bu kaynaklara bağlanır.
Yapılandırmanın temelini, durum bilgisi olan veri toplayıcılar aracılığıyla yönetilen uç veri işleme özelliği oluşturur. Her toplayıcı, durum bilgisi olan bir proto mesaj örneğini koruyan bir mesaj oluşturucu kullanır. Bu mesajdaki her alan, bir ifade değerlendirilerek, diğer veri kaynaklarından veya toplayıcılardan hangi verilerin okunacağını ve verilere hangi matematiksel, mantıksal ya da toplama işlemlerinin uygulanacağını tanımlayarak doldurulur. Bir ifadenin sonucuna ek toplama işlemleri uygulayabilirsiniz.
Bu süreci kontrol etmek için tetikleyiciler kullanılır. Bunlar, yeni verilere yanıt olarak veya veriye dayalı koşullar karşılandığında düzenli olarak tetiklenebilir. Tetikleyiciler, toplayıcıların mesaj oluşturucularını ne zaman değerlendireceğini, metrik raporlarının ne zaman oluşturulacağını belirler ve veri toplamayı başlatma veya durdurma gibi işlemlerle yapılandırma yaşam döngüsünü etkileyebilir.
Son çıktı metrik raporlarıdır. Her rapor, mesaj oluşturucu tarafından tanımlanan veri yükünün yanı sıra zaman damgaları ve rapor kimliği gibi meta verileri içerir. Yapılandırma etkinleştirildiğinde veya devre dışı bırakıldığında olduğu gibi, yapılandırma yaşam döngüsünün belirli anlarında rapor oluşturabilirsiniz. Oluşturulan raporlar bellekte depolanır ve istemci, rapor durumu bildirim kanalı üzerinden raporu almak için bilgilendirilir.
Aşağıdaki şekilde, bileşenlerin metrik yapılandırmasında nasıl etkileşime girebileceğine dair kavramsal bir örnek verilmiştir:
Şekil 1. Metrik yapılandırması içindeki veri kaynakları, işleme ve raporlama.
Metrik yapılandırma bileşenleri
Veri toplama görevlerini ve karmaşık cihaz üzerinde işleme ardışık düzenlerini tanımlamak için metrik yapılandırmalarını kullanabilirsiniz. Bu bölümde, metrik kampanyası tanımlamak için kullanılan temel bileşenler ayrıntılı olarak açıklanmaktadır. Bileşenler, verilerin sistemde akış sırasına göre (girişten çıkışa) sunulur. Bu bileşenleri istediğiniz sırayla tanımlayabilirsiniz. Toplayıcılarla veri işleme ve yaşam döngüsü yönetimi isteğe bağlıdır.
- Veri kaynaklarını tanımlama
- Verileri toplayıcılarla işleme
- Tetikleyicilerle yürütme akışını kontrol etme
- Metrik raporları oluşturma
- Veri toplama yaşam döngüsünü yönetme
Veri kaynaklarını tanımlama
Herhangi bir metrik kampanyasının temelinde veriler yer alır. Metrik yapılandırmasında, veri alma mekanizması soyutlanır ve yalnızca bir veri kaynağının tanımlanabileceği adı ve bağlantı modunu (abonelik veya isteğe bağlı) belirtmeniz gerekir. Veri kaynakları, SDV iletişim yığını aracılığıyla verileri kullanılabilir hale getiren veya SDV ara yazılımının kullanılamadığı uygulamalardan veri toplanmasını sağlayan Configurable Publisher Registry'ye kaydolan herhangi bir hizmet olabilir. Her veri kaynağı, yapılandırma içinde benzersiz bir ada sahip olmalıdır. Böylece, tetikleyiciler veya toplayıcılar gibi diğer metrik yapılandırma bileşenleri tarafından referans verilebilir. Nasıl bağlanacağını, ne sıklıkta veri alacağını yapılandırabilir ve hizmete özel bir yapılandırma nesnesi sağlayabilirsiniz.
Veri kaynaklarının yapılandırılması
Telemetri hizmeti, bir veri kaynağına iki şekilde bağlanabilir:
- Getter: Bu yöntem, metrik yapılandırmasında tanımlanan bir ifadenin bu kaynaktan veri okuması gerektiğinde verileri isteğe bağlı olarak getirir. Bu özellik, sürekli akış sağlamayan veri kaynakları veya verilerin seyrek olarak anlık görüntülerine ihtiyaç duyduğunuz durumlarda kullanışlıdır.
- Abonelik: Bu, varsayılan yöntemdir. Kaynakta sürekli bir veri akışı oluşturur. Bu bağlantı türü, bu kaynaktan yeni iletiler geldiğinde tetiklenen bir veri tetikleyicisi kullanmayı planlıyorsanız gereklidir.
Abonelik kullanırken şunları yapılandırabilirsiniz:
- Alt örnekleme: Verilerin çok sık alınmasını önlemek için aynı kaynaktan gelen ardışık mesajlar arasında minimum bir zaman aralığı tanımlayabilirsiniz. Kaynak, verileri bu aralıktan daha hızlı yayınlarsa Telemetri hizmeti bildirimleri kısıtlar ve veri tetikleyicileri yalnızca kısıtlamadan sonra alınan iletiler için etkinleşir. Bu işlem, verileri etkili bir şekilde alt örnekler hâlinde alır.
- İlk mesaj alma: Hizmeti, abonelik oluşturulduğunda kaynaktan en yeni mesajı alacak şekilde yapılandırabilirsiniz. Bu nedenle, veri kaynağı, ilk yeni mesajın yayınlanmasını beklemek yerine, varsa hemen bir değerle doldurulur. Bu işlev, başlangıç durumu gerektiren koşullu tetikleyicilerde veya toplayıcılarda ya da veri kaynağı seyrek yayın yaptığında kullanışlıdır.
Türünden bağımsız olarak iletiler dahili olarak önbelleğe alınır. Tek bir değerlendirme döngüsü sırasında birden fazla ifade veya toplayıcı aynı kaynaktan veri gerektiriyorsa sistem, verileri yalnızca bir kez getirir. Bu işlem, abonelik kullanılarak yeni bir mesaj geldiyse önbellekten veya tek bir isteğe bağlı çağrı kullanılarak yapılır.
Verileri toplayıcılarla işleme
Veri kaynakları ham veriler sağlarken toplayıcılar durum bilgisi olan, uç verileri işleme gerçekleştirir. Veri kaynaklarından veya diğer toplayıcılardan veri alırlar, bu verileri dönüştürürler ve sonuçları metrik raporları tarafından okunabilir ya da diğer toplayıcılar tarafından daha fazla işlenebilir hale getirirler. Bu sayede çok kademeli işleme ardışık düzenleri oluşturmak mümkün olur. Örneğin, bir toplayıcıda hız istatistikleri hesaplanabilir ve bu istatistikler, sürüş davranış kalıplarını algılayan başka bir bileşende kullanılabilir.
Toplayıcılar, hesaplamalarını yapmak için bir veya daha fazla tetikleyici tarafından tetiklenir. Toplayıcı, tetikleyicilerinden biri her tetiklendiğinde kurallarını değerlendirir ve iç durumunu günceller.
Bir toplayıcıyı, değeri başka bir bileşen tarafından okunduktan sonra durumunu sıfırlayacak şekilde yapılandırabilirsiniz. Bu, istatistikleri çakışmayan zaman aralıklarında hesaplamak için kullanışlıdır.
Mesaj oluşturucu, bir toplayıcının yapısını ve mantığını tanımlar. Bir ileti oluşturucu, her alanıyla ilgili verilerin nasıl oluşturulacağını açıklayarak bir proto ileti örneğinin nasıl oluşturulacağını belirtir. Her alan için bir ifade, veri kaynaklarından ve toplayıcılardan verilerin nasıl okunacağını ve bu verilere nasıl işlemler uygulanacağını tanımlar. Ayrıca, zaman içinde ifadenin sonuçlarına uygulanan bir hesaplama veya toplama işlemi olan toplama da uygulayabilirsiniz.
Aşağıdaki toplama türleri desteklenir:
- Matematiksel: Her tetikleyicideki bir ifadenin döndürdüğü değerler üzerinde istatistikleri (ortalama, minimum, maksimum, toplam, standart sapma ve delta) hesaplar. Delta, bir ifade tarafından döndürülen geçerli ve önceki sayısal değer arasındaki farktır.
- Liste: Bir ifade tarafından döndürülen değerleri bir listede toplar. Son değerlerin kayan penceresini (halka arabellek) oluşturmak için liste boyutunu sınırlayabilirsiniz.
- Sayı: İfadenin belirtilmediği özel durum. Alanının kaç kez değerlendirildiğini (yani toplayıcının veya raporun kaç kez tetiklendiğini) sayar.
- Geçiş: Bir toplama işlemi uygulamadan bir ifadenin sonucunu doğrudan kullanır. Bu işlev, toplayıcılardan nihai değerlere erişmek için rapor yapılandırmalarında kullanışlıdır.
Aşağıdaki şekil, toplayıcı değerlendirmesini gösteren kavramsal bir şemadır:
Şekil 2. Toplayıcı değerlendirmesi.
İfadeleri kullanarak hesaplamalar yapma veya koşullar tanımlama
İfadeler, hesaplamalar yapmak veya koşulları tanımlamak için ileti oluşturucularda ve koşullu tetikleyicilerde kullanılır. Metrik Yapılandırma JSON nesneleri oluşturmak için Metrik Yapılandırma Oluşturucu'yu (MCG) kullanırken ifadeler, veri kaynağının alanlarına erişmek için nokta gösterimini kullanan (örneğin, vehicle_speed.speed_value) ve çok çeşitli işlemleri uygulayan, insan tarafından okunabilir dizeler olarak yazılır. MCG, bu dizeleri son MetricsConfig protobuf mesajında cihaz üzerinde verimli bir şekilde değerlendirmek için soyut sözdizimi ağacına (AST) benzer şekilde optimize edilmiş bir ağaç yapısına çevirir.
Operatörler ve işlevler
İfadeler, aşağıdaki operatör ve işlevleri destekler:
- Aritmetik: Toplama, çıkarma (ikili ve tekli), çarpma, bölme, modulo ve üs işlemlerini destekler.
- Mantıksal: VE, VEYA, DEĞİL ve XOR'u destekler.
- İlişkisel: Eşitlik kontrolü ile büyüktür ve küçüktür karşılaştırmasını destekler.
- Liste: Bir listenin belirli bir değeri içerip içermediğini kontrol eder.
- Timestamp: Değerlendirme sırasındaki zaman damgasını mikrosaniye cinsinden döndürür. Saat türü, gerçek zamanlı saat, başlatmadan bu yana geçen tekdüze süre (askıya alma süresi dahil) veya başlatmadan ya da son devam ettirmeden bu yana geçen tekdüze süre olabilir.
- Mutlak değer: Bir sayının mutlak değerini döndürür.
- Yuvarlama: En yakın tam sayıya yuvarlar (
round), bir sayıdan küçük veya bu sayıya eşit en büyük tam sayıyı döndürür (floor) ya da bir sayıdan büyük veya bu sayıya eşit en küçük tam sayıyı döndürür (ceil).
Aşağıda, iki veri kaynağından okuma yapan ve araç hızı 100 km/sa'i aşıp lastik basıncı uyarısı yoksa true olarak değerlendirilen bir örnek ifade verilmiştir:
(vehicle_speed.speed_value * 3.6) > 100 && tire_pressure.warning == false
Tetikleyicilerle yürütme akışını kontrol etme
Tetikleyiciler, metrik yapılandırmasının düzenleyicileridir. Verilerin ne zaman işleneceğini ve raporların ne zaman oluşturulacağını kontrol ederler. Her tetikleyicinin benzersiz bir adı olmalıdır.
Üç tür tetikleyici vardır:
- Veri tetikleyicileri: Abonelik bağlantısı olan bir veri kaynağı yeni bir mesaj yayınladığında (yapılandırılmışsa alt örnekleme işleminden sonra) tetiklenir.
- Periyodik tetikleyiciler: Sabit bir zaman aralığında etkinleşir.
- Koşullu tetikleyiciler: Belirtilen bir mantıksal koşul karşılandığında etkinleşir.
Koşullu tetikleyiciler
Koşullu tetikleyiciler diğer tetikleyicileri (veri, periyodik veya diğer koşullu tetikleyiciler) dinler ve bu tetikleyicilerden biri tetiklendiğinde bir ifadeyi değerlendirir. Koşullu tetikleyici yalnızca ifadenin sonucu belirli bir koşulu karşılıyorsa tetiklenir.
Koşullu bir tetikleyiciyi çeşitli koşul türlerine göre tetiklenecek şekilde yapılandırabilirsiniz:
- Değer: İfade
true(veya sıfır olmayan) ya dafalse(veya sıfır) olarak değerlendirildiğinde. - Yükselen kenar: Boole ifadesi
false'dentrue'e değiştiğinde veya sayısal değer arttığında. - Düşen kenar: Boole ifadesi
true'denfalse'e değiştiğinde veya sayısal değer azaldığında. - Değişiklikte: İfadenin sonucu önceki değerinden farklı olduğunda.
Gürültülü durum değişikliklerini filtreleme
Kenar tabanlı veya değişiklik üzerine tetikleyiciler için, tetikleyici etkinleştirilmeden önce koşulun minimum süre boyunca yeni durumda kalmasını sağlayarak kısa veya gürültülü durum değişikliklerini (aksaklıklar) filtreleyebilirsiniz.
Örneğin, bir tetikleyiciyi yalnızca vehicle_speed > 100 true olur ve en az 5 saniye boyunca true olarak kalırsa tetiklenecek şekilde yapılandırabilirsiniz. Bu, tetikleyicinin okuma hızındaki anlık artış nedeniyle tetiklenmesini önler. Ayrıca, bu bekletme süresi boyunca görülen tüm değerlerin tam olarak eşit olmasını da zorunlu kılabilirsiniz.
Metrik raporları oluşturma
Veriler işlendikten sonra, raporlara nasıl ve ne zaman paketleneceğini tanımlarsınız.
Raporlar, çıkışlarının yapısını ve içeriğini tanımlamak için ileti oluşturucuları kullanan metrik rapor yapılandırmaları kullanılarak tanımlanır. Raporun tetikleyicilerinden biri tetiklendiğinde ileti oluşturucu, raporun veri yükünü oluşturmak için alan atamalarını değerlendirir.
Oluşturulan her rapor, mesaj oluşturucunun çıktısını payload alanına sarmalayan ve meta veriler ekleyen bir MetricsReport Protobuf mesajı örneğidir. Telemetri hizmeti, her MetricsReport öğesine aşağıdaki meta verileri otomatik olarak ekler:
- Rapor için evrensel olarak benzersiz tanımlayıcı (UUID)
- Bu rapor yapılandırması tarafından oluşturulan her rapor için artan sıralı rapor numarası
- Raporun oluşturulduğu zamanı gösteren zaman damgası
- Oluşturma nedeni (örneğin, bir kural tarafından tetiklendi veya kapatma sırasında oluşturuldu)
- Raporu oluşturan metrik yapılandırmasının UUID'si ve sürümü
- Metrik raporu yapılandırmasının adı
Rapor oluşturma kontrolü
Raporlar genellikle tetikleyicilere yanıt olarak oluşturulsa da bunları, metrik yapılandırmasının yaşam döngüsündeki belirli anlarda oluşturulacak şekilde de yapılandırabilirsiniz:
- Etkinleştirme raporu: Etkinleştirilirse sistem, metrik yapılandırması etkinleştirildiğinde hemen bir ilk rapor oluşturur.
- Son rapor: Etkinleştirilirse sistem, veri toplama işlemi duraklatıldığında veya durdurulduğunda ya da Telemetri hizmeti kapatıldığında son bir rapor oluşturur. Bu rapor, o noktaya kadar toplanan verileri içerir ve oturumun sonunda veri kaybı olmamasını sağlar.
Veri toplama yaşam döngüsünü yönetme
Varsayılan olarak, bir metrik yapılandırması bir istemci tarafından etkinleştirildiği anda veri toplamaya ve işlemeye başlar ve istemci tarafından devre dışı bırakılana kadar devam eder. Ancak, veri toplama veya metrik yapılandırmasını başlatan ya da durduran tetikleyiciler tanımlayarak bu yaşam döngüsünü daha ayrıntılı bir şekilde kontrol edebilirsiniz:
- Başlatma tetikleyicisi: Tanımlanmışsa veri toplama işlemi yalnızca bu tetikleyici etkinleştirildiğinde başlar. Koleksiyon, durdurma tetikleyicisi tarafından duraklatıldıysa başlatma tetikleyicisi koleksiyonu devam ettirir.
- Durdurma tetikleyicisi: Tanımlanırsa bu tetikleyici, veri toplamayı duraklatır. Başlatma tetikleyicisi tekrar tetiklenene kadar toplama ve rapor oluşturma işlemleri durdurulur.
- Tetikleyiciyi devre dışı bırakma: Bu tetikleyici, metrik yapılandırmasını istemciden gelen bir
deactivate_metrics_configçağrısıyla aynı şekilde devre dışı bırakır.
Örneğin, başlangıç tetikleyicisi olarak vehicle_state değeri DRIVING olarak değiştiğinde tetiklenen bir koşullu tetikleyici, durdurma tetikleyicisi olarak da vehicle_state değeri PARKED olarak değiştiğinde tetiklenen başka bir tetikleyici tanımlayabilirsiniz. Bu, verilerin yalnızca araç hareket halindeyken toplanmasını sağlar.