Aracılığıyla paylaş


Azure İzleyici ile sanal makineden JSON dosyası toplama

Birçok uygulama ve hizmet, Windows Olay günlüğü veya Syslog gibi standart günlük hizmetleri yerine metin dosyalarına bilgi kaydeder. Bu veriler JSON biçiminde depolanıyorsa, Azure İzleyici tarafından Özel JSON Günlükleri veri kaynağına sahip bir veri toplama kuralında (DCR) toplanabilir.

DCR'nin oluşturulmasıyla ilgili ayrıntılar Azure İzleyici Aracısı ile veri toplama bölümünde verilmiştir. Bu makalede, JSON günlük 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.

Özel JSON 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 JSON Günlükleri'ni seçin.

JSON dosya koleksiyonunun yapılandırmasını gösteren ekran görüntüsü.

Özel JSON 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.

Örnekler:
- C:\Logs\MyLog.txt
- C:\Logs\MyLog*.txt
- C:\App01\AppLog.txt, C:\App02\AppLog.txt
- /var/mylog.log
- /var/mylog*.log
Tablo adı Log Analytics Çalışma Alanınızdaki hedef tablonun adı.
Dönüşüm Kayıtları filtrelemek veya hedef tablonun gelen verilerini biçimlendirmek için veri alma anı dönüşümü. Gelen verileri değiştirmeden bırakmak için kullanın source . Örnek için bkz . Dönüştürme .
JSON Şeması JSON günlük dosyasından toplanıp hedef tabloya gönderilecek özellikler. Gereken tek özellik' dir TimeGenerated. Bu değer JSON dosyası tarafından sağlanmazsa veri alma zamanı kullanılır. Log Analytics çalışma alanı tablosunda açıklanan ve gerekli olmayan diğer sütunlar da eklenebilir ve otomatik olarak doldurulur. Diğer tüm özellikler tablodaki sütunları aynı adla doldurur. Tablo sütunlarıyla eşleşen özelliklerin ilgili sütunla aynı veri türünü kullandığından emin olun.

Yukarıdaki görüntüde, JSON dosya gereksinimlerinde ve en iyi uygulamalarda gösterilen örnek JSON dosyası için bir JSON şeması gösterilmektedir

Hedefler ekle

Özel JSON günlükleri yalnızca oluşturduğunuz özel tabloda depolandığı bir 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 JSON günlük 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ü.

JSON dosya gereksinimleri ve en iyi yöntemler

Azure İzleyici aracısının topladığı dosya aşağıdaki gereksinimleri karşılamalıdır:

  • Dosya, izlenen dizinde aracı makinesinin yerel sürücüsünde depolanmalıdır.
  • Her bir giriş, bir satır sonuyla belirlenen ve tek bir JSON satırı formatında olan JSON Line (diğer adıyla JSONL veya NDJSON) olmalıdır. JSON gövde biçimi desteklenmez. Aşağıdaki örneğe bakın.
  • 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 JSON günlük dosyası örneği verilmiştir. Buna şu alanlar dahildir: Time, Code, Severity,Module ve Message.

{"Time":"2025-03-07 13:17:34","Code":1423,"Severity":"Error","Module":"Sales","Message":"Unable to connect to pricing service."}
{"Time":"2025-03-07 13:18:23","Code":1420,"Severity":"Information","Module":"Sales","Message":"Pricing service connection established."}
{"Time":"2025-03-07 15:45:13","Code":2011,"Severity":"Warning","Module":"Procurement","Message":"Module failed and was restarted."}
{"Time":"2025-03-07 15:53:31","Code":4100,"Severity":"Information","Module":"Data","Message":"Daily 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 2 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

Aracı, yerel diskte belirtilen ad deseni ile eşleşen tüm json dosyalarını izler. Her girdi, günlüğe yazıldığı gibi toplanır ve ardından Log Analytics çalışma alanında belirtilen tabloya gönderilmeden önce ayrıştırılır. DCR'yi oluşturmadan önce Log Analytics çalışma alanında verileri alacak özel tablonun mevcut olması gerekir.

Tablodaki ayrıştırılan Json verilerindeki bir alanın adıyla eşleşen tüm sütunlar günlük girdisindeki değerle doldurulur. Aşağıdaki tabloda, JSON verilerinizde tanımlanan sütunlara ek olarak çalışma alanı tablosundaki gerekli ve isteğe bağlı sütunlar açıklanmaktadır.

Köşe yazısı 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.
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.

Aşağıdaki örnekte, yukarıda gösterilen örnek JSON dosyası için oluşturulan bir tablodan verileri döndüren bir sorgu gösterilmektedir. Yukarıda gösterilen örnek JSON şemasına sahip bir DCR kullanılarak toplanmış. JSON verileri için TimeGeneratedbir özellik içermediğinden alma süresi kullanılır. Computer ve FilePath sütunları da otomatik olarak doldurulur.

Toplanan JSON günlüğünün 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. Bakınız Özel bir tablo oluşturma için farklı yöntemler. Örneğin, yukarıdaki örnek JSON dosyasından verileri 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": "Time",
                        "type": "dateTime"
                    },
                    {
                        "name": "Code",
                        "type": "int"
                    },
                    {
                        "name": "Severity",
                        "type": "string"
                    },
                    {
                        "name": "Module",
                        "type": "string"
                    },
                    {
                        "name": "Message",
                        "type": "string"
                    }
              ]
        }
    }
}
'@

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

Dönüşüm

Dönüştürme, kayıtları filtrelemek veya şemayı hedef tabloyla eşleşecek şekilde değiştirmek için gelen akışı potansiyel olarak değiştirir. Gelen akışın şeması hedef tabloyla aynıysa, varsayılan dönüştürmesini sourcekullanabilirsiniz. Aksi takdirde ARM şablonunun transformKql bölümünü gerekli şemayı döndüren bir KQL sorgusuyla değiştirin.

Örneğin, yukarıdaki örnekte günlük girdisinin, günlük girdisinin oluşturulduğu saati içeren bir Time alanı vardır. Bunu hedef tabloda ayrı bir sütun olarak depolamak yerine, Time özelliğinin değerini TimeGenerated ile eşlemek için aşağıdaki dönüştürmeyi kullanabilirsiniz.

source | extend TimeGenerated = todatetime(Time) | project-away Time

Dönüştürme ile JSON veri kaynağı yapılandırmasını gösteren ekran görüntüsü.

Bu, aşağıdaki günlük sorgusuyla sonuçlanır. sütununun Time boş olduğuna ve bu özelliğin değerinin için TimeGeneratedkullanıldığına dikkat edin.

Toplanan JSON günlüğünün sonuçlarını dönüştürmeyle döndüren günlük sorgusunu gösteren ekran görüntüsü.

Sorun giderme

Beklediğiniz JSON 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.
  • DCR'deki gelen akışın şemasının günlük dosyasındaki şemayla eşleşeceğ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.
  • Ajanın çalışıp çalışmadığını ve verilerin alınıp alınmadığını doğrulamak için bkz. İşlemi doğrulama.

Sonraki Adımlar