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.rhkb.cn/news/98498.html

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

相关文章

opencv-进阶05 手写数字识别原理及示例

前面我们仅仅取了两个特征维度进行说明。在实际应用中,可能存在着更多特征维度需要计算。 下面以手写数字识别为例进行简单的介绍。 假设我们要让程序识别图 20-2 中上方的数字(当然,你一眼就知道是“8”,但是现在要让计算机识别…

【JUC系列-01】深入理解JMM内存模型的底层实现原理

一,深入理解JMM内存模型 1,什么是可见性 在谈jmm的内存模型之前,先了解一下并发并发编程的三大特性,分别是:可见性,原子性,有序性。可见性指的就是当一个线程修改某个变量的值之后&#xff0c…

自动化测试用例设计实例

在编写用例之间,笔者再次强调几点编写自动化测试用例的原则: 1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。 2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统…

智慧水利利用4G物联网技术实现远程监测、控制、管理

智慧水利工业路由器是集合数据采集、实时监控、远程管理的4G物联网通讯设备,能够让传统水利系统实现智能化的实时监控和远程管理。工业路由器利用4G无线网络技术,能够实时传输数据和终端信息,为水利系统的运维提供有效的支持。 智慧水利系统是…

湘潭大学 湘大 XTU OJ 1055 整数分类 题解(非常详细)

链接 整数分类 题目 Description 按照下面方法对整数x进行分类:如果x是一个个位数,则x属于x类;否则将x的各位上的数码累加,得到一个新的x,依次迭代,可以得到x的所属类。比如说24,246&#…

手写模拟SpringBoot核心流程(二):实现Tomcat和Jetty的切换

实现Tomcat和Jetty的切换 前言 上一篇文章我们聊到,SpringBoot中内置了web服务器,包括Tomcat、Jetty,并且实现了SpringBoot启动Tomcat的流程。 那么SpringBoot怎样自动切换成Jetty服务器呢? 接下来我们继续学习如何实现Tomcat…

⛳ TCP 协议面试题

目录 ⛳ TCP 协议面试题🐾 一、为什么关闭连接的需要四次挥⼿,⽽建⽴连接却只要三次握⼿呢?🏭 二、为什么连接建⽴的时候是三次握⼿,可以改成两次握⼿吗?👣 三、为什么主动断开⽅在TIME-WAIT状态…

服务器感染了.360勒索病毒,如何确保数据文件完整恢复?

引言: 随着科技的不断进步,互联网的普及以及数字化生活的发展,网络安全问题也逐渐成为一个全球性的难题。其中,勒索病毒作为一种危害性极高的恶意软件,在近年来频频袭扰用户。本文91数据恢复将重点介绍 360 勒索病毒&a…

Git分布式版本控制系统

目录 2、安装git 2.1 初始环境 2.2 Yum安装Git 2.3 编译安装 2.4 初次运行 Git 前的配置 2.5 初始化及获取 Git 仓库 2.6 Git命令常规操作 2.6.2 添加新文件 2.6.3 删除git内的文件 2.6.4 重命名暂存区数据 2.6.5 查看历史记录 2.6.6 还原历史数据 2.6.7 还原未来…

[机器学习]特征工程:主成分分析

目录 主成分分析 1、简介 2、帮助理解 3、API调用 4、案例 本文介绍主成分分析的概述以及python如何实现算法,关于主成分分析算法数学原理讲解的文章,请看这一篇: 探究主成分分析方法数学原理_逐梦苍穹的博客-CSDN博客https://blog.csdn.…

WebRTC | 网络传输协议RTP与RTCP

目录 一、UDP与TCP 1. TCP 2. UDP 二、RTP 1. RTP协议头 (1)V(Version)字段 (2)P(Padding)字段 (3)X(eXtension)字段 &#x…

[golang gin框架] 46.Gin商城项目-微服务实战之后台Rbac客户端调用微服务权限验证以及Rbac微服务数据库抽离

一. 根据用户的权限动态显示左侧菜单微服务 1.引入 后台Rbac客户端调用微服务权限验证功能主要是: 登录后显示用户名称、根据用户的权限动态显示左侧菜单,判断当前登录用户的权限 、没有权限访问则拒绝,参考[golang gin框架] 14.Gin 商城项目-RBAC管理,该微服务功能和上一节[g…

.Net Core 动态加载和卸载程序集

从 .Net Core 3.0开始支持程序集的加载和卸载,在 .Net FrameWork中使用独立的应用程序域来实现同样的功能,.Net Core 不支持创建多个应用程序域,所以无法使用多个应用程序域来实现程序集动态加载和卸载。 AssemblyLoadContext 程序集加载上下…

lvs-DR模式:

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

猿辅导Motiff亮相IXDC 2023国际体验设计大会,发布新功能获行业高度关注

近日,“IXDC 2023国际体验设计大会”在北京国家会议中心拉开序幕,3000设计师、1000企业、200全球商业领袖,共襄为期5天的用户体验创新盛会。据了解,此次大会是以“设计领导力”为主题,分享全球设计、科技、商业的前沿趋…

iptables

1、iptables iptables分为四表五链: 四表:mangle raw nat filter 五链:input output forward prerouting postrouting 2、查看 查看iptables规则 iptables -vnL -v 查看时显示更详细信息 -n 所有字段以数字形式显示 -L 查看规则列表 …

dockers搭建基本服务

1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 拉取mysql-5.6和owncloud的镜像 docker run -d --name mdb --env MYSQL_ROOT_PASSWORD123 cytopia/mysql-5.6 docker run -d -p 90:80 --name webdcloud --link mdb:mdb owncloud 注册的时候,数据…

攻防世界-fileclude

原题 解题思路 直接展示源码了,flag.php应该存放了flag,在file1与file2都不为空且file2是“hello ctf”时file1将被导入。接下来做法很明显,让file为flag.php,file2为“hello ctf”。“?file1php://filter/readconvert.base64-en…

docker搭建es+kibana

docker搭建eskibana 0 安装docker 如果是mac或者windows,可以直接安装Docker Desktop更加便捷。 前提条件: Docker可以运行在Windows、Mac、CentOS、Ubuntu等操作系统上 Docker支持以下的CentOS版本: CentOS 7 (64-bit)CentOS 6.5 (64-bit…

Qt安卓开发经验技巧总结V202308

01:01-05 pro中引入安卓拓展模块 QT androidextras 。pro中指定安卓打包目录 ANDROID_PACKAGE_SOURCE_DIR $$PWD/android 指定引入安卓特定目录比如程序图标、变量、颜色、java代码文件、jar库文件等。 AndroidManifest.xml 每个程序唯一的一个全局配置文件&…