把日志放到node节点的主机目录上,在到主机目录上配置rsyslog收集到专门的日志服务器。 从这个日志服务器启一个logstash或者filebeat写入es。 不建议直接从每个节点直接写入es。因为日志量大的时候可能es就会被弄死,另外这么多的filebeat也是要占用不少资源的。 如果觉得麻烦,就每个node写个文件监控。自动添加rsyslog的配置然后重启rsyslog。 这样可以保证日志不丢,还能有序插入es不会因为业务高峰把es弄死,还可以利用logstash再进行一些日志格式化的需求。 目前用这个方案,把istio的所有envoy访问日志、traefik、应用程序日志收集到es上稳定的很。现在每15分钟大概150万条记录。
流程图
上图包含多种架构,详见下文分解
项目日志
如php项目,每次请求都会记录多条日志,用于监控项目的运行情况
1.最简单的办法是 给你用的框架写一个日志驱动,把日志主动提交到数据收集器
,比如 fluentd
常见架构
代码语言:javascript复制php项目日志->fluentd->elasticsearch1️⃣
php项目日志->fluentd->kafka->logstash->elasticsearch2️⃣
系统服务日志
如nginx, mysql, php
常见架构
代码语言:javascript复制system log->rsyslog->logstash->elasticsearch3️⃣
system log->filebeat->logstash->elasticsearch4️⃣
system log->filebeat->redis->logstash->elasticsearch5️⃣
system log->filebeat->kafka->logstash->elasticsearch6️⃣
# 上图未体现出来的
system log->fluent bit->logstash->elasticsearch
system log->fluent bit->redis->logstash->elasticsearch
system log->fluent bit->kafka->logstash->elasticsearch
#不推荐的,如果你们的流量低,服务器配置还可以,可以这么做
系统服务和logstash/fluentd安装在一台服务器,直接输出到elasticsearch7️⃣
相关文章
http://www.cuiwei.net/p/1886813055
https://www.cnblogs.com/tanwentao/p/15749435.html
1️⃣ http://www.cuiwei.net/p/1886813055
3️⃣ http://www.cuiwei.net/p/1827808682
4️⃣ http://www.cuiwei.net/p/1119335331
5️⃣6️⃣ https://github.com/chudaozhe/grafana-dashboard-nginx-logs
7️⃣ http://www.cuiwei.net/p/1376701836