Docker 日志管理

一、ELK -Filebeat

Elasticsearch 数据的存储和检索 

常用端口:

9100:elasticsearch-head提供web访问

9200:elasticsearch与其他程序连接或发送消息

9300:elasticsearch集群状态

Logstash 有三个组件构成input,fileter,output

常用端口:5044

Kibana 数据的可视化

常用端口:5601

Filebeat 采集日志

       Filebeat 是 ELK 组件的新成员, 也是 Beat 成员之一。基于 Go 语言开发,无任何依赖,并且比 Logstash 更加轻量, 不会带来过高的资源占用, 非常适合安装在生产机器上。轻量意味着简单,Filebeat 并没有集成和 Logstash 一样的正则处理功能, 而是将收集的日志原样输出。
      以下是 Filebeat 的工作流程: 当开启 Filebeat 程序的时候,它会启动一个或多个检测进程(prospectors) 找到指定的日志目录或文件。对于探测器找出的每一个日志文件,Filebeat 启动读取进程(harvester)。每读取一个日志文件的新内容,便发送这些新的日志数据到处理程序(spooler) 。最后,Filebeat 会发送数据到指定的地点 (比如 logstash、elasticserach)。
       正是以上原因,目前, Filebeat 已经完全替代了 Logstash 成为新一代的日志采集器。同时,鉴于它的轻量、安全等特点,越来越多人开始使用它。

基于ELKF集群架构

Docker 日志管理缺陷 

       ELK 架构适合于日志规模比较庞大的情况。但由于 Logstash 日志解析节点和Elasticsearch 的负荷比较重,可将其配置为集群模式,以分担负荷。引入消息队列, 均衡了网络传输, 从而降低了网络闭塞, 尤其是丢失数据的可能性, 但依然存在 Logstash 占用系统资源过多的问题。

二、实验部署

实验的基本环境部署

镜像+软件包

[root@localhost ~]# vim /etc/sysctl.conf

vm.max_map_count=655360

备注:

max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量(字节)

Vm 虚拟

Map映射

Count数量

[root@localhost ~]# sysctl -p           (立刻执行+检查语法)

[root@localhost ~]# vim /etc/security/limits.conf

* soft nofile 65535                no :number数量

* hard nofile 65535             硬链接  文件数量限制

* soft nproc 65535                进程数量

* hard nproc 65535 

* soft memlock unlimited       是否锁定内存

* hard memlock unlimited   硬限制

[root@localhost ~]# docker network create ELK-kgc    (创建ELK-kgc,所有网络加入,利用容器名称进行访问)

[root@localhost ~]# docker network ls    (查看网络类型)

1.构建Elasticsearch

1)创建 Elasticsearch 工作目录

[root@localhost ~]# mkdir elk

[root@localhost ~]# mkdir -p elk/elasticsearch

[root@localhost ~]# cd elk/elasticsearch

[root@localhost ]# cp elasticsearch-7.10.0-linux-x86_64.tar.gz elk/elasticsearch/      (上传 elasticsearch 的源码包到   elk/elasticsearch 目录下)

(2)修改elasticsearch.yml配置文件

[root@localhost elasticsearch]# cd elasticsearch-7.10.0
[root@localhost elasticsearch-7.10.0]# ls
bin  config  jdk  lib  LICENSE.txt  logs  modules  NOTICE.txt  plugins  README.asciidoc
[root@localhost elasticsearch-7.10.0]# cd config/
[root@localhost config]# ls
elasticsearch.yml  jvm.options.d      role_mapping.yml  users
jvm.options        log4j2.properties  roles.yml         users_roles
[root@localhost config]# vim elasticsearch.yml 

cluster.name: my-application          ##17行,群集名称

node.name: elasticsearch                  ##23行,本节点主机名:容器名称

path.data: /path/to/data                     ##33行,数据文件路径

path.logs: /path/to/logs                        ##37行,日志文件路径

network.host: 0.0.0.0                       ##55行,监听地址(容器地址)

http.port: 9200                                ##59行,监听端口

cluster.initial_master_nodes: ["elasticsearch"]                                  ##72,master主机名称,群集的初始化会将此节点选举为master 。   ["elasticsearch"] 是容器名称

[root@localhost config]# cp elasticsearch.yml /root/elk/elasticsearch/

(3)Dockerfile文件

FROM centos:7

