Azure İzleyici ile sanal makineden metin dosyası toplama

Sanal makinedeki birçok uygulama ve hizmet, Windows Olay günlüğü veya Syslog gibi standart günlük hizmetleri yerine metin dosyalarına bilgi kaydeder. Sanal makinelerden özel metin günlüklerini toplama, Özel Metin Günlükleri veri kaynağına sahip bir veri toplama kuralı (DCR) kullanılarak toplanabilir.

DCR'nin oluşturulmasıyla ilgili ayrıntılar , Azure İzleyici ile VM istemcisinden veri toplama bölümünde sağlanır. Bu makalede, Özel Metin Günlükleri veri kaynağı türü için ek ayrıntılar sağlanır.

Uyarı

Doğrudan DCR tanımıyla çalışmak veya ARM şablonları gibi diğer yöntemlerle dağıtmak için bkz. Azure İzleyici'de veri toplama kuralı (DCR) örnekleri.

Önkoşullar

Azure İzleyici ile sanal makine istemcisinden veri toplama bölümünde listelenen önkoşullara ek olarak, verileri almak için Log Analytics çalışma alanında özel bir tabloya ihtiyacınız vardır. Bu tablonun gereksinimleri hakkında ayrıntılı bilgi için bkz. Log Analytics çalışma alanı tablosu. Aarch64 alma8 ve rocky8'in desteklenmediğini unutmayın.

Özel metin dosyası veri kaynağını yapılandırma

Azure İzleyici ile sanal makine istemcisinden veri toplama bölümünde yer alan işlemi kullanarak DCR'yi oluşturun. DCR'nin Topla ve teslim edin sekmesinde Veri kaynağı türü açılan listesinden Özel Metin Günlükleri'ni seçin.

Metin dosyası koleksiyonunun yapılandırmasını gösteren ekran görüntüsü.

Özel Metin Günlükleri yapılandırmasında sağlanan seçenekler aşağıdaki tabloda açıklanmıştır.

Ayarlar Açıklama
Dosya düzeni Yerel diskte günlük dosyalarının konumunu ve adını tanımlar. Farklı dosya adları için, örneğin her gün yeni bir adla yeni bir dosya oluşturulduğunda joker karakter kullanın. Virgülle ayrılmış birden çok dosya deseni girebilirsiniz. Yalnızca dosya adında ve dosyadan önce gelen birinci düzey klasör adında joker karakterler kullanabilirsiniz.

