ELK日志监控系统搭建docker版

目录

  • 日志来源
  • elk介绍
    • elasticsearch介绍
    • logstash介绍
    • kibana介绍
  • 部署
    • elasticsearch
      • 拉取镜像:`docker pull elasticsearch:7.17.9`
      • 修改配置⽂件:`/usr/share/elasticsearch/config/elasticsearch.yml`
      • 启动容器
      • 设置密码(123456)
      • 忘记密码重置密码
    • logstash
      • 拉取镜像:`docker pull logstash:7.17.9`
      • 修改配置
      • 启动容器
    • kibana
      • 拉取镜像
      • 修改配置⽂件kibana.yml
      • 启动容器
  • 运行

日志来源

  1. 使用docker部署nginx,并且提供简单的静态页面服务。
  2. 将nginx的配置,日志(error.log,access.log),页面统统挂载出来。

启动步骤如下:

  1. 先启动一个野nginx,然后把上述文件或目录docker cp出来,否则直接启动nginx会造成空目录覆盖镜像里面的文件导致无法启动nginx:

    docker run -d --name nginx_testdocker exec -it nginx_test bash
    
  2. 确定文件,进入容器后,根据配置文件定位自己需要的目录:

    在这里插入图片描述

    # 配置目录(我嫌麻烦,一锅端)
    docker cp nginx_test:/etc/nginx /generalzy/elk/config
    # 页面目录
    docker cp nginx_test:/usr/share/nginx/html /generalzy/elk/html
    # 日志目录
    docker cp nginx_test:/var/log/nginx /genralzy/elk/logs
    
  3. 修拍配置文件后启动:

    docker run -p 30080:80 --name nginx --privileged=true \
    -v /generalzy/elk/html:/usr/share/nginx/html \
    -v /generalzy/elk/logs/access.log:/var/log/nginx/access.log \
    -v /generalzy/elk/logs/error.log:/var/log/nginx/error.log \
    -v /generalzy/elk/config:/etc/nginx \
    -d nginx
    
  4. 访问nginx
    在这里插入图片描述

elk介绍

⼀个⽇志系统应该包含以下⼏点:

(1) 收集[collect]:能够采集多种来源的⽇志数据
(2) 传输[transform]:能够稳定的把⽇志数据解析过滤并传输到存储系统
(3) 存储[store]:存储⽇志数据
(4) 分析[analyze]:⽀持 UI 分析
(5) 警告[warning]:能够提供错误报告,监控机制

在这里插入图片描述

在这里插入图片描述

elasticsearch介绍

elasticsearch是⼀个分布式、⾼扩展、⾼实时的搜索与数据分析引擎,作为存储系统是整个ELK架构的 核⼼。⽤于全⽂检索、结构化搜索、分析。

logstash介绍

logstash是开源的数据收集引擎。可以收集不同来源的数据,并将数据解析过滤发送到输出⽬标。

logstash提供了⼤量插件,可解析,丰富,转换和缓冲任何类型的数据。

管道(pipeline) 是logstash中独⽴运⾏的单元。每个管道都必须要包含输⼊(input)、输出(output)以及可选的过滤器(fileter)

在这里插入图片描述
1:inputs 输⼊ 【输⼊来源可以是file、kafka、beats等】
2:filters 过滤
3:outputs 输出 【输出⽬标可以是Stdout(控制台)、File、ES等】

logstash可以从多个输⼊源获取内容通过type进⾏区分 并可根据type向多数据源输出

kibana介绍

Kibana是⼀个开源的分析与可视化平台。

⽤kibana搜索、查看存放在Elasticsearch中的数据。

Kibana与Elasticsearch的交互⽅式是各种不同的图表、表格、地图等,直观的展示数据,从⽽达到⾼级 的数据分析与可视化的⽬的。

部署

部署前先创建新的局域⽹,防⽌容器IP频繁改动后需要修改配置⽂件

docker network create --subnet=172.18.0.0/16 elk_net
或
docker network create elk_net

elasticsearch

拉取镜像:docker pull elasticsearch:7.17.9

修改配置⽂件:/usr/share/elasticsearch/config/elasticsearch.yml

# es集群名称
cluster.name: "elastic"
# 监听
network.host: 0.0.0.0
# 跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
# 开启密码校验
xpack.security.enabled: true

启动容器

