7.1.1. Giriş#
Uygulama Paketi (Instances)#
Gateway docker instance'ına buradan ulaşabilirsiniz.
Varsayılan Uygulama Parametreleri (Default Environment Variables)#
| Değişken Adı | Değeri | Açıklama |
|---|---|---|
| SERVER_PORT | 9999 | Uygulamanın sunulduğu port bilgisidir. |
| SERVER_APP_NAME | gateway-server | Uygulama isim bilgisidir. |
| SERVER_DESCRIPTION | Hvl Spring Gateway Server | Uygulama açıklama bilgisidir. |
| SWAGGER_DESCRIPTION | Havelsan gateway services info | Uygulama swagger açıklama bilgisidir. |
| SERVER_APP_TYPE | gateway | Javalt monitoring üzerinde uygulama gruplaması için kullanılan parametredir. |
| SWAGGER_ENABLED | false | Swagger UI ve API dokümantasyonunun etkin olup olmadığını belirtir. |
| SERVER_CONFIGURATION_REMOTE_URL | http://[username]:[password]@hvlconfigserver:8888/config | Uzak Config Server adresidir (gerekirse kimlik bilgileri içerir). |
| LOGGING_CONFIG | http://hvlconfigserver:8888/config/spring-gateway-server/default/framework(_)log4j2(_)cloud-instance(_)spring-gateway/log4j2.yml | Log4j2 konfigürasyon dosyasının uzak konumudur. |
| REDIS_CM_CACHE_PREFIX | hvl::sgw:: | Redis önbellek anahtarı öneki/prefix’idir. |
| spring_cloud_loadbalancer_configurations | default | Spring Cloud LoadBalancer konfigürasyon profili (örn. default,health-check). |
| EUREKA_CLIENT_DISABLE_DELTA | false | Eureka delta güncellemelerini devre dışı bırakır (false ise delta güncellemeleri kullanılır). |
| EUREKA_CLIENT_FETCH_REGISTRY | true | Uygulamanın Eureka’dan servis kayıtlarını çekip çekmeyeceğini belirler. |
| KAFKA_SUPPORT_ENABLED | false | Kafka entegrasyonunun etkinleştirilip etkinleştirilmeyeceğini belirler. |
| MANAGEMENT_ACCESS | none | Actuator yönetim uçlarının (management endpoints) erişim seviyesidir. |
| RESTART_ACCESS | none | Actuator restart uç noktasına erişim seviyesidir. |
| SHUTDOWN_ACCESS | none | Actuator shutdown uç noktasına erişim seviyesidir. |
Uygulama ile ilgili tüm parametrelere buradan ulaşabilirsiniz.
Request Loglama#
Eksen, gateway uygulamasına gelen isteklerin kafka, fluentd, elasticsearch pipeline'ı ile depolanmasını sağlar.
Bunu yaparken aşağıdaki başlıca istatistikler toplanabilir:
- Request Uri, Method, Route Id, Route Uri
- Request Headers
- Request Body
- Response Status
- Response Headers
- Response Body
- Remote Address
Konfigürasyonlar yapılarak toplanan bilgiler arttırılabilir, bu durumda performans kayıpları göz önünde bulundurulmalıdır.
application-cloud-gateway.yml içerisinden config-server vasıtasıyla varsayılan olarak gelen ayarlar aşağıdaki gibidir.
hvl:
cloud:
gateway:
request:
logging:
enabled: ${GATEWAY_REQUEST_LOGGING_ENABLED:false}
include-list: ${GATEWAY_REQUEST_LOGGING_INCLUDE_LIST:request-body,request-headers,response-body,response-headers}
exclude-filter-list: ${GATEWAY_REQUEST_LOGGING_EXCLUDE_FILTERS:}
request-body-max-length: ${GATEWAY_REQUEST_LOGGING_REQUEST_MAX_LENGTH:1024}
response-body-max-length: ${GATEWAY_REQUEST_LOGGING_RESPONSE_MAX_LENGTH:1024}
hvl.cloud.gateway.request.logging.enabled: Request loglamanın devreye girmesini sağlar.
hvl.cloud.gateway.request.logging.include-list: Loglanacak sistemsel verileri loglama dahil etmek için kullanılır. Her bir değerin metrik toplamak için performans düşüreceği göz önünde bulundurulmalıdır. Alabileceği değerler: request-body, request-headers, response-body, response-headers
hvl.cloud.gateway.request.logging.exclude-filter-list: Loglanması istenmeyen url'lerin bilgisidir. Regex olarak ve virgül ile ayrılarak liste şeklinde değerler girilebilir. Örnek: /actuator.*,/favicon.ico,.*/lookup/.*
hvl.cloud.gateway.request.logging.request-body-max-length: Loglanan request body max uzunluk değeridir.
hvl.cloud.gateway.request.logging.response-body-max-length: Loglanan response body max uzunluk değeridir.
Önemli Uyarı
include-list alanına eklenecek herbir değer için performans düşüşü göz önünde bulundurulmalıdır. Gerçekten ihtiyaç durumu varsa bu liste genişletilmelidir. Sistemde çok fazla yük olacağı öngörülüyorsa dikkatli olunmalıdır ve yük testleri yapılmalıdır.
Request loglarının kafkaya gönderilmesini sağlamak için loggers altına aşağıdaki ekleme yapılmıştır. Request loglarının konsola da yazdırılması isteniyorsa tr.com.havelsan.javarch.spring.gateway.server.filter.HvlSpringGatewayLoggingFilter isimli logger trace yapılmalıdır. Production ortamlarda trace yapılmaması tavsiye edilir.
Loggers:
logger:
- name: tr.com.havelsan.javarch.spring.gateway.server.filter.HvlSpringGatewayLoggingFilter
level: info
additivity: false
AppenderRef:
- ref: Console
- ref: RollingFile
- name: hvlRequestLogger
level: info
additivity: false
AppenderRef:
- ref: RequestKafkaRouting
Yukarıdaki örnekte name: hvlRequestLogger kısmı önemlidir ve değiştirilmemelidir.
- Request loglaması yapılan sınıfta kullanılan logger name değeri
hvlRequestLogger'dur. ref: RequestKafkaRoutingkısmı ise,Appenderbölümünde tanımlananRequestKafkaRoutingappender'ının kullanılacağını gösterir. Böylece loglanacak request'ler kafka'ya yazılmış olacaktır.
Gateway için kullanılan log4j2 konfigürasyonuna buradan ulaşılabilir.
Yukarıdaki konfigürasyonlar yapıldıktan sonra Kafka appender içerisindeki topic'e loglar gönderilmeye başlayacaktır. hvl-infra içerisindeki fluentd uygulaması, varsayılan olarak javalt-request-logs topic'ini dinleyecek ve sonrasında elasticsearch'e gönderecek şekilde konfigüre edilmiştir. Kafka appender içerisindeki indexName bilgisine göre elasticsearch üzerinde index oluşacaktır.