使用python-logstash将Django日志导入Elasticsearch的方法.
因为几乎没有相关的英文文献,所以我尝试着写了这句话。原文也没有提供详细的描述。
本家的 python-logstash
准备 Django
mkdir django-logstash
cd django-logstash/
python -m venv venv
. venv/bin/activate
python -m pip install Django
django-admin startproject mysite
cd mysite
python manage.py runserver
ctrl + c
pip install python-logstash
vim mysite/settings.py
python manage.py runserver
设置.py是一个困扰的问题。从网上找的代码,一直无法正常运行。
使用django.request没有显示结果,只有在django.server中才成功。
消息类型:对于 Django 来说也很重要
需要第一行的 version:1 的版本。
LOGGING = {
'version': 1,
'handlers': {
'logstash': {
'level': 'DEBUG',
'class': 'logstash.TCPLogstashHandler',
'host': 'xx.xx.xx.xx',
'port': 9600, # Default value: 5959
'version': 1, # 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': False, # Fully qualified domain name. Default value: false.
'tags': ['django.request'],# list of tags. Default: None.
},
},
'loggers': {
'django.server': {
'handlers': ['logstash'],
'level': 'DEBUG',
},
},
}
谢谢你 nǐ)
只要在浏览器中可见就可以
准备 Logstash
提前创建配置
mkdir config
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.url: https://your.elasticsearch.example.com:port
xpack.monitoring.elasticsearch.username: xx
xpack.monitoring.elasticsearch.password: xx
xpack.monitoring.enabled: true
log.level: trace
vim配置文件/logstash-django.conf
input {
tcp {
port => 9600
codec => json
}
}
output {
elasticsearch {
hosts => ["https://your.elasticsearch.com"]
user => ["xx"]
password => ["xx"]
index => "djangotest"
document_type => "%{type}"
}
stdout {
codec => rubydebug {metadata => true }
}
}
启动吧。大概需要1分钟,耐心等一下。如果能成功打开端口9600,应该会显示“ok”。如果从Django发送的请求能顺利传送过来,控制台就会运行起来。
version: '3'
services:
logstash:
restart: always
container_name: logstash
image: docker.elastic.co/logstash/logstash:6.8.6
ports:
- 9600:9600
volumes:
- ./config:/config
logging:
driver: "json-file"
options:
max-size: "3M"
max-file: "1"
command: logstash -r -f /config/*.conf
Docker 镜像手册
https://www.elastic.co/guide/en/logstash/6.3/docker-config.html
请自行准备 Elasticsearch / Kibana。
这个可能会对你有所帮助:
https://qiita.com/uturned0/items/584686262be1aa8a336c
执行
试试随意访问Django
http://localhost:8000/
http://localhost:8000/未知路径
只要数据输入到es中就可以。以下是在kibana中查看数据的图表。
对未知路径的访问返回了404错误状态码。
“Django和其他日志”
这里好像有很多种选择。(还没尝试过)