docker run -it --privileged=true -d -p 39200:9200 -p 39300:9300 --name es \
--net elk_net --privileged=true \
-v /generalzy/elk/es/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /generalzy/elk/es/data:/usr/share/elasticsearch/data \
-v /generalzy/elk/es/logs:/usr/share/elasticsearch/logs \
-e ES_JAVA_OPTS="-Xms128m -Xmx128m" -e "discovery.type=single-node" elasticsearch:7.17.9

Xms Xmx为最⼩最⼤堆内存,将其改为我们主机的物理内存的⼀半(50%-70%)即可,要设置成相同的值,以防⽌在运⾏时调整堆的⼤⼩。

设置密码(123456)

进⼊elasticsearch容器中初始化各个组件的密码

./bin/elasticsearch-setup-passwords interactive

在这里插入图片描述

忘记密码重置密码

修改elasticsearch.yml配置⽂件注释使⽤xpack安全校验配置,取消使⽤密码校验
在这里插入图片描述
重启容器查看所有索引curl -XGET "127.0.0.1:9200/_cat/indices" -H 'Content-Type: application/json'

删除security-7索引:curl -XDELETE 127.0.0.1:9200/.security-7

修改配置⽂件开启密码配置 后 重启,重复添加密码操作。

logstash

拉取镜像:docker pull logstash:7.17.9

修改配置

在这里插入图片描述
logstash.yml:

# 节点名称
node.name: "logstash001"
http.host: "0.0.0.0"
# 设置禁⽤X-Pack监视功能
xpack.monitoring.enabled: false

X-Pack是Elastic Stack的⼀个扩展插件,包含了安全控制、报警、监控、报表和画图功能。X- Pack能够⽅便地启⽤或禁⽤。

在这里插入图片描述
pipelines.yml:⽤于指定在⼀个logstash中运⾏多个管道的配置⽂件,在启动logstash时他会⾃动加载pipelines.yml中指定的path.config下的所有的管道配置⽂件conf合并成⼀个整体的配置⽂件。

将管道的具体的配置⽂件放置在config下,⽅便容器统⼀的挂载

# This file is where you define your pipelines. You can define multiple.
# For more information on multiple pipelines, see the documentation:
# https://www.elastic.co/guide/en/logstash/current/multiple-pipelines.html
# 可以在这个配置⽂件中定义多个管道,⽤于从多个数据源中获取信息
- pipeline.id: pipeline001  # 管道idpath.config: "/usr/share/logstash/config/*.conf"

pipeline管道配置: /usr/share/logstash/config/pipeline001.conf

#获取/usr/share/logs/*下的⽂件输出到es中
input {file{path => ['/usr/share/logs/*']type => "nginx-log"}
}filter {#json{# 将message作为解析json的字段#source => "message"#}
}output {if[type] == "nginx-log"{elasticsearch {hosts => [ "es:9200" ]index => "nginx-log-%{+YYYY-MM-dd}"user => "elastic"password => "123456"}}
}

