前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ELK Stack日志中心搭建

ELK Stack日志中心搭建

作者头像
茶半香初
发布2021-11-26 14:45:43
5130
发布2021-11-26 14:45:43
举报
文章被收录于专栏:程序员那点事

环境信息

  1. centos 7
  2. docker + docker-compse
  3. jdk8
  4. elasticesearch 7.1.1
  5. kibana 7.1.1
  6. logstash 7.1.1
  7. filebeat 7.1.1

docker环境安装

参考:官网安装教程

代码语言:javascript
复制
#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日志中心。

整体架构

image-20200106135141300
image-20200106135141300

1.1 单台服务器搭建ELK集群日志中心

  • 拉取配置文件
在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
# 拉取配置文件
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配置即可(配置文件参考)

代码语言:javascript
复制
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路径修改为应用日志路径即可,如果需要读取多个目录下的日志,配置多个

代码语言:javascript
复制
  enabled: true
  paths:
    - /app/product-webservice/*.log

即可,可通过配置 fields: fields: log_source: ORDER

区分不同应用的日志。

注意: 参数

代码语言:javascript
复制
 setup.kibana:
  host: "http://47.**.**.**:5601"
  
 output.logstash:
  hosts: ["47.**.**.**:5044"] 

需要修改成相应服务的IP和端口

启动

代码语言:javascript
复制
# 配置文件所在目录 运行./init.sh
./init.sh
在这里插入图片描述
在这里插入图片描述

1.1.2 应用与ELK部署在不同服务器

应用与ELK部署在同一台服务器 步骤相同,需要先把配置和脚本拉取下来,然后运行init.sh脚本,如果ELK所在服务器没有部署应用,也不需要监控日志,则可以把Filebeat服务停掉。 停掉Filebeat服务

代码语言:javascript
复制
# 停止Filebeat服务
docker-compose stop filebeat

1.1.2.1 应用服务器部署Filebeat服务

1、 非容器化部署
  1. 下载安装包
代码语言:javascript
复制
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/
  1. 修改Filebeat配置文件 这里和 应用与ELK部署在同一台服务器 中的Filebeat配置大同小异,需要修改为正确的logstash服务的IP和端口
  2. 启动Filebeat服务 nohup ./filebeat -e -c filebeat.yml > filebeat.log &
2、 容器化部署

需要应用所在服务器也有docker环境。

  1. 修改Filebeat配置文件 这里和 应用与ELK部署在同一台服务器 中的Filebeat配置大同小异,需要修改为正确的logstash服务的IP和端口
  2. 启动Filebeat容器服务
代码语言:javascript
复制
# 启动Filebeat服务
docker run \
  -v ~/filebeat.yml:/usr/share/filebeat/filebeat.yml \
  docker.elastic.co/beats/filebeat:7.1.1

1.2 多台服务器搭建ELK集群日志中心

2. 效果

image-20200105194606827
image-20200105194606827
image-20200106135524220
image-20200106135524220

日志信息很乱,不直观。

3. 配置logstash

4. 系统指标

修改 /etc/metricbeat/metricbeat.yml 以设置连接信息:

代码语言:javascript
复制
output.elasticsearch:
  hosts: [""]
  username: "elastic"
  password: ""
setup.kibana:
  host: ""

其中, 是 elastic 用户的密码, 是 Elasticsearch 的 URL, 是 Kibana 的 URL

  1. 启用和配置 system 模块
代码语言:javascript
复制
sudo metricbeat modules enable system

/etc/metricbeat/modules.d/system.yml 文件中修改设置

  1. 启动 Metricbeat

setup 命令加载 Kibana 仪表板。如果仪表板已设置,请省略此命令。

代码语言:javascript
复制
sudo metricbeat setup
sudo service metricbeat start
image-20200107113714169
image-20200107113714169
image-20200107113810612
image-20200107113810612
image-20200107114342406
image-20200107114342406

5 Docker 指标

  1. 启用和配置 docker 模块
代码语言:javascript
复制
sudo metricbeat modules enable docker

/etc/metricbeat/modules.d/docker.yml 文件中修改设置。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 环境信息
    • docker环境安装
    • 1. 基于 Filebeat 搭建 ELK 集群日志中心
      • 整体架构
      • 1.1 单台服务器搭建ELK集群日志中心
        • 1.1.1 应用与ELK部署在同一台服务器
          • 1.1.2 应用与ELK部署在不同服务器
            • 1.1.2.1 应用服务器部署Filebeat服务
        • 1.2 多台服务器搭建ELK集群日志中心
        • 2. 效果
        • 3. 配置logstash
        • 4. 系统指标
        • 5 Docker 指标
        相关产品与服务
        容器镜像服务
        容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档