在这个例子中,我们将把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
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.