Öğretici: Azure'da çalışan Java uygulamaları için Logz.io kullanarak izleme ve günlüğe kaydetmeye başlama

Bu öğreticide klasik bir Java uygulamasını, günlüklerini alım ve analiz için Logz.io hizmetine gönderecek şekilde yapılandırma adımları gösterilmektedir. Logz.io, Elasticsearch/Logstash/Kibana (ELK) ve Grafana hizmetlerini temel alan tam kapsamlı bir izleme çözümü sunar.

Bu öğreticide Log4J veya Logback kitaplığını kullandığınız kabul edilmektedir. Bunlar, Java'da günlüğe kaydetme için kullanılan en yaygın iki kitaplıktır. Bu nedenle öğreticinin Azure'da çalışan çoğu uygulama için uygun olması gerekir. Java uygulamanızı izlemek için Elastic yığınını kullanıyorsanız, bu öğreticide yapılandırmanızı Logz.io uç noktasını hedef alacak şekilde nasıl değiştirebileceğiniz gösterilmektedir.

Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Var olan Java uygulamasının günlüklerini Logz.io hizmetine gönderme.
  • Azure hizmetlerindeki tanılama günlüklerini ve ölçümlerini Logz.io hizmetine gönderme.

Önkoşullar

Java uygulama günlüklerini Logz.io hizmetine gönderme

İlk olarak Java uygulamanızı, Logz.io hesabınıza erişim sağlayan bir belirteçle yapılandırmayı öğreneceksiniz.

Logz.io erişim belirtecinizi alma

Belirtecinizi almak için Logz.io hesabınızda oturum açın, sol alt köşedeki dişli simgesini seçin, ardından Belirteçleri yönet'i Ayarlar > ve Veri gönderim belirteçleri sekmesini seçin. Görüntülenen varsayılan erişim belirtecini ve dinleyici URL'sini kopyalayın; böylece daha sonra kullanabilirsiniz.

Log4J veya Logback için Logz.io kitaplığını yükleme ve yapılandırma

Logz.io Java kitaplığı, Maven Central'da mevcut olduğu için uygulama yapılandırmanıza bağımlılık olarak ekleyebilirsiniz. Maven Central'daki sürüm numarasını kullanın ve en son sürümü aşağıdaki yapılandırma ayarlarıyla birlikte kullanın.

Maven'ı kullanıyorsanız pom.xml dosyanıza aşağıdaki bağımlılığı ekleyin:

Log4J:

<dependency>
    <groupId>io.logz.log4j2</groupId>
    <artifactId>logzio-log4j2-appender</artifactId>
    <version>2.0.0</version>
</dependency>

Logback:

<dependency>
    <groupId>io.logz.logback</groupId>
    <artifactId>logzio-logback-appender</artifactId>
    <version>2.0.0</version>
</dependency>

Gradle'ı kullanıyorsanız derleme betiğinize aşağıdaki bağımlılığı ekleyin:

Log4J:

implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'

Logback:

implementation 'io.logz.logback:logzio-logback-appender:2.0.0'

Daha sonra Log4J veya Logback yapılandırma dosyanızı güncelleştirin:

Log4J:

<Appenders>
    <LogzioAppender name="Logzio">
        <logzioToken><your-logz-io-token></logzioToken>
        <logzioType>java</logzioType>
        <logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
    </LogzioAppender>
</Appenders>

<Loggers>
    <Root level="info">
        <AppenderRef ref="Logzio"/>
    </Root>
</Loggers>

Logback:

<configuration>
    <!-- Use shutdownHook so that we can close gracefully and finish the log drain -->
    <shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
    <appender name="LogzioLogbackAppender" class="io.logz.logback.LogzioLogbackAppender">
        <token><your-logz-io-token></token>
        <logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
        <logzioType>java</logzioType>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level>
        </filter>
    </appender>

    <root level="debug">
        <appender-ref ref="LogzioLogbackAppender"/>
    </root>
</configuration>