RUN rm -rf /etc/yum.repos.d/*
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
RUN yum clean all

RUN yum -y install java-11 vim net-rools

ADD elasticsearch-7.10.0-linux-x86_64.tar.gz /usr/local/

RUN mkdir -p /path/to/logs
RUN mkdir -p /path/to/data

COPY elasticsearch.yml /usr/local/elasticsearch-7.10.0/config
RUN sed -i 's/-Xms1g/-Xms4g/g' /usr/local/elasticsearch-7.10.0/config/jvm.options
RUN sed -i 's/-Xmx1g/-Xmx4g/g' /usr/local/elasticsearch-7.10.0/config/jvm.options

RUN useradd es
RUN chown -R es:es /path/to/logs
RUN chown -R es:es /path/to/data
RUN chown -R es:es /usr/local/elasticsearch-7.10.0/

EXPOSE 9200
EXPOSE 9300

CMD su es /usr/local/elasticsearch-7.10.0/bin/elasticsearch
 

[root@localhost elasticsearch]# docker build -t elasticsearch .          (构建 Elasticsearch 镜像 )

 

2.构建kibana镜像

(1)创建目录

[root@localhost elk]# mkdir kibana

[root@localhost ~]# cp kibana-7.10.0-linux-x86_64.tar.gz elk/kibana/
[root@localhost ~]# cd elk/kibana/
[root@localhost kibana]# ls
kibana-7.10.0-linux-x86_64.tar.gz
[root@localhost kibana]# tar zxvf kibana-7.10.0-linux-x86_64.tar.gz 

(2)kibana.yml文件

[root@localhost kibana]# ls
kibana-7.10.0-linux-x86_64  kibana-7.10.0-linux-x86_64.tar.gz
[root@localhost kibana]# cd kibana-7.10.0-linux-x86_64
[root@localhost kibana-7.10.0-linux-x86_64]# ls
bin     data         node          NOTICE.txt    plugins     src
config  LICENSE.txt  node_modules  package.json  README.txt  x-pack
[root@localhost kibana-7.10.0-linux-x86_64]# vim config/kibana.yml 
[root@localhost kibana-7.10.0-linux-x86_64]# cp config/kibana.yml /root/elk/kibana/

(3)Dockerfile

FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
RUN yum clean all

RUN yum -y install java-11 vim net-tools

ADD kibana-7.10.0-linux-x86_64.tar.gz /usr/local/
COPY kibana.yml /usr/local/kibana-7.10.0-linux-x86_64/config

EXPOSE 5601
RUN useradd es
RUN chown -R  es:es /usr/local/kibana-7.10.0-linux-x86_64/

CMD su es /usr/local/kibana-7.10.0-linux-x86_64/bin/kibana

[root@localhost kibana]# docker build -t kibana .

3. 创建logstash镜像

(1)创建目录

[root@localhost elk]# mkdir logstash
[root@localhost ~]# cp logstash-7.10.0-linux-x86_64.tar.gz elk/logstash/
[root@localhost ~]# cd elk/logstash/
[root@localhost logstash]# ls
logstash-7.10.0-linux-x86_64.tar.gz
 

(2)创建dockerfile文件

[root@localhost logstash]# vim dockerfile

FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
RUN yum clean all
RUN yum -y install vim java-11 net-tools

ADD logstash-7.10.0-linux-x86_64.tar.gz /usr/local/
ADD nginx-log.conf /opt/logstash/conf/nginx-log.conf
EXPOSE 5044
COPY run.sh /run.sh
RUN chmod +x /run.sh
CMD ["/run.sh"]
 

(3)创建 CMD 运行的脚本文件

#!/bin/bash
/usr/local/logstash-7.10.0/bin/logstash -f /opt/logstash/conf/nginx-log.conf
 

(4)编写配置文件

[root@localhost logstash]# vim nginx-log.conf

input {              (输入)

  beats {                  (日志来源是filebeat)

    port => "5044"            (该端口用来连接filebeat)

    codec => "json"      (编码格式)

 }

}

output{                

    elasticsearch {           (日志转发对象)

      hosts => ["elasticsearch:9200"]          (容器名称:端口)

      manage_template => false            (是否启用模板:否)

      index => "www-bdqn-cn-pro-access-%{+YYYY.MM.dd}"    (索引名称)

    }

}

[root@localhost logstash]# mkdir -p /opt/logstash/conf
[root@localhost conf]# cp /root/elk/logstash/nginx-log.conf  /opt/logstash/con

[root@localhost logstash]# docker build -t logstash .    (构建logstash镜像)

4.构建filebeat镜像

(1)创建目录

[root@localhost elk]# mkdir filebeat

[root@localhost ~]# cp filebeat-7.10.0-linux-x86_64.tar.gz elk/filebeat/

(2)编辑filebeat.yml文件

[root@localhost filebeat]# vim filebeat.yml

filebeat.inputs:
- type: log
  paths:
    - /var/log/nginx/access.log
  tags: ["www-kgc-access"]

output.logstash:
  hosts: ["logstash:5044"]
 

(3)编辑dockerfile

[root@localhost filebeat]# vim dockerfile

FROM centos:7
RUN rm -rf /etc/yum.repos.d/*
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
RUN yum clean all

RUN yum -y install java-11 net-tools vim
ADD filebeat-7.10.0-linux-x86_64.tar.gz /usr/local/
COPY filebeat.yml /usr/local/filebeat-7.10.0-linux-x86_64/

ADD run.sh /run.sh

RUN chmod 755 /*.sh

CMD ["/run.sh"]

(4)创建CMD运行脚本

[root@localhost Filebeat]# vim run.sh

#!/bin/bash

/usr/local/filebeat-7.10.0-linux-x86_64/filebeat -e -c /usr/local/filebeat-7.10.0-linux-x86_64/filebeat.yml

备注:
-c:配置文件位置
-path.logs:日志位置
-path.data:数据位置
-path.home:家位置
-e:关闭日志输出
-d 选择器:启用对指定选择器的调试。 对于选择器,可以指定逗号分隔的组件列表,也可以使用-d“*”为所有组件启用调试.例如,-d“publish”显示所有“publish”相关的消息。

启动nginx进行日志输出

[root@localhost ~]# docker run -dit -p 80:80 --network ELK-kgc -v /var/log/nginx:/var/log/nginx --name nginx-ELK nginx:latest

nginx-ELK  日志名称

nginx:latest   镜像和标签

[root@localhost ~]# curl  192.168.10.101         (访问日志)

[root@localhost ~]# cat /var/log/nginx/access.log      (查看日志)

5.启动镜像

1)启动 Elasticsearch

[root@localhost ~]# docker run -itd -p 9200:9200 -p 9300:9300 --network ELK-kgc -v /path/to/logs:/path/to/logs --name elasticsearch elasticsearch

elasticsearch elasticsearch   (前一个elasticsearch容器名称,后者是镜像名称)

2)启动 kibana

[root@localhost ~]# docker run -itd -p 5601:5601 --network ELK-kgc --name kibana kibana

3)启动 logstash

[root@localhost ~]# docker run -itd -p 5044:5044 --network ELK-kgc -v /opt/logstash/conf:/opt/logstash/conf --name logstash logstash

4)启动 Filebeat

[root@localhost ~]# docker run -itd --network ELK-kgc -v /var/log/nginx:/var/log/nginx --name filebeat filebeat

6.Kibana web访问即可

192.168.10.101:5601

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

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

相关文章

QT输入组、QT显示组

目录 QT输入组 ​编辑 Combo Box(下拉菜单部件) Font Combo Box(显示系统中可用的字体) Line Edit(行编辑器) Text Edit(文本编辑器) Plain Text Edit(纯文本编辑…

MySQL基础练习题39-商品销售明细表1

目录 题目 准备数据 分析数据 总结 题目 求2024-01-01 每个门店 每个商品 的 销售单量, 销售数量, 销售金额, 线上单量, 线下单量 准备数据 -- 创建库 create database db_2; use db_2;-- 创建商品销售明细(核销)天表 CREATE TABLE dwm_sold_goods_sold_dtl_i (trade_da…

Apple 智能基础语言模型

Introducing Apple’s On-Device and Server Foundation Models technical details June 10, 2024 在2024年的全球开发者大会上,苹果推出了Apple Intelligence,这是一个深度集成到iOS 18、iPadOS 18和macOS Sequoia中的个人智能系统。Apple Intelligen…

25届秋招网络安全面试资料库

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

步进电机驱动笔记1:STM32+DRV8825模块_初步驱动42步进电机

今日学习使用STM32 F103C8T6 与DRV8825模块 驱动42步进电机 本文就简单地用单片机驱动一下,不去了解更深层次的东西,只求能转就行的那种... 文章提供测试代码讲解、完整工程下载、测试效果图 目录 需要准备的模块: DRV8825步进电机驱动器​…

8G显存玩转书生大模型

基础任务 使用 Cli Demo 完成 InternLM2-Chat-1.8B 模型的部署,并生成 300 字小故事,记录复现过程并截图。 尝试很多方法无解后在网页端重新输入: import torch from transformers import AutoTokenizer, AutoModelForCausalLM使用了Tran…

科普| 网络安全知多少?什么是网络安全?网络安全为何重要?

古语有云:“千里之堤,溃于蚁穴。” 此言非但道出了细微之处见真章的哲理,亦在今日之世,隐隐映射出网络安全之于国家、社会乃至个人生活的重要性。 在数字化浪潮汹涌澎湃的今天,网络已如血脉般渗透进每一个角落&#…

C:每日一题:单身狗

​​​​ 一、题目: 在一个整型数组中,只有一个数字出现一次,其他数组都是成对出现的,请找出那个只出现一次的数字。 整型数组 int arr[ ] {1,1,2,2,3,4,4} 二、思路分析: 1.,明确目标,选择…

C++相关内容模块

C相关内容模块 单例模式&#xff0c;实现创建类中的对象&#xff0c;保证该类只能实例化一个唯一的对象 单例模式&#xff0c;实现创建类中的对象&#xff0c;保证该类只能实例化一个唯一的对象 #define _CRT_SECURE_NO_WARNINGS // 抑制 C4996 警告 #include<iostream>…

8月echarts记录-雷达图tooltip实现单轴显示、解决柱状/折线图点击非图表图形元素不会触发事件、多柱形图点击选中改变背景颜色等

8月echarts记录-雷达图tooltip实现单轴显示、解决柱状/折线图点击非图表图形元素不会触发事件、柱形图点击选中改变背景颜色等 雷达图tooltip实现单轴显示问题描述解决方案 解决柱状/折线图点击非图表图形元素不会触发事件问题描述解决方案1. 使用API convertFromPixel和getZr实…

Redis17-服务端优化

目录 持久化配置 慢查询 什么是慢查询 如何查看慢查询 命令及安全配置 内存配置 集群优化 持久化配置 Redis的持久化虽然可以保证数据安全&#xff0c;但也会带来很多额外的开销&#xff0c;因此持久化请遵循下列建议&#xff1a; 用来做缓存的Redis实例尽量不要开启持…

一文讲清三极管

说明 下图是一个NPN型的三极管 由于发射极正偏,发射极的多数载流子(无论是P的空穴还是N的自由电子)会不断扩散到基极,并不断从电源补充多子,形成发射极电流IE。由于基极很薄,且基极的多子浓度很低,所以从发射极扩散过来的多子只有很少一部分和基极的多子复合形成基极电…

进程waitwaitpid、线程

一、wait wait功能 1、获取子进程退出状态&#xff0c;分析子进程是否已经退出&#xff08;变成僵尸态&#xff09; 2、回收资源&#xff0c;让僵尸态子进程销毁 wait本身是一个阻塞操作&#xff0c;会使调用者阻塞 2、宏&#xff1a; &#xff08;1&#xff09;WIFEXITE…

加密软件排行榜前五名,为你的数据安全保驾护航

加密软件成为了保护数据中不可缺少的一部分&#xff0c;这是一个重要的存在&#xff0c;能够保护机密文件&#xff0c;防止泄密。加密软件就是专门用于保护数据安全的&#xff0c;近年来多个加密软件的出现&#xff0c;使用户在挑选加密软件时多了一些选择&#xff0c;同时也成…

坐牢第二十五天20240813(网络通信)

一、TCP机械臂测试 通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 注意&#xff1a;关闭计算机的杀毒软件&#xff0c;电脑管家&#xff0c;防火墙 1&#x…

小阿轩yx-Docker Compose与私有仓库部署

小阿轩yx-Docker Compose 与私有仓库部署 Docker 的网络模式 Docker 四种网络模式 网络模式参数说明host 模式- - nethost 容器和宿主机共享 Network namespace container 模式- - net{id} 容器和另外一个容器共享 Network namespace。 kubernetes 中的pod就是多个容器共享一…

于博士Cadence视频教程学习笔记备忘

标签&#xff1a;PCB教程 PCB设计步骤 cadence教程 Allegro教程 以下是我学习该视频教程的笔记&#xff0c;记录下备忘&#xff0c;欢迎大家在此基础上完善&#xff0c;能回传我一份是最好了&#xff0c;先谢过。 备注&#xff1a; 1、未掌握即未进行操作 2、操作软件是15.…

论文阅读笔记:ST-MetaNet-2

目录 预备知识 定义1&#xff1a;城市交通 定义2&#xff1a;Geo-graph属性 问题1 方法 RNN 元学习器 元图注意力网络 元循环神经网络 预备知识 在本节中&#xff0c;我们介绍定义和问题陈述。为简洁起见&#xff0c;我们在表1中提供了一个注释表。 假设有个位置&…

40.【C语言】指针(重难点)(E)

目录 13.指针的使用和传址调用 14.数组名的理解 *数组名就是数组首元素的地址 *两个例外 *使用指针访问数组 *一维数组的传参本质 往期推荐 承接上篇39.【C语言】指针&#xff08;重难点&#xff09;&#xff08;D&#xff09; 13. 指针的使用和传址调用 见29.【C语言】函数系…

Android开发-使用FFmpeg-Android进行音视频处理

使用 FFmpeg-Android 进行音视频处理 1. 前言2. FFmpeg-Android 简介3. 功能介绍及实现3.1. 视频字幕添加Kotlin 代码示例&#xff1a;3.2. 尺寸剪切Kotlin 代码示例&#xff1a;3.3. 添加或去除水印Kotlin 代码示例&#xff1a;3.4. 时长截取Kotlin 代码示例&#xff1a;3.5. …