2017-07-15 51 views
10

django sunucumdan merkezi günlük kaydı için ELK yığını kullanıyorum. Benim ELK yığını uzak sunucuda ve logstash.conf çalışıyoruz elasticsearch ve logstash buDjango sunucusu, günlükleri logstash'a göndermiyor

input { 
    tcp { 
    port => 5959 
    codec => json 
    } 
} 
output { 
    elasticsearch { 
    hosts => ["xx.xx.xx.xx:9200"] 
    } 
} 

iki hizmet benziyor (docker-compose logs logstash kullanılarak kontrol). Benim Django sunucu çalıştırmak ve konsol hiçbir logs.I yukarıda inşa etmek django sunucusunda piton-logstash kütüphane kullanılan gösterdiği gibi logstash işleyici günlükleri kolları

LOGGING = { 
    'version': 1, 
    'handlers': { 
     'logstash': { 
      'level': 'INFO', 
      'class': 'logstash.TCPLogstashHandler', 
      'host': 'xx.xx.xx.xx', 
      'port': 5959, # Default value: 5959 
      'version': 0, # Version of logstash event schema. Default value: 0 (for backward compatibility of the library) 
      'message_type': 'django', # 'type' field in logstash message. Default value: 'logstash'. 
      'fqdn': True, # Fully qualified domain name. Default value: false. 
      'tags': ['django.request'], # list of tags. Default: None. 
     }, 
    }, 
    'loggers': { 
     'django.request': { 
      'handlers': ['logstash'], 
      'level': 'DEBUG', 
    }, 
} 
} 

altında gibi

benim django sunucunun ayarları dosyası günlüğü var conf conf ama günlükleri birçok soruya aracılığıyla kontrol

benim uzak sunucuya gönderilmez, hizmetler çalıştıran portları doğru olan ancak günlükleri gönderilen olmama neden hiçbir ipucu configurati baktığımızda

+0

"django.request" öğesinin tüm etkinlikleri filtrelemediğinden emin misiniz? –

+0

Django İsteğin tüm istekleri kayıtlarını göndermesi gerekiyor –

+0

'fqdn'' 'False' olarak değiştirmeyi denediniz mi? –

cevap

2

logstash için doğruladıktan on, logger "django.request", "DEBUG" seviyesine ayarlanmış ve işleyici "logstash", "INFO" seviyesine ayarlanmıştır. Benim tahminim, işleyicisi'un DEBUG mesajlarını işlemeyeceğidir. Yine de emin değilim.

Çalıştığını test etmek için kaydedici ve işleyici için aynı seviyeyi ayarlayın.

Kullandığınız düzey, günlüklerinizden ne istediğinize bağlıdır. Bu durumda, INFO seviyesinin yeterli olacağını tahmin ediyorum. o sorunu çözmek ama yine de yararlı olacağını umuyoruz görünmemektedir yorumlarla Gönderen: Zaten Django logging

NOT bakmak Değilse

.

GÜNCELLEME:

Ben aşağıdaki yapılandırmayı denedim ve "debug.log" 404 ve 500 hataları yakalar.

LOGGING = { 
'version': 1, 
'disable_existing_loggers': False, 
'handlers': { 
    'logfile': { 
     'level': 'WARNING', 
     'class': 'logging.FileHandler', 
     'filename': os.path.join(PROJECT_DIR, 'debug.log'), 
    }, 
}, 
'loggers': { 
    'django.request': { 
     'handlers': ['logfile'], 
     'level': 'WARNING', 
     'propagate': True, 
    }, 
}} 

Bu sınama yapılandırmasıyla, logstash işleyicisi en azından ileti/günlük kaydını almalıdır. Hiç bir şans yoksa, yayılan kaydı aldıklarından emin olmak için logstash.TCPLogstashHandler ve SocketHandler (TCPLogstashHandler tarafından miras alınan) hata ayıklamayı denemenizi öneririz.

+0

Durumunuz doğru görünüyor, bu yüzden bunu çözmek için ne önerirsiniz? –

+0

Logstash düzeyini – herm

+0

debug seviyesine ayarlayın INFO seviyesini kullanmanızı önerdim. Günlük mesajlarının nasıl oluşturulduğuna bağlı olarak, bazen hangi ortamın kullanıldığına bağlı olarak DEBUG kaydını açıp kapatabilirsiniz. Örneğin django, mail_admins için kullanır. –