<your-logz-io-token> yer tutucusunu erişim belirtecinizle, <your-logz-io-listener-host> yer tutucusunu ise bölgenizin dinleyici konağıyla (örneğin, listener.logz.io) değiştirin. Hesabınızın bölgesini bulma hakkında daha fazla bilgi için bkz. Hesabın bölgesi.

logzioType öğesi, Elasticsearch hizmetinde bulunan ve belgeleri ayırt etmek için kullanılan mantıksal bir alana başvurur. Logz.io hizmetinden en iyi şekilde yararlanmak için bu parametrenin doğru şekilde yapılandırılması önemlidir.

"Tür" Logz.io günlük biçiminizdir (örneğin: Apache, NGinx, MySQL), kaynağınız değildir (örneğin: sunucu1, sunucu2, sunucu3). Bu öğreticide Java uygulamalarını yapılandırdığımız ve bu uygulamaların tümünün aynı biçime sahip olmasını beklediğimiz için java türünü çağırıyoruz.

Gelişmiş kullanım için Java uygulamalarınızı her biri kendine özgü bir günlük biçimine (Log4J ve Logback ile yapılandırılabilen) sahip olacak şekilde gruplayabilirsiniz. Örneğin "spring-boot-monolith" ve "spring-boot-microservice" türlerini kullanabilirsiniz.

Logz.io hizmetinde yapılandırmanızı ve günlük analizini test etme

Logz.io kitaplığı yapılandırıldıktan sonra uygulamanızın günlükleri doğrudan göndermeye başlaması gerekir. Her şeyin düzgün çalışıp çalışmadığını test etmek için Logz.io konsoluna gidin, Günlükler > Canlı kuyruk sekmesini ve ardından çalıştır'ı seçin. Bağlantının çalıştığını söyleyen aşağıdakine benzer bir ileti görmeniz gerekir:

Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...

Ardından günlük kaydı oluşturmak için uygulamanızı başlatın veya kullanın. Günlükler doğrudan ekranınızda görünmelidir. Örnek olarak bir Spring Boot uygulamasının başlangıç iletileri aşağıda gösterilmiştir:

2019-09-19 12:54:40.685Z Starting JavaApp on javaapp-default-9-5cfcb8797f-dfp46 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2019-09-19 12:54:40.686Z The following profiles are active: prod
2019-09-19 12:54:42.052Z Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-19 12:54:42.169Z Finished Spring Data repository scanning in 103ms. Found 6 repository interfaces.
2019-09-19 12:54:43.426Z Bean 'spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties' of type [org.springframework.boot.autoconfigure.task.TaskExecutionProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)

Günlükleriniz Logz.io hizmetinde işlenmeye başladığına göre platformun tüm hizmetlerinden yararlanabilirsiniz.

Azure hizmetlerinin verilerini Logz.io hizmetine gönderme

Bir sonraki adımda Azure kaynaklarınızla ilgili günlükleri ve ölçümleri Logz.io hizmetine nasıl gönderebileceğinizi öğreneceksiniz.

Şablonu dağıtma

İlk olarak Logz.io - Azure tümleştirme şablonunu dağıtmanız gerekir. Tümleştirme, işlem hattının gerekli tüm yapı taşlarını ayarlayan, kullanıma hazır bir Azure dağıtım şablonunu temel alır. Şablon bir olay hub'ı ad alanı, bir olay hub'ı, iki depolama blobu ile gerekli tüm doğru izinleri ve bağlantıları oluşturur. Otomatik dağıtım tarafından ayarlanan kaynaklar, tek bir Azure bölgesindeki verileri toplayıp Logz.io hizmetine gönderebilir.

Deponun benioku dosyasının ilk adımında görüntülenen Azure'a Dağıt düğmesini bulun.

Azure'a Dağıt'ı seçtiğinizde Azure portalındaki Özel Dağıtım sayfası açılır ve bazı alanlar doldurulmuş şekilde gelir.

