前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Elastic Stack 实现日志的自动采集、搜索和分析

Elastic Stack 实现日志的自动采集、搜索和分析

作者头像
IT大咖说
发布2020-08-21 16:40:29
1.1K0
发布2020-08-21 16:40:29
举报
文章被收录于专栏:IT大咖说IT大咖说

Elastic Stack 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎

Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化管理和展示

Beats 是一个免费且开放的平台,集合了多种单一用途数据采集器,将数据发送给 Logstash 或 Elasticsearch

Logstash 是一个免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中

一、下载镜像(image)

搜索镱像(image)

代码语言:javascript
复制
docker search elasticsearch
docker search kibana
docker search logstash

获取镜像(image)

代码语言:javascript
复制
docker pull elasticsearch:7.6.0     #镜像名称:Tag
docker pull kibana:7.6.0            #镜像名称:Tag
docker pull logstash:7.6.0            #镜像名称:Tag

注:版本要统一

二、创建 ELK.yml

ELK.yml

代码语言:javascript
复制
version: "3.5"
  
services:
  elasticsearch:
     container_name: elasticsearch
     image: elasticsearch:7.6.0             #镱像(image)
     restart: always                        #重启方式
     environment:
       discovery.type: single-node          #环境变量:运行模式 单例
     ports:
       - "9200:9200"                        #端口映射
       - "9300:9300"
  kibana:
    container_name: kibana
    image: kibana:7.6.0                     #镱像(image)
    restart: always                         #重启方式
    environment:
      I18N_LOCALE: "zh-CN"                  #指定中文
    ports:
       - "5601:5601"                        #端口映射
  logstash:
    container_name: logstash
    image: logstash:7.6.0
    restart: always
    volumes:                                #文件夹映射,本地:容器
      - "/Users/iChochy/logs:/usr/share/logstash/logs"
    ports:
      - "5044:5044"
      - "9600:9600"

volumes自定义监控的文件夹 注:注意YML文件编写,不要出现 Tab 制表符,否则导致文件解析错误,启动容器(container)失败

代码语言:javascript
复制
# 错误信息
yaml.scanner.ScannerError: mapping values are not allowed here

三、运行容器

宿主机hosts中添加

代码语言:javascript
复制
127.0.0.1      elasticsearch

命令启动

代码语言:javascript
复制
docker-compose -f ELK.yml up -d
代码语言:javascript
复制
docker-compose 
                -f  #指定构建文件
                up  #创建并启动容器
                -d  #后台运行容器(container),打印容器(container)ID

四、检查容器的运行状态

elasticsearch 访问:http://127.0.0.1:9200

logstash 访问:http://127.0.0.1:9600

Kibana 访问:http://127.0.0.1:5601,进入 Kibana

运行docker ps查询容器运行状态,可以查看到容器的ID

代码语言:javascript
复制
mleo$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                                            NAMES
1b8cb2effede        logstash:7.6.0        "/usr/local/bin/dock…"   2 hours ago         Up About an hour    0.0.0.0:5044->5044/tcp, 0.0.0.0:9600->9600/tcp   logstash
69b8bc678e4e        kibana:7.6.0          "/usr/local/bin/dumb…"   3 weeks ago         Up 2 hours          0.0.0.0:5601->5601/tcp                           kibana
8c655f5b7493        elasticsearch:7.6.0   "/usr/local/bin/dock…"   3 weeks ago         Up 2 hours          0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   elasticsearch

运行docker logs id查看容器运行日志

代码语言:javascript
复制
例:持续查看logstash日志
docker logs 1b8cb2effede -f

五、修改logstash配置,监控日志文件

  • 运行docker exec -it 1b8cb2effede bash进入logstash
  • 运行vi pipeline/logstash.conf修改logstash默认配置
代码语言:javascript
复制
input {
  beats {
    port => 5044
  }
  file {
    path => "/usr/share/logstash/logs/*"   #监控的文件路径
  }
}

output {
  stdout {
    codec => rubydebug
  }
  elasticsearch {
    hosts => ["http://elasticsearch:9200"]  #elasticsearch请求地址
    index => "ichochy"                      #索引名称
  }
}

  • 运行docker restart 1b8cb2effede重启 logstash

六、采集日志

在logstash的监控的文件路径下动态添加日志文件,日志就可以自动采集到 elasticsearch

代码语言:javascript
复制
touch web.log   #创建日志文件
echo "www.ichochy.com" > web.log  #添加日志信息

查看 logstash 日志信息可以看到打印的日志

代码语言:javascript
复制
{
      "@version" => "1",
          "path" => "/usr/share/logstash/logs/web.log",
          "host" => "1b8cb2effede",
    "@timestamp" => 2020-07-10T14:07:16.633Z,
       "message" => "www.ichochy.com"
}

七、搜索、分析日志

访问:http://127.0.0.1:5601,进入 Kibana

在Discover可以看到刚刚添加进来的日志数据,开始表演…………

联系方式

网站:https://ichochy.com/ 源文:https://ichochy.com/posts/20200710/

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com

来都来了,走啥走,留个言呗~

IT大咖说 | 关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

相关推荐 推荐文章

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、下载镜像(image)
  • 二、创建 ELK.yml
  • 三、运行容器
  • 四、检查容器的运行状态
  • 五、修改logstash配置,监控日志文件
  • 六、采集日志
  • 七、搜索、分析日志
  • 联系方式
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档