- Nginx - Web Server ,代理 Node.js 、Kibana
- Elasticsearch - 索引
- Fluentd - 日志收集
- Kibana - 可视化展示平台
需要配置本地 Hosts :127.0.0.1 fe.com www.fe.com www2.fe.com kibana.fe.com node.fe.com
。
www.fe.com
- 测试 www 首页www2.fe.com
- 测试 www2 首页kibana.fe.com
- 日志监控平台node.fe.com
- 模拟一个 Node.js 后端服务
80
- Nginx 暴露 Web Server 端口9200
- Elasticsearch 内部端口5610
- Kibana 内部端口,对外访问由 Nginx 代理到kibana.fe.com
8989、8988
- Fluentd 内部 UDP 端口
├── README.md
├── docker-compose.yml
├── fluentd - Fluentd 编译
│ ├── Dockerfile
│ ├── conf
│ │ ├── node.conf - Node.js 日志配置
│ │ ├── nginx-access.conf - Nginx access 日志收集配置
│ │ └── nginx-error.conf - Nginx error 日志收集配置
│ ├── fluent.conf - Fluentd 配置
│ └── plugins
├── html
│ ├── error - 一个测试目录,为了测试 403
│ └── index.html - 一个测试页面
├── nginx
│ ├── nginx.conf - Nginx 主配置
│ └── vhost
│ ├── node.conf - node.fe.com 配置
│ ├── kibana.conf - kibana.fe.com 配置
│ ├── www.conf - www.fe.com 配置
│ └── www2.conf - www2.fe.com 配置
└── node - Node.js 服务 - 未完成
├── index.js
└── package.json
env
- 标签,用来区分项目env_source
- 标签来源,如:node
、nginx
env_level
- 日志类型,如:access
、error
、debug
、info
env_timestamp
- 日志源(Node.js、Nginx)发生时间,而@timestamp
是写入 ES 时的时间
使用 log_format
配置一个 Fluentd 的日志格式,在使用时直接接入 Fluentd syslog 日志,如:
access_log syslog:server=fluentd:8989,tag=www Fluentd;
error_log syslog:server=fluentd:8988,tag=www error;
字段说明:
8989
- Fluentd 暴露的nginx.access
收集端口8988
- Fluentd 暴露的nginx.error
收集端口tag=www
- 使用tag
透传一个日志中的env
字段,用来做产品线/名称的筛选条件fluentd:port
- Fluentd 服务容器名,在 Docker 内直连error_log ... error
- 错误日志等级
统一使用 fluent-logger 写入 Fluentd 日志,扩展一个 logger.js ,使用如:
const Logger = require('./logger');
const logger = new Logger({
env: '环境标识',
});
logger.info(string);
logger.debug({
message: '',
test: 1,
});