nginx不做格式化 在logstash中是⽆法格式化成功的。它可以把json字符串处理成json数据(别忘了结尾分号

'{"nginx_timestamp":"$time_iso8601","clientip":"$remote_addr", '' "nginx_host":"$server_addr","host":"$http_host","request":"$request","url":"$request_uri",'' "upstreamhost":"$upstream_addr","status":"$status","body_bytes_sent":"$body_bytes_sent",'' "upstream_response_time":"$upstream_response_time",'' "xff":"$http_x_forwarded_for","referer":"$http_referer","http_user_agent":"$http_user_agent",'' "request_length":"$request_length","request_method":"$request_method"}'

在这里插入图片描述

启动容器

docker run -d -it --privileged=true --name=lh --net elk_net \
-p 35047:5047 -p 39600:9600 \
-v /generalzy/elk/logstash:/usr/share/logstash/config \
# nginx日志
-v /generalzy/elk/logs/:/usr/share/logs/ \
logstash:7.17.9

在这里插入图片描述

kibana

拉取镜像

docker pull kibana:7.17.9

修改配置⽂件kibana.yml

server.name: kibana
server.host: "0.0.0.0"
xpack.monitoring.ui.container.elasticsearch.enabled: true
elasticsearch.hosts: [ "http://es:9200" ]
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
elasticsearch.requestTimeout: 50000
i18n.locale: "zh-CN"	#中⽂ui界⾯
server.publicBaseUrl: "http://0.0.0.0:5601"

启动容器

docker run -d --privileged=true --name kb \
-p 35601:5601 --net elk_net \
-v /generalzy/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
kibana:7.17.9

运行

打开界⾯后 先在索引管理中找到logstash输出到es中的数据产⽣的索引,随后去“索引模式”模块中去定义⼀个索引模式,kibana索引模式要与es中的索引相匹配才可以在kibana中实现可视化管理。

  1. 先根据索引写一个正则,由于收集的日志前缀都是nginx,可以定义nginx索引模式

    在这里插入图片描述

  2. 查看日志:
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/80938.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux环境下远程访问SVN服务:SVN内网穿透的详细配置与操作指南

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

【数据结构】C语言实现栈(详细解读)

前言: 💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥 ✨✨专栏:http://t.csdn.cn/oXkBa ⛳⛳本篇内容:c语言数据结构--C语言实现栈 目录 什么是栈 栈的概念及结构 实现栈的方式 链表的优缺点: 顺序表的优缺点: 栈…

C++图形界面编程-MFC

C控制台程序是命令行黑框,如果要写一个图形界面,VS也提供了图形界面编程MFC。建项目的时候选如下选项: 类似于QT。 问:那么MFC项目的运行入口main()或WinMain()在哪里呢? 答:其实,在MFC应用程…

非凸联合创始人李佐凡受邀出席复旦DSBA项目座谈会

8月17日,非凸科技联合创始人&CTO李佐凡受邀参加复旦管院数据科学与商业分析专业硕士(DS&BA)项目发展座谈会,与学校教授、老师在生源背景、课程教学、职业发展、学生培养和企业合作方面进行深入交流,旨在更好地…

Elasticsearch 常见的简单查询

查看es中有哪些索引 请求方式:GET 请求地址:http://localhost:9200 /_cat/indices?v 参数:无 结果: 查看索引全部数据 请求方式:GET 请求地址:http://localhost:9200/index-2023-08/_search 参数&a…

go: go.mod file not found in current directory or any parent directory.

go version go 1.20.7 go 1.17 以后都是用 go install 命令 D:\Go\bin\go.exe get -u github.com/nsf/gocode D:\Go\bin\go.exe get -u golang.org/x/tools/cmd/guru D:\Go\bin\go.exe get -u github.com/rogpeppe/godef>> Running: D:\Go\bin\go.exe get -u github.com…

实时同步ES技术选型:Mysql+Canal+Adapter+ES+Kibana

基于之前的文章,精简操作而来 让ELK在同一个docker网络下通过名字直接访问Ubuntu服务器ELK部署与实践使用 Docker 部署 canal 服务实现MySQL和ES实时同步Docker部署ES服务,canal全量同步的时候内存爆炸,ES/Canal Adapter自动关闭&#xff0c…

WPF中手写地图控件(3)——动态加载地图图片

瓦片增加一个Loading动画 可以查看我的另一个博客WPF中自定义Loading图 从中心扩散 进行从里到外的扩散,方向是上左下右。如下图所示 于是我们可以定义一个拥有坐标X跟Y的集合,他允许这个集合,内部使用枚举器的MoveNext自动排序&#xf…

(6)(6.6) 恢复任务回放

文章目录 前言 6.6.1 配置 6.6.2 工作原理 6.6.3 局限性 前言 本页介绍了什么是"任务继续时后退"功能以及如何使用该功能。 !Note 从 4.1 版起,Plane、Copter 和 Rover 均可使用此功能。 在某些应用或运行区域,为了消除冲突…

从Gradle生命周期到自定义Task挂接到Build构建流程全解

我们知道Gradle构建工具非常的灵活,它提供了一系列的Api让我们有能力去修改或定制项目的构建过程,在项目的编译过程中,插入我们自己的 Task 并执行相关的操作,如:多渠道打包,ASM代码织入和资源的检测等。 …

GAN:对抗生成网络,前向传播和后巷传播的区别

目录 GAN:对抗生成网络 损失函数 判别器开始波动很大,先调整判别器 生成样本和真实样本的统一:真假难辨​编辑 文字专图片​编辑 头像转表情包​编辑 头像转3D​编辑 后向传播 1. 前向传播(forward) 2. 反向传播&…

LVS - DR

LVS-DR 数据流向 客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间。Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传…