Alanların çoğunu olduğu gibi bırakabilirsiniz ancak aşağıdaki ayarları girmeniz gerekir:

  • Kaynak grubu: Mevcut bir grubu seçin veya yeni bir grup oluşturun.
  • Logzio Günlükleri/Ölçüm Ana Bilgisayarı: Logz.io dinleyicisinin URL'sini girin. URL'yi bilmiyorsanız oturum açma URL'nize bakın. app.logz.io şeklindeyse listener.logz.io değerini kullanın (varsayılan ayar). app-eu.logz.io şeklindeyse listener-eu.logz.io değerini kullanın.
  • Logzio Günlükleri/Ölçüm Belirteci: Azure günlüklerini veya ölçümlerini göndermek istediğiniz Logz.io hesabının belirtecini girin. Bu belirteci Logz.io arabirimindeki hesap sayfasında bulabilirsiniz.

Sayfanın alt kısmındaki koşulları kabul edin ve Satın Al'ı seçin. Azure birkaç dakika içinde şablonu dağıtır. İşlem tamamlandığında portalın üst tarafında "Dağıtım başarılı oldu" iletisi görüntülenir.

Dağıtılan kaynakları gözden geçirmek için tanımlı kaynak grubunu ziyaret edebilirsiniz.

Verileri Azure Blob Depolama'ya yedeklemek için logzio-azure-serverless bileşenini yapılandırma hakkında bilgi edinmek için bkz. Azure etkinlik günlüklerini yapılandırma.

Logz.io hizmetine Azure günlüklerinin ve ölçümlerinin akışını yapma

Tümleştirme şablonunu dağıttıktan sonra Azure'ın tanılama verilerinin akışını yeni oluşturduğunuz olay hub'ına yapması için gerekli yapılandırmaları gerçekleştirmeniz gerekir. İşlev uygulaması, olay hub'ına ulaşan verileri Logz.io hizmetine yönlendirir.

  1. Arama çubuğuna "Tanılama" yazıp Tanılama ayarları'nı seçin.

  2. Kaynak listesinden bir kaynak seçin ve ardından Tanılama ayarı ekle'yi seçerek bu kaynağın Tanılama ayarları panelini açın.

    Diagnostics settings panel

  3. Tanılama ayarlarınız için bir Ad girin.

  4. Bir olay hub'ına akış yap'ı ve Yapılandır'ı seçerek Olay hub'ı seçin panelini açın.

  5. Olay hub'ınızı seçin:

    • Olay hub'ı ad alanını seçin: Logzio ile başlayan ad alanını seçin (LogzioNS6nvkqdcci10pörneğin).
    • Olay hub'ı adını seçin: Günlükler için insights-operational-logs ve ölçümler için insights-operational-metrics seçeneğini belirleyin.
    • Olay hub'ı ilke adını seçin: LogzioSharedAccessKey'i seçin.
  6. Tamam'ı seçerek Tanılama ayarları paneline dönün.

  7. Günlük bölümünde akışını yapmak istediğiniz verileri seçip Kaydet'i seçin.

Olay hub'ına seçilen verilerin akışı yapılır.

Verilerinizi görselleştirme

Verilerinizin sisteminizden Logz.io hizmetine ulaşması için biraz zaman tanıdıktan sonra Kibana'yı açın. Verilerinizin (eventhub türündeki) panolarınızı doldurduğunu görürsünüz. Pano oluşturma hakkında daha fazla bilgi için bkz . Kibana - Pano Oluşturma.

Burada Keşfet sekmesine tıklayarak belirli veriler için sorgu oluşturabilir veya Görselleştir sekmesinde verilerinizi görselleştirmek için Kibana nesneleri oluşturabilirsiniz.

Kaynakları temizleme

Bu öğreticide oluşturduğunuz Azure kaynaklarıyla işiniz bittiğinde aşağıdaki komutu kullanarak silebilirsiniz:

az group delete --name <resource group>

Sonraki adımlar

Bu öğreticide Java uygulamanızı ve Azure hizmetlerini, günlükleri ve ölçümleri Logz.io hizmetine gönderecek şekilde yapılandırmayı öğrendiniz.

Uygulamanızı izlemek için olay hub'ı kullanma hakkında daha fazla bilgi edinin: