在微服务场景中,将每个服务的日志集中到 Elasticsearch,再通过 Kibana 进行查询、分析、展示是一个必备的功能。本文简单演示如何将 Django Rest Framework 应用产生的日志输出到 ELK 技术栈中。
为完成本演示,需要首先搭建 ELK 技术栈。 如果没有现成的, 可以参考 使用 Docker-Compose 搭建单机版的 ELK 技术栈 , 使用 Docker-Compose 简单的搭建一个单机版的开发环境。
安装依赖库
在本例中,我们使用 python-logstash 这个第三方依赖库,在项目虚拟环境中执行:
1 | pip install python-logstash |
修改 Django 项目的设置
打开 Django 或 Django-rest-framework 项目中的 settings.py 文件,增加以下的代码:
1 | import logstash |
程序中按照 python 中 logging 模块方式进行日志输出,如果不熟悉 logging 模块,可以参考 Python中的日志功能(logging)
设置 logstash
如果你使用了上文中推荐的, 用 docker-compose 搭建的单机版 ELK 技术栈,接下来就需要配置 logstash。
首先,执行以下命令,登录到 logstash 容器中:
1 | docker exec -it docker-elk-master_logstash_1 /bin/bash |
docker-elk-master_logstash_1 是容器名。
登录进去以后是处在 /usr/share/logstash 目录中,直接进入 config 子目录, 执行:
1 | cd config |
在 congfig 目录中,启动 vi 新建一个名为: logstash.conf 的文件
1 | vi logstash.conf |
按 i 进入编辑模式, 然后拷贝以下内容到文件中:
1 | input { |
密码需要用你实际的密码进行替换
然后保存文件并退出 vi。 在输入 exit 命令退出容器。
现在重启该容器,执行:
1 | docker restart docker-elk-master_logstash_1 |
以上步骤完成后,就可以登入 Kibana ,查看应用输出的日志了。