参考:官网安装教程
#docker安装
curl -sSL https://get.daocloud.io/docker | sh
#docker-compose安装
curl -L \
https://get.daocloud.io/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` \
> /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#查看安装结果
docker-compose -v
本文主要目的是简化搭建ELK环境的步骤,使用Docker Compose部署ELK 7.1.1分布式集群的日志框架,只需要执行一个init.sh脚本即可搭建好一个ELK Stack日志中心。
# 拉取配置文件
git clone https://github.com/glj381413362/common-plugin.git
目录结构:
由于应用和ELK部署在同一台机器,所以这里只需要修改一下Filebeat配置即可(配置文件参考)
filebeat.inputs:
- type: log
enabled: true
paths:
# 产品的所有.log文件
- /app/product-webservice/*.log
document_type: product_log #设定Elasticsearch输出时的document的type字段,也可以用来给日志进行分类
fields:
log_source: PRODUCT
multiline.pattern: ^\d{4} # 多行处理,正则表示如果前面几个数字不是4个数字开头,那么就会合并到一行
multiline.negate: true
multiline.match: after # 不匹配的正则的行是放在上面一行的前面还是后面
- type: log
enabled: true
paths:
# 订单服务的所有.log文件
- /app/order-webservice/*.log
fields:
log_source: ORDER
multiline.pattern: ^\[
multiline.negate: true
multiline.match: after
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.dashboards.enabled: false
setup.kibana:
host: "http://47.**.**.**:5601"
# 不直接传输至ES
#output.elasticsearch:
# hosts: ["http://47.93.46.12:9200"]
# index: "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}"
output.logstash:
hosts: ["47.**.**.**:5044"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~
将paths路径修改为应用日志路径即可,如果需要读取多个目录下的日志,配置多个
enabled: true
paths:
- /app/product-webservice/*.log
即可,可通过配置
fields: fields: log_source: ORDER
区分不同应用的日志。
注意: 参数
setup.kibana:
host: "http://47.**.**.**:5601"
output.logstash:
hosts: ["47.**.**.**:5044"]
需要修改成相应服务的IP和端口
启动
# 配置文件所在目录 运行./init.sh
./init.sh
和 应用与ELK部署在同一台服务器 步骤相同,需要先把配置和脚本拉取下来,然后运行init.sh脚本,如果ELK所在服务器没有部署应用,也不需要监控日志,则可以把Filebeat服务停掉。 停掉Filebeat服务
# 停止Filebeat服务
docker-compose stop filebeat
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.1.1-darwin-x86_64.tar.gz
tar xzvf filebeat-7.1.1-darwin-x86_64.tar.gz
cd filebeat-7.1.1-darwin-x86_64/
nohup ./filebeat -e -c filebeat.yml > filebeat.log &
需要应用所在服务器也有docker环境。
# 启动Filebeat服务
docker run \
-v ~/filebeat.yml:/usr/share/filebeat/filebeat.yml \
docker.elastic.co/beats/filebeat:7.1.1
日志信息很乱,不直观。
修改 /etc/metricbeat/metricbeat.yml
以设置连接信息:
output.elasticsearch:
hosts: [""]
username: "elastic"
password: ""
setup.kibana:
host: ""
其中, 是 elastic
用户的密码, 是 Elasticsearch 的 URL, 是 Kibana 的 URL
sudo metricbeat modules enable system
在 /etc/metricbeat/modules.d/system.yml
文件中修改设置
setup
命令加载 Kibana 仪表板。如果仪表板已设置,请省略此命令。
sudo metricbeat setup
sudo service metricbeat start
sudo metricbeat modules enable docker
在 /etc/metricbeat/modules.d/docker.yml
文件中修改设置。