Örnekler:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
-C:\Logs\IIS*\*.logs
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
- /var/logs/*/*
Tablo adı Log Analytics Çalışma Alanınızdaki hedef tablonun adı. Bu tablo zaten var olmalıdır.
Kayıt sınırlayıcısı Günlük girdileri arasındaki sınırlayıcıyı gösterir. TimeStamp izin verilen tek değerdir. Bu, yeni bir kaydın başlangıcını tanımlamak için içinde timeFormat belirtilen biçimde bir tarih arar. Belirtilen biçimde tarih bulunmazsa satır sonu kullanılır. Daha fazla ayrıntı için bkz. Saat biçimleri .
TimeStamp Biçimi Aşağıdaki Saat biçimleri bölümünde açıklandığı gibi günlük dosyasında kullanılan saat biçimi.
Dönüşüm Kayıtları filtrelemek veya hedef tabloda gelen verileri biçimlendirmek için veri girişi sırasında dönüşüm. Gelen verileri değişmeden bırakmak ve source sütununa göndermek için RawData kullanın. Dönüştürmenin nasıl kullanıldığını gösteren bir örnek için Sınırlandırılmış günlük dosyaları bölümüne bakın.

Hedefler ekle

Özel metin günlükleri yalnızca oluşturduğunuz özel tabloda depolandığı Log Analytics çalışma alanına gönderilebilir. Azure İzleyici Günlükleri türünde bir hedef ekleyin ve bir Log Analytics çalışma alanı seçin. Özel bir metin günlüğü veri kaynağı için DCR'ye yalnızca tek bir çalışma alanı ekleyebilirsiniz. Birden çok hedefe ihtiyacınız varsa, birden çok DCR oluşturun. Bunun her birine yinelenen veriler göndereceğini ve bunun ek maliyete neden olacağını unutmayın.

Veri toplama kuralında Azure İzleyici Günlükleri hedefinin yapılandırmasını gösteren ekran görüntüsü.

Saat biçimleri

Aşağıdaki tabloda DCR ayarında timeFormat desteklenen zaman biçimleri açıklanmaktadır. Belirtilen biçime sahip bir süre günlük girdisine dahil edilirse, yeni bir günlük girdisini tanımlamak için kullanılır. Belirtilen biçimde tarih bulunmazsa sınırlayıcı olarak satır sonu kullanılır. Bu ayarın nasıl kullanıldığı hakkında daha fazla açıklama için bkz. Çok satırlı günlük dosyaları .

Saat biçimi Örnek
ISO 8601 1 2024-10-29T18:28:34Z
yyyy-MM-ddTHH:mm:ssk 2024-10-29T18:28:34Z
2024-10-29T18:28:34+01:11
YYYY-MM-DD HH:MM:SS 2024-10-29 18:28:34
M/D/YYYY HH:MM:SS AM/PM 29/10/2024 06:28:34
Mon DD, YYYY HH:MM:SS 29 Ekim 2024 18:28:34
yyMMdd HH:mm:ss 241029 18:28:34
ddMMyy HH:mm:ss 291024 18:28:34
MMM d HH:mm:ss 29 Ekim 18:28:34
dd/MMM/yyyy:HH:mm:ss zzz 14/Ekim/2024:18:28:34 -00

1 ISO 8601 zaman damgaları, ondalık kesir / altsaniye duyarlılığına sahip olanlar desteklenmez.

Metin dosyası gereksinimleri ve en iyi yöntemler

Azure İzleyici'nin topladığı dosya aşağıdaki gereksinimleri karşılamalıdır:

  • Dosya, izlenen dizinde aracı makinesinin yerel sürücüsünde depolanmalıdır.
  • Dosya ASCII veya UTF-8 kodlaması kullanmalıdır. UTF-16 gibi diğer biçimler desteklenmez.
  • Yeni kayıtlar dosyanın sonuna eklenmelidir ve eski kayıtların üzerine yazılmamalıdır. Üzerine yazma veri kaybına neden olur.

Aşağıda Azure İzleyici tarafından toplanabilir tipik bir özel metin dosyası örneği verilmiştir. Her satır bir tarihle başlasa da, tarih bulunamazsa her girişi tanımlamak için satır sonu kullanılacağından bu gerekli değildir.

2024-06-21 19:17:34,1423,Error,Sales,Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,Nightly backup complete.

Veri kaybı veya performans sorunları yaşamadığınızdan emin olmak için aşağıdaki önerilere uyun:

  • Günlük dosyalarıyla 10'dan fazla dizini hedeflemeyin. Çok fazla dizin yoklaması performansın düşmesine neden olur.
  • İzlenen dizindeki log dosyalarını sürekli temizleyin. Birçok günlük dosyasını izlemek, aracın CPU ve Bellek kullanımını artırabilir. Tüm günlüklerin işlenmesi için en az iki gün bekleyin.
  • Dosya tarama düzeniyle eşleşen bir dosyayı, aynı zamanda dosya tarama düzeniyle eşleşen başka bir adla yeniden adlandırmayın. Bu, yinelenen verilerin alınmasına neden olur.
  • Dosya tarama düzeniyle eşleşen büyük günlük dosyalarını izlenen dizine yeniden adlandırmayın veya kopyalamayın. Gerekirse dakikada 50 MB'ı geçmeyin.

Log Analytics çalışma alanı tablosu

Günlük dosyasındaki her girdi oluşturulduktan sonra toplanır ve Log Analytics çalışma alanında belirtilen tabloya gönderilir. DCR'yi oluşturmadan önce Log Analytics çalışma alanında verileri alacak özel tablonun mevcut olması gerekir.

Aşağıdaki tabloda çalışma alanı tablosundaki gerekli ve isteğe bağlı sütunlar açıklanmaktadır. Tablo başka sütunlar içerebilir, ancak verileri Sınırlandırılmış günlük dosyalarında açıklandığı gibi bir dönüştürmeyle ayrıştırmadığınız sürece bunlar doldurulamaz.

Sütun Türü Gerekli mi? Açıklama
TimeGenerated tarih/zaman Evet Bu sütun, kaydın oluşturulduğu saati içerir ve tüm tablolarda gereklidir. Bu değer, kaydın Log Analytics çalışma alanına eklenme zamanıyla otomatik olarak doldurulur. Bu değeri, TimeGenerated'yi günlük girdisinden bir değere ayarlamak için bir dönüştürme kullanarak geçersiz kılabilirsiniz.
RawData String Evet 1 Günlük kaydının tamamı tek bir sütunda. Tabloya göndermeden önce bu verileri birden çok sütuna bölmek istiyorsanız bir dönüştürme kullanabilirsiniz.
Computer String Hayı Tablo bu sütunu içeriyorsa, günlük girdisinin toplandığı bilgisayarın adıyla doldurulur.
FilePath String Hayı Tablo bu sütunu içeriyorsa, bu sütun günlük kaydının toplandığı dosyanın yolu ile doldurulur.

1 Verileri birden çok sütuna ayrıştırmak için bir dönüştürme kullanırsanız tablonun sütun içermesi RawData gerekmez.

Varsayılan ayarlar kullanılarak toplandığında, yukarıda gösterilen örnek günlük dosyasındaki veriler bir günlük sorgusuyla alındığında aşağıdaki gibi görünür.

Varsayılan dosya koleksiyonunun sonuçlarını döndüren günlük sorgusunu gösteren ekran görüntüsü.

Özel tablo oluşturma

Hedef tablo henüz yoksa DCR'yi oluşturmadan önce bunu oluşturmanız gerekir. Tablo oluşturmak için farklı yöntemleri görmek için Özel tablo oluşturma'ya bakın.

Örneğin, verileri özel bir metin günlüğünden almak üzere özel bir tablo oluşturmak için aşağıdaki PowerShell betiğini kullanabilirsiniz. Bu örnek isteğe bağlı sütunları da ekler.

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
                    {
                        "name": "TimeGenerated",
                        "type": "DateTime"
                    }, 
                    {
                        "name": "Computer",
                        "type": "string"
                    },
                    {
                        "name": "FilePath",
                        "type": "string"
                    },
                    {
                        "name": "RawData",
                        "type": "string"
                    }
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{workspace}/tables/MyTable_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

Çok satırlı günlük dosyaları

Bazı günlük dosyaları birden çok satıra yayılan girdiler içerebilir. Her günlük girdisi bir tarihle başlıyorsa, bu tarih her günlük girdisini tanımlamak için sınırlayıcı olarak kullanılabilir. Bu durumda, ek satırlar RawData sütununda birleştirilir.

Örneğin, önceki örnekteki metin dosyası aşağıdaki gibi biçimlendirilmiş olabilir:

2024-06-21 19:17:34,1423,Error,Sales,
Unable to connect to pricing service.
2024-06-21 19:18:23,1420,Information,Sales,
Pricing service connection established.
2024-06-21 21:45:13,2011,Warning,Procurement,
Module failed and was restarted.
2024-06-21 23:53:31,4100,Information,Data,
Nightly backup complete.

DCR'de zaman damgası biçimi YYYY-MM-DD HH:MM:SS kullanılıyorsa, veriler önceki örnekte olduğu gibi toplanır. Ek satırlar RawData sütununa dahil edilir. Günlük girdisindeki tarihle eşleşmeyen başka bir zaman damgası biçimi kullanıldıysa, her giriş iki ayrı kayıt olarak toplanır.

Sınırlandırılmış günlük dosyaları

Birçok metin günlüğü dosyasında virgül gibi bir karakterle sınırlandırılmış sütunlar içeren girdiler vardır. Girdinin tamamını sütuna RawData göndermek yerine, her birinin hedef tabloda doldurulabilmesi için verileri ayrı sütunlar halinde ayrıştırabilirsiniz. Bu ayrıştırma işlemini gerçekleştirmek için split işleviyle bir dönüştürme kullanın.

Yukarıda gösterilen örnek metin dosyası virgülle ayrılmıştır ve alanlar şu şekilde açıklanabilir: Time, Code, Severity, Moduleve Message. Bu verileri ayrı sütunlar halinde ayrıştırmak için, sütunların her birini hedef tabloya ekleyin ve aşağıdaki dönüştürmeyi DCR'ye ekleyin.

Önemli

Bu dönüşümü DCR'ye eklemeden önce, bu sütunları hedef tabloya eklemeniz gerekir. Yukarıdaki PowerShell betiğini, tablo oluşturulduğunda ek sütunları içerecek şekilde değiştirebilirsiniz. Veya azure portalını, sütunları var olan bir tabloya eklemek için Özel sütun ekleme veya silme başlığında açıklandığı gibi kullanabilirsiniz.

Dönüştürme sorgusunun önemli ayrıntıları şunlardır:

  • Sorgu, hedef tablodaki bir sütun adıyla eşleşen özelliklerin çıktısını verir.
  • Bu örnek, Time özelliğini günlük dosyasında yeniden adlandırarak bu değerin TimeGenerated için kullanılmasını sağlar. Eğer bu sağlanmadıysa, TimeGenerated alma süresiyle doldurulacaktır.
  • split Dinamik veri döndürdüğünden, verileri doğru skaler türe dönüştürmek için ve tostring gibi toint işlevleri kullanmanız gerekir.
source | project d = split(RawData,",") | project TimeGenerated=todatetime(d[0]), Code=toint(d[1]), Severity=tostring(d[2]), Module=tostring(d[3]), Message=tostring(d[4])

Virgülle ayrılmış dosya koleksiyonunun yapılandırmasını gösteren ekran görüntüsü.

Bu verilerin günlük sorgusuyla alınması aşağıdaki sonuçları döndürür.

Virgülle ayrılmış dosya koleksiyonunun sonuçlarını döndüren günlük sorgusunu gösteren ekran görüntüsü.

Sorun giderme

Beklediğiniz metin günlüğünden veri toplamazsanız aşağıdaki adımları izleyin.

  • Verilerin toplanan günlük dosyasına yazıldığını doğrulayın.
  • Günlük dosyasının adının ve konumunun belirttiğiniz dosya düzeniyle eşleşip eşleşmediğini doğrulayın.
  • Hedef tablonun şemasının gelen akışla eşleşeceğini veya gelen akışı doğru şemaya dönüştürecek bir dönüşüme sahip olduğunuzu doğrulayın.
  • Aracının çalışır durumda olup olmadığını ve verilerin alınıp alınmadığını doğrulamak için İşlemi Doğrulama kısmına bakın.

Sonraki Adımlar

  • Azure İzleyici Aracısı hakkında daha fazla bilgi edinin.
  • Veri toplama kuralları hakkında daha fazla bilgi edinin.