ELK日志监控系统搭建docker版

news2024/9/17 8:37:31

目录

  • 日志来源
  • 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_test
    
    docker 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  # 管道id
  path.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.coloradmin.cn/o/903141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis从基础到进阶篇(一)

目录 一、了解NoSql 1.1 什么是Nosql 1.2 为什么要使用NoSql 1.3 NoSql数据库的优势 1.4 常见的NoSql产品 1.5 各产品的区别 二、Redis介绍 2.1什么是Redis 2.2 Redis优势 2.3 Redis应用场景 2.4 Redis下载 三、Linux下安装Redis 3.1 环境准备 3.2 Redis的…

Win11右键显示更多选项

不需要重启电脑,重启资源管理器即可,用命令:taskkill /f /im explorer.exe & start explorer.exe

一、Kafka概述

目录 1.3 Kafka的基础架构 1.3 Kafka的基础架构 Producer:消息生产者,就是向 Kafka broker 发消息的客户端Consumer:消息消费者,向 Kafka broker 取消息的客户端。Consumer Group(CG):消费者组&…

浅析深浅拷贝

我们在对对象进行复制时就用到深浅拷贝。 一、普通复制 <script>const people{name:tim,age:22}const testpeople;console.log(test);//tim 22test.age20;console.log(test);//tim 20console.log(people);//tim 20 </script> 控制台打印结果&#xff1a; 之所以…

使用struct解析通达信本地Lday日线数据

★★★★★博文原创不易&#xff0c;我的博文不需要打赏&#xff0c;也不需要知识付费&#xff0c;可以白嫖学习编程小技巧&#xff0c;喜欢的老铁可以多多帮忙点赞&#xff0c;小红牛在此表示感谢。★★★★★ 在Python中&#xff0c;struct模块提供了二进制数据的打包和解包…

使用transformers生成文本Generating text with transformers

到目前为止&#xff0c;您已经看到了Transformers架构内部的一些主要组件的高级概述。但您还没有看到从头到尾的整体预测过程是如何工作的。让我们通过一个简单的例子来了解。在这个例子中&#xff0c;您将查看一个翻译任务或一个序列到序列的任务&#xff0c;这恰好是Transfor…

破解难题:如何应对项目中的‘老油条’障碍

引言 在项目管理的实践中&#xff0c;我们经常遇到各种各样的人员挑战。其中&#xff0c;有一种特殊的挑战被称为“老油条”现象。这些“老油条”通常在表面上表现得非常配合&#xff0c;但在实际工作中却常常没有任何进展。这种情况不仅会影响项目的进度&#xff0c;还可能对…

机器学习---常见的距离公式(欧氏距离、曼哈顿距离、标准化欧式距离、余弦距离、杰卡德距离、马氏距离、切比雪夫距离、闵可夫斯基距离、K-L散度)

1. 欧氏距离 欧几里得度量&#xff08;euclidean metric&#xff09;&#xff08;也称欧氏距离&#xff09;是一个通常采用的距离定义&#xff0c;指在m维空 间中两个点之间的真实距离&#xff0c;或者向量的自然长度&#xff08;即该点到原点的距离&#xff09;。在二维和三维…

Spring(16) Aware结尾的类整理

目录 一、什么是 Aware 结尾的类&#xff1f;二、常见的 Aware 实现接口三、Aware 实现原理 一、什么是 Aware 结尾的类&#xff1f; 在 Spring Boot 中&#xff0c;以 Aware 结尾的类通常是一些继承了 Aware 接口的接口类&#xff0c;它们用于使 Bean 获取某些特定的能力或资…

AJAX的POST请求在chrome浏览器报net::ERR_CONNECTION_RESET问题

背景说明 公司对前端的所有的AJAX请求做了统一的封装&#xff0c;因此业务上需要发起请求调用后端服务时&#xff0c;使用的都是公司封装好的工具。 由于ERR_CONNECTION_RESET问题比较粗&#xff0c;也就是说可能会有很多原因会导致浏览器报这个错&#xff0c;因此在网上可以…

clion软件ide的安装和环境配置@ubuntu

1.官网&#xff1a; Download CLion 2.安装Clion 直接在官网下载并安装即可&#xff0c;过程很简单 https://www.jetbrains.com/clion/ https://www.jetbrains.com/clion/download/#sectionlinux 3.激活码 4.配置Clion 安装gcc、g、make Ubuntu中用到的编译工具是gcc©…

Java面向对象——多态、Object类、instanceof关键字以及final关键字

多态的概念 1.多态是指同一个方法调用可以在不同的对象上有不同的表现&#xff0c;即同一种方法调用方式适用于不同的数据类型。 编译时和运行时&#xff1a;编译时期调用的是父类中的方法&#xff0c;但运行时期会根据实际的对象类型来调用适当的方法。这种行为称为动态绑定&…

自注意力机制简介Transformers: Attention is all you need

“Attention is All You Need” 是一篇由Google研究人员在2017年发表的研究论文&#xff0c;该论文介绍了Transformer模型&#xff0c;这是一种革命性的架构&#xff0c;它彻底改变了自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并成为我们现在所知道的LLMs的基础…

剪枝基础与实战(1): 概述

本文介绍基于L1正则化的剪枝原理,并以VGG网络进行实战说明。将从零详细介绍模型训练、稀疏化、剪枝、finetune的全过程,提供详细的源码及说明,有助于对剪枝的熟练掌握,后续也会对yolov8进行剪枝的介绍。 论文: Learning Efficient Convolutional Networks through Network …

学习笔记|基于Delay实现的LED闪烁|模块化编程|SOS求救灯光|STC32G单片机视频开发教程(冲哥)|第六集(下):实现LED闪烁

文章目录 2 函数的使用1.函数定义&#xff08;需要带类型&#xff09;2.函数声明&#xff08;需要带类型&#xff09;3.函数调用 3 新建文件&#xff0c;使用模块化编程新建xxx.c和xxx.h文件xxx.h格式&#xff1a;调用头文件验证代码调用&#xff1a;完整的文件结构如下&#x…

PyTorch学习笔记(十七)——完整的模型验证(测试,demo)套路

完整代码&#xff1a; import torch import torchvision from PIL import Image from torch import nnimage_path "../imgs/dog.png" image Image.open(image_path) print(image)# 因为png格式是四个通道&#xff0c;除了RGB三通道外&#xff0c;还有一个透明度通…

利用“病毒制造机”实现脚本病毒的制造

一、脚本病毒的概念&#xff1a; 脚本病毒通常是 JavaScript 或 VBScript 等语言编写的恶意代码&#xff0c;一般广告性质&#xff0c;会修改 IE 首页、修改注册表等信息&#xff0c;对用户计算机造成破坏。 通过网页进行的传播的病毒较为典型&#xff0c;脚本病毒还会有如下前…

【LeetCode-中等题】128. 最长连续序列

题目 题解一&#xff1a;HeshSet枚举 思路&#xff1a;先对数组进行set去重&#xff0c;核心就是&#xff0c;先找出临界值&#xff08;假设以最小临界为例&#xff0c;那么这个临界值自己就是最小值&#xff0c;&#xff09;&#xff0c;以临界值不断做加1操作&#xff0c;看…

Kotlin 使用 View Binding

解决的问题&#xff1a; 《第一行代码——Android》第三版 郭霖 P277 视图绑定的问题 描述&#xff1a; kotlin-android-extensions 插件已经弃用 butter knife 已经弃用 解决办法 推荐使用 View Binding 来代替 findViewById 使用方法 1、配置 build.gradle 2、在act…