当项目系统趋于稳定,日志记录逐渐庞大的时候,日志的管理和记录就显得尤为重要了,毕竟不可能每次报错都去查log文件这样太过于低效了。
一.搭建elk软件(es/logstash/kibana)
这里默认你已经搭建好了三者,即es,logstash和kibana。
二.django项目生成指定日志文件
三.安装Filebeat读取Django项目的日志文件
这里我们需要使用Filebeat读取Django项目的日志文件并将其发送到Logstash,请按照以下步骤操作:
在与 Django 项目日志文件相同的服务器上安装 Filebeat。在 CentOS 7 上,您可以执行以下命令:
3.1安装Filebeat
sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
sudo tee /etc/yum.repos.d/elastic.repo <<-EOF
[elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF
sudo yum install filebeat
3.2 Filebeat写入数据至Logstash
修改Filebeat配置文件 /etc/filebeat/filebeat.yml,以便读取 Django 日志文件并将其发送到Logstash。
filebeat.inputs:
- type: log
enabled: true
paths:
- /path/to/your/logfile.log
output.logstash:
hosts: ["your-logstash-host:5044"]
将/path/to/your/logfile.log替换为在Django项目settings.py中配置的实际日志文件路径,将your-logstash-host替换为Logstash服务器的IP地址或主机名。
启动 Filebeat 服务并设置开机自启动:
sudo systemctl start filebeat
sudo systemctl enable filebeat
3.3 配置Logstash以写入es
修改Logstash配置文件(例如,/etc/logstash/conf.d/django.conf),删除file输入插件部分,因为我们现在使用 Filebeat而不是Logstash 读取日志文件。现在,只需要配置过滤器和输出插件,如下所示:
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} \[%{DATA:loglevel}\] %{GREEDYDATA:logger_name} %{GREEDYDATA:message}" }
overwrite => [ "message" ]
}
date {
match => [ "timestamp", "YYYY-MM-dd HH:mm:ss" ]
target => "@timestamp"
remove_field => "timestamp"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "django-logs-%{+YYYY.MM.dd}"
}
}
重启 Logstash 服务以应用新的配置:
sudo systemctl restart logstash
四.最后
现在Filebeat将读取Django项目的日志文件并将其发送到Logstash。Logstash将对日志进行解析,然后将其发送到Elasticsearch。你可以在Kibana中创建一个Index Pattern(如django-logs-*),然后使用Discover功能查看和分析日志数据。
版权属于:Jolly
本文链接:https://totoro.site/index.php/archives/130/
关于转载:原创文章,禁止转载