ELK Stack日志中心搭建
环境信息
- centos 7
- docker + docker-compse
- jdk8
- elasticesearch 7.1.1
- kibana 7.1.1
- logstash 7.1.1
- filebeat 7.1.1
docker环境安装
参考:官网安装教程
#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
1. 基于 Filebeat 搭建 ELK 集群日志中心
本文主要目的是简化搭建ELK环境的步骤,使用Docker Compose部署ELK 7.1.1分布式集群的日志框架,只需要执行一个init.sh脚本即可搭建好一个ELK Stack日志中心。
整体架构
1.1 单台服务器搭建ELK集群日志中心
- 拉取配置文件
# 拉取配置文件
git clone https://github.com/glj381413362/common-plugin.git
目录结构:
- log-plugin:一个日志插件,这里重点关注nodes-stand-alone目录下的配置文件,nodes-stand-alone下是单服务器搭建ELK Stack-搭建日志中心的所有配置文件
其他模块这里用不到,可以忽略
1.1.1 应用与ELK部署在同一台服务器
由于应用和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
1.1.2 应用与ELK部署在不同服务器
和 应用与ELK部署在同一台服务器 步骤相同,需要先把配置和脚本拉取下来,然后运行init.sh脚本,如果ELK所在服务器没有部署应用,也不需要监控日志,则可以把Filebeat服务停掉。
停掉Filebeat服务
# 停止Filebeat服务
docker-compose stop filebeat
1.1.2.1 应用服务器部署Filebeat服务
1、 非容器化部署
- 下载安装包
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/
-
修改Filebeat配置文件
这里和 应用与ELK部署在同一台服务器 中的Filebeat配置大同小异,需要修改为正确的logstash服务的IP和端口 -
启动Filebeat服务
nohup ./filebeat -e -c filebeat.yml > filebeat.log &
2、 容器化部署
需要应用所在服务器也有docker环境。
- 修改Filebeat配置文件
这里和 应用与ELK部署在同一台服务器 中的Filebeat配置大同小异,需要修改为正确的logstash服务的IP和端口 - 启动Filebeat容器服务
# 启动Filebeat服务
docker run \
-v ~/filebeat.yml:/usr/share/filebeat/filebeat.yml \
docker.elastic.co/beats/filebeat:7.1.1
1.2 多台服务器搭建ELK集群日志中心
2. 效果
日志信息很乱,不直观。
3. 配置logstash
-
对Java日志做一些信息提炼,也就是使用过滤规则,将date,log-level,log-message等提取出来,添加过滤规则;
filter { grok { match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{JAVALOGMESSAGE:msg}" } } }
-
修改时间格式
date { #改变时间格式 # match => ["timestamp","dd/MMM/YYYY:H:m:s Z"] match => [ "timestamp", "yyyy-MM-dd HH:mm:ss,SSS" ] remove_field => "timestamp" #删除原有的时间字段 }
4. 系统指标
-
下载并安装 Metricbeat
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.1.1-x86_64.rpm sudo rpm -vi metricbeat-7.1.1-x86_64.rpm
-
编辑 Metricbeat 配置
修改 /etc/metricbeat/metricbeat.yml
以设置连接信息:
output.elasticsearch:
hosts: ["<es_url>"]
username: "elastic"
password: "<password>"
setup.kibana:
host: "<kibana_url>"
其中,<password>
是 elastic
用户的密码,<es_url>
是 Elasticsearch 的 URL,<kibana_url>
是 Kibana 的 URL
- 启用和配置 system 模块
sudo metricbeat modules enable system
在 /etc/metricbeat/modules.d/system.yml
文件中修改设置
- 启动 Metricbeat
setup
命令加载 Kibana 仪表板。如果仪表板已设置,请省略此命令。
sudo metricbeat setup
sudo service metricbeat start
5 Docker 指标
- 启用和配置 docker 模块
sudo metricbeat modules enable docker
在 /etc/metricbeat/modules.d/docker.yml
文件中修改设置。
-
启动 Metricbeat
setup
命令加载 Kibana 仪表板。如果仪表板已设置,请省略此命令。sudo metricbeat setup sudo service metricbeat start
上一篇: Linux Mysql8.0离线安装
下一篇: MySQL安装--绿色版配置
推荐阅读
-
ELK Stack日志中心搭建
-
基于Docker的ELK日志平台搭建 博客分类: ELK架构 ELK架构
-
elk(日志监控系统搭建),elastic search,kibana,logstash,filebeat搭建 博客分类: elkelastic searchkibanalogstash elkelasticsearchkibanalogstash搭建
-
基于Docker搭建ELK 日志系统的方法
-
Docker 搭建 ELK 收集并展示 tomcat 日志
-
详解利用ELK搭建Docker容器化应用日志中心
-
ELK日志分析系统(1)-基本环境搭建
-
使用Docker搭建ELK日志系统的方法示例
-
懒人必备:.NetCore快速搭建ELK分布式日志中心
-
Docker 搭建 ELK 收集并展示 tomcat 日志