Docker安装ELK环境(二)
日志收集系统架构
- https://www.elastic.co/guide/en/logstash/current/deploying-and-scaling.html
- http://dockone.io/article/505#rd?sukey=fc78a68049a14bb21970769bd4cdecc8f803567ce85b9148150a8f086c5ea01b195498f33b858ddf9c93183f1c09d255
- http://mp.weixin.qq.com/s?__biz=MzA4NDM0OTQ0NA==&mid=400670251&idx=1&sn=dec80ffddf9b6b0619a89605c397a2c2&scene=1&srcid=1201EdUMaGhzFetS4f7Pe8QX&key=ac89cba618d2d9767d9841c0e75232b77db8e3d08ed0c4bd45b9796dc6c27292d6f9776642a755bcf64dfeededbede63&ascene=0&uin=OTIxOTMxODgw&devicetype=iMac+MacBookPro12%2C1+OSX+OSX+10.10.3+build(14D136)&version=11020201&pass_ticket=wAdeTXAnaEoTmxMJDYGfZiYPEQFQiUuMEieo5%2F72eVKwxLRWIshfT3nzlOwtjLDy
日志收集系统架构简介
- Logstash Agent/Flume:采集各个业务系统的日志,然后发送给Redis/Kafka消息队列。
- Redis/Kafka:接收用户日志的消息队列,临时存储日志并且起到缓冲的作用,防止日志量上来之后,拖垮Logstash Indexer。
- Logstash Indexer:做日志解析,统一成JSON输出给Elasticsearch。
- Elasticsearch:实时日志分析服务的核心技术,一个schemaless,实时的数据存储服务,通过index组织数据,兼具强大的搜索和统计功能。
- Kibana:基于Elasticsearch的数据可视化组件,超强的数据可视化能力是众多公司选择ELK stack的重要原因。
这里实现的是 ELK + Redis 收集 Nginx 的 access.log
我们这里是把各个组件拆开,模拟每个组件是一个集群,每个集群部署在一台机器上
1.Nginx + Logstash agent
2.Redis
3.Logstash indexer
4.ElasticSearch
5.Kibana
Nginx配置文件
daemon off;
master_process off;
error_log logs/error.log;
...
http {
include mime.types;
default_type application/octet-stream;
# 设置nginx日志格式,格式的名称logstash
log_format logstash '$http_host $server_addr $remote_addr [$time_local] "$request" $request_body $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time $upstream_response_time';
# 设置access_log日志输出的文件路径,以及使用的日志格式名称
access_log logs/access.log logstash;
# 以下内容省略
...
}
logstash agent的配置文件logstash.conf
input {
file {
type => "nginx_access"
path => ["/usr/local/nginx/logs/access.log"]
}
}
output {
redis {
host => "10.211.55.4"
port => 6379
password => admin
data_type => "list"
key => "logstash:redis"
}
}
注意
这里配置就是往redis队列中塞入日志就行,所以input的来源是Nginx的log文件,output的目标设置为redis,这里redis充当MQ消息队列的作用。
logstash indexer的配置文件logstash.conf
input {
r