使用Fluent-Bit将Docker的PHP-FPM和Nginx日志转发到Elasticsearch

142 阅读1分钟

在这个例子中,我们将把PHP-FPM和Nginx的日志转发到Elasticsearch。为了做到这一点,我们将使用Fluent-Bit。我们的监控栈是EFK(Elasticsearch Fluent-Bit Kibana)。我们不使用FileBeat和Logstash的原因是Fluent-Bit对系统资源的影响非常非常轻。我们说的是几乎没有几KB/MB,而不是几百MB!!。它也有内置的持久性机制,如内存和文件系统。FileBeat和Logstash解决方案将需要类似Redis的东西来实现持久性。

流程

PHP-FPM和Nginx的日志被Fluent-Bit监视,然后被转发到Elasticsearch。就这么简单!

应用程序设置

结构

.

docker/docker-compose.yml

Fluentd日志驱动选项可以在这里这里找到。

version: "3.4"

docker/nginx/app.conf

server {

docker/nginx/Dockerfile

FROM nginx:1.15.8-alpine

docker/nginx/nginx.conf

user nginx;

docker/php/Dockerfile

FROM php:7.2.13-fpm-alpine3.8

docker/php/php.ini

[PHP]

docker/php/www.conf

[global]

监控设置

结构

├── data

docker-compose.yml

version: "3.4"

fluent-bit.conf

如果传入的日志流不是太密集,你可以得到删除所有storage.* 密钥。持久性将回落到memory ,这是默认的。

[SERVICE]

你可以使用$ curl -X GET 0.0.0.0:9200/_cat/indices 来列出所有索引,使用$ curl -X GET 0.0.0.0:9200/wait/_search 来查看wait 索引的内容。另外,Kibana可以通过http://localhost:5601 ,ElasticHQ可以通过http://192.168.99.30:5000

测试

向你的应用程序发送一些请求。结果应该与下面的类似。


分割日志

使用下面的例子,将日志字符串分割成单独的日志字段,以便搜索、报告和可视化变得更容易。这是你应该使用的首选配置。

fluent-bit.conf

[SERVICE]

parsers.conf

# When this is used, empty fields are removed from the log so we are missing value.

结果