filebeat多实例运行,kibana组件的基本使用

filebeat多实例运行:
    1)需求
一台服务器上,需要运行多个filebeat实例

    2)启动filebeat实例1
cat > config/11-log_tcp-to-console.yaml <<EOF
filebeat.inputs:
- type: log
  paths:
    - /tmp/oldboyedu-linux82/*.log
  
  # 监听TCP的参数
- type: tcp
  # 监听的IP:port
  host: 0.0.0.0:8888

output.console:
  pretty: true
EOF
./filebeat -e -c config/11-log_tcp-to-console.yaml
    
    
    3)启动filebeat实例2
cat > config/10-es_error-to-es.yaml <<EOF
filebeat.inputs:
- type: log
  paths:
    - /oldboyedu/logs/es7/oldboyedu-linux82-es7.log
  multiline.type: pattern
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after
output.elasticsearch:
  hosts: 
  - "http://10.0.0.101:9200"
  - "http://10.0.0.102:9200"
  - "http://10.0.0.103:9200"
  index: "oldboyedu-linux82-es-error-%{+yyyy.MM.dd}" 
setup.ilm.enabled: false 
setup.template.name: "oldboyedu-linux82-es"
setup.template.pattern: "oldboyedu-linux82-es-*"
setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 0
EOF
./filebeat -c config/10-es_error-to-es.yaml --path.data /tmp/oldboyedu-linux82-filebeat-data --path.logs /tmp/oldboyedu-linux82-filebeat-logs

Q1: 写多个输入端使用一个filebeat和启动多个filebeat实例哪种方案更好?请说明原因?
    
    方案一: 写多个输入端使用一个filebeat
        优点:
            1)启动一个filebeat实例即可;
            2)配置需要配置一个即可;
            3)当业务不是特别复杂时,维护起来相对来说比较方便;
            
        缺点:
            1)有特定要求,输出端只有一个;
            2)维护起来耦合性较强,当多个input类型,有任何一个需要修改时,需要停止整个服务,尽管其他的input类型不需要修改,影响较大;
            3)当配置文件参数较多时,可读性较差,拍错成功也增长了;
            
        
    方案二: 启动多个filebeat实例
        优点:
            1)方便指定多个输出类型,可以定制化;
            2)没有太强的耦合性,如果某个业务需要修改,仅需要修改对应的filebeat实例的配置文件即可,其他filebeat实例并不会受到影响;
            3)当配置较多时,后期维护也非常方便;
            
        缺点:
            1)需要运维人员维护多份配置文件;
            2)需要启动多个filebeat实例;
            
            

cat > config/12-tcp_http-to-console.yaml <<EOF
filebeat.inputs:
- type: tcp
  host: 0.0.0.0:8888

  # 对应的是一个http协议的输入端。 
- type: http_endpoint
  # 监听地址
  listen_address: 0.0.0.0
  # 监听的端口
  listen_port: 8080
  # 响应状态码
  response_code: 222
  # 响应消息
  response_body: '{"message": "oldboyedu linux82 success"}'
  # 客户端请求路径
  url: "/linux82"
  # 顶级字段接受消息的前缀名称
  prefix: "oldboyedu-linux82-json"

output.console:
  pretty: true
EOF


filestream和log类型的区别:
    1)配置JSON解析格式字段有区别
cat > config/13-filestream-to-console.yaml <<EOF
filebeat.inputs:
  # 指定类型是一个文件流
- type: filestream
  # 指定文件的路径
  paths:
    - /var/log/nginx/access.log
  # 配置解析器
  parsers:
    # 配置JSON格式解析的
  - ndjson:
      # 指定解析JSON格式的数据存储路径的KEY,若不指定,则将解析后的结果存放在顶级字段。
      target: ""

output.console:
  pretty: true
EOF


    2)多行匹配问题
cat > config/14-filestream-to-console.yaml <<EOF
filebeat.inputs:
- type: filestream
  paths:
    - /oldboyedu/logs/es7/oldboyedu-linux82-es7.log
  parsers:
    # 配置多行匹配
  - multiline:
      type: pattern
      pattern: '^\['
      negate: true
      match: after


output.elasticsearch:
  hosts: 
  - "http://10.0.0.101:9200"
  - "http://10.0.0.102:9200"
  - "http://10.0.0.103:9200"
  index: "oldboyedu-linux82-es-error-%{+yyyy.MM.dd}" 

setup.ilm.enabled: false 
setup.template.name: "oldboyedu-linux82-es"
setup.template.pattern: "oldboyedu-linux82-es-*"
setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 0
EOF


filebeat的模块使用:
    1)模块的基本管理
./filebeat modules enable nginx tomcat mysql
    启用模块
./filebeat modules list
    查看模块列表
./filebeat modules disable tomcat mysql
    禁用模块
    
    
    2)模块的管理的底层原理
mv modules.d/{tomcat.yml.disabled,tomcat.yml}
mv modules.d/{mysql.yml.disabled,mysql.yml}
    启用tomcat和mysql模块。
    
mv modules.d/{mysql.yml,mysql.yml.disabled}
mv modules.d/{tomcat.yml,tomcat.yml.disabled}
    禁用tomcat和mysql模块。


    3)修改nginx模块的配置文件
cat > modules.d/nginx.yml <<EOF
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]
  ingress_controller:
    enabled: false
EOF
    
    4)使用nginx模块测试
cat > config/15-modules-to-console.yaml <<EOF
# 启动模块,若启用了模块,则可以不指定input类型
filebeat.config.modules:
  # 指定模块的配置文件路径,"${path.config}"是filebeat的内置变量,表示filebeat安装目录。
  path: ${path.config}/modules.d/*.yml
  # 是否支持热加载
  reload.enabled: true

output.elasticsearch:
  hosts: 
  - "http://10.0.0.101:9200"
  - "http://10.0.0.102:9200"
  - "http://10.0.0.103:9200"
  index: "oldboyedu-linux82-nginx-access-%{+yyyy.MM.dd}" 

setup.ilm.enabled: false 
setup.template.name: "oldboyedu-linux82-nginx"
setup.template.pattern: "oldboyedu-linux82-nginx-access-*"
setup.template.settings:
  index.number_of_shards: 3
  index.number_of_replicas: 0
EOF


    5)请说一下Modules工作原理
1.启动filebeat实例;
2.读取配置文件,找Input|modules,output 
    若没有指定input,则必须配置modules,找到启用的modules文件后读取相关的配置文件。从而找到需要watch的文件。
3.模块的作用不仅仅是指定input的文件位置,而且还会源源数据进行解析为JSON格式哟,只不过这个解析方式是官方指定的,我们去修改这种格式定义就不太方便啦;

    
    温馨提示:
        (1)实际工作中,很多运维小伙伴都会直接使用input,因为input可以定制化源日志格式;
        (2)官方的modules支持的中间件服务类型是有限的,在实际工作中,可能有的中间件或者你们公司开发的闭源产品日志可能需要你手动配置;

filebeat输入端通用字段:
    enabled: 
        表示是否启用当前的input类型,若不设置,则默认值为true。
        
    tags:
        filebeat给每条消息打标记。
        
    fields:
        为消息添加自定义字段
        
    fields_under_root:
        若指定为true,则将自定义字段放在消息的顶级字段中
        若不指定,则默认值为false,会将自定义字段放在一个"fields"字段下哟~
        
    processors:
        自定义处理器,可以根据用户需求,来对input数据源进行处理分析。
        推荐阅读:
            https://www.elastic.co/guide/en/beats/filebeat/7.17/defining-processors.html
            https://www.elastic.co/guide/en/beats/filebeat/7.17/defining-processors.html#processors
        
参考案例:
cat > config/16-input_common_options-to-console.yaml <<EOF
filebeat.inputs:
- type: tcp
  host: 0.0.0.0:8888
  # 是否启用该类型,默认值为true。
  enabled: false
  # 给当前类型打tag
  tags: ["oldboyedu-linux82-tcp","oldboyedu-elk","oldboyedu-linux"]
  # 为消息添加自定义字段
  fields:
    school: oldboyedu
    class: linux82
  # 若指定为true,则将自定义字段放在消息的顶级字段中
  # 若不指定,则默认值为false,会将自定义字段放在一个"fields"字段下哟~
  fields_under_root: true
  # 自定义处理器,可以对数据进行处理
  # processors:
  #     # 删除事件(event)
  #   - drop_event:
  #       # when语句表示当满足某个条件执行相应的动作
  #       when:
  #         # 匹配正则表达式
  #         regexp:
  #           # 要求message字段包含以"INFO:"开头的时间,直接删除时间!
  #           message: "^INFO:"
  #

- type: log
  enabled: true
  paths:
  - /tmp/oldboyedu-linux82/*
  # 自定义处理器,删除包含"info:"所有事件。
  processors:
    - drop_event:
        when:
          contains:
            message: "info:" 


output.console:
  pretty: true
EOF
    


filebeat收集docker日志:
    1)安装docker环境
tar xf oldboyedu-docker-ce-20_10_17.tar.gz 
cd docker-ce-20_10_17/ && yum -y localinstall *.rpm
    
    2)添加自动补全功能
source /usr/share/bash-completion/bash_completion

    3)配置镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://tuv7rqqq.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

    4)加载nginx镜像
docker load -i oldboyedu-nginx_1-20-1.tar.gz


    5)启动nginx容器
docker run -dp 88:80 --name oldboyedu-linux82-nginx  nginx:1.20.1  # 启动容器
docker logs -f oldboyedu-linux82-nginx   # 查看日志

    6)使用filebeat收集docker日志案例一,7.2版本已废弃,不推荐使用。
cat > config/17-docker-to-console.yaml  <<EOF
filebeat.inputs:
  # 数据源的类型为docker
- type: docker
  # 指定docker容器的ID,可以匹配所有的容器ID,也可以指定容器ID进行匹配
  containers.ids: 
    - '*'

output.console:
  pretty: true
EOF


    7)使用filebeat收集docker日志案例二,推荐使用。
cat > config/18-container-to-console.yaml <<EOF
filebeat.inputs:
  # 数据源的类型为container
- type: container
  # 指定容器日志的路径
  paths: 
    - '/var/lib/docker/containers/*/*.log' 
  # 指定收集的日志类型,合法的参数为: all,stdout,stderr
  stream: stdout

output.console:
  pretty: true
EOF


kibana组件的基本使用:
    (1)安装kibana
yum -y localinstall kibana-7.17.5-x86_64.rpm

    (2)修改kibana的配置文件
vim /etc/kibana/kibana.yml 
...
# kibana的监听端口
server.port: 5601
# kibana的服务器IP
server.host: "0.0.0.0"
# kibana服务器的名称,可以自定义
server.name: "oldboyedu-linux82-kibana"
# 指定ES集群的地址
elasticsearch.hosts: ["http://10.0.0.101:9200","http://10.0.0.102:9200","http://10.0.0.103:9200"]
# kibana支持的语言
i18n.locale: "zh-CN"

    (3)启动kibana服务
systemctl start kibana


    (4)查看kibana的端口号
ss -ntl | grep 5601


    (5)访问kibana的WebUI
http://10.0.0.101:5601/


    (6)添加官方样例图
见视频。

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

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

相关文章

centos 安装docker

1.更新你的系统: sudo yum update -y2.安装必需的软件包: Docker 需要 yum-utils, device-mapper-persistent-data 和 lvm2 软件包来运行。安装它们&#xff1a; sudo yum install -y yum-utils device-mapper-persistent-data lvm23.设置 Docker 的仓库: 使用以下命令添加 D…

关于Redis,你需要学习了解的知识

关于 Redis &#xff0c;涵盖多个方面&#xff0c;从基础概念到高级应用&#xff0c;以及最佳实践等。比如以下内容&#xff1a; 认识 Redis&#xff1a; Redis 是什么&#xff1f;它的特点和优势是什么&#xff1f;Redis 的数据结构&#xff1a;字符串、哈希、列表、集合、有序…

Kafka的下载安装以及使用

一、Kafka下载 下载地址&#xff1a;https://kafka.apache.org/downloads 二、Kafka安装 因为选择下载的是 .zip 文件&#xff0c;直接跳过安装&#xff0c;一步到位。 选择在任一磁盘创建空文件夹&#xff08;不要使用中文路径&#xff09;&#xff0c;解压之后把文件夹内容…

Redis 持久化

一、RDB 1.1 RDB持久化流程 fork子进程是阻塞的&#xff0c;如果同时开启RDB和AOF&#xff0c;默认使用AOF。 1、Redis父进程首先判断: 当前是否在执行save&#xff0c;或bgsave/bgrewriteaof (aof文件重写命令)的子进程&#xff0c;如果在执行则bgsave命令直接返回。 2、父进…

剑指offer专题2:队列和栈

用两个栈模拟队列 class CQueue {stack<int> stack1;stack<int> stack2; public:CQueue() {}void appendTail(int value) {stack1.push(value);}int deleteHead() {int val-1;if(!stack2.empty()){val stack2.top();stack2.pop();}else if(!stack1.empty()){while…

【左神算法刷题班】第18节:汉诺塔问题、岛屿问题、最大路径和问题

第18节 题目1&#xff1a;汉诺塔问题&#xff08;变体&#xff09; 体系学习班18节有讲暴力递归的汉诺塔原题。 给定一个数组arr&#xff0c;长度为N&#xff0c;arr中的值只有1&#xff0c;2&#xff0c;3三种 arr[i] 1&#xff0c;代表汉诺塔问题中&#xff0c;从上往下第…

Terraform 系列-批量创建资源时如何根据某个字段判断是否创建

系列文章 Terraform 系列文章Grafana 系列文章 概述 前文 Grafana 系列 - Grafana Terraform Provider 基础 介绍了使用 Grafana Terraform Provider 创建 Datasource. 这几天碰到这么一个现实需求&#xff1a; 使用 Terraform 批量创建日志数据源时, 有的数据源类型是 El…

MongoDB 数据库详细介绍

MongoDB 数据库详细介绍 MongoDB&#xff08;来自“Humongous”&#xff0c;意为巨大的&#xff09;是一个开源、高性能、无模式&#xff08;NoSQL&#xff09;、文档导向的分布式数据库。它以其灵活性、可扩展性和强大的查询功能而闻名于世。MongoDB 使用 JSON 格式的文档来存…

主从同步介绍、主从同步原理、主从同步结构、构建思路、配置一主一从、配置一主多从、读写分离介绍、工作原理、配置mycat服务、添加数据源、创建集群、指定主机角

Top NSD DBA DAY07 案例1&#xff1a;MySQL一主一从案例2&#xff1a;配置一主多从结构案例3&#xff1a;数据读写分离 1 案例1&#xff1a;MySQL一主一从 1.1 问题 数据库服务器192.168.88.53配置为主数据库服务器数据库服务器192.168.88.54配置为从数据库服务器客户端192…

网络编程(8.14)TCP并发服务器模型

作业&#xff1a; 1. 多线程中的newfd&#xff0c;能否修改成全局&#xff0c;不行&#xff0c;为什么&#xff1f; 2. 多线程中分支线程的newfd能否不另存&#xff0c;直接用指针间接访问主线程中的newfd,不行&#xff0c;为什么&#xff1f; 多线程并发服务器模型原代码&…

排查docker无法启动问题

查看Linux系统操作日志(最后200行就可以排查)&#xff1a; tail -200f /var/log/messages

数据分析--帆软报表--大数据大屏

进入国企公司学习有一段时间了&#xff0c;岗位是数据分析方向------ 母前使用的是帆软工具进行的开发。 可以进行大数据大屏 也可使嵌入到手机端。 下面是例子

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取

Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 Python-OpenCV中的图像处理-GrabCut算法交互式前景提取 cv2.grabCut(img: Mat, mask: typing.Optional[Mat], rect, bgdModel, fgdModel, iterCount, mode…) img…

数据库连接池

什么是数据库连接池 使用数据库连接池的好处是减少了连接的创建和关闭的开销&#xff0c;提高了数据库访问的性能和效率。 为什么我们要使用数据库连接池 我们使用数据库连接池的主要原因是为了提高应用程序访问数据库的性能和效率。使用数据库连接池的好处: 连接重用&…

【Apple】Logic Pro导入7.1.4.wav并自动分析多声道

Step1: 创建空项目 Step2: 选中下图“使用麦克风或...”这一项&#xff0c;底下要创建的轨道数填1就行。 点击创建之后&#xff1a; Step3: 拖动文件、拖动文件、拖动文件到项目中&#xff0c;并选中复选框“所有所选文件都源自一个项目&#xff08;将创建一个智能速度多轨道集…

[NLP]LLM 训练时GPU显存耗用量估计

以LLM中最常见的Adam fp16混合精度训练为例&#xff0c;分析其显存占用有以下四个部分&#xff1a; GPT-2含有1.5B个参数&#xff0c;如果用fp16格式&#xff0c;只需要1.5G*2Byte3GB显存, 但是模型状态实际上需要耗费1.5B*1624GB. 比如说有一个模型参数量是1M&#xff0c;在…

什么是前端框架?怎么学习? - 易智编译EaseEditing

前端框架是一种用于开发Web应用程序界面的工具集合&#xff0c;它提供了一系列预定义的代码和结构&#xff0c;以简化开发过程并提高效率。 前端框架通常包括HTML、CSS和JavaScript的库和工具&#xff0c;用于构建交互式、动态和响应式的用户界面。 学习前端框架可以让您更高效…

nginx的负载均衡

nginx的负载均衡 文章目录 nginx的负载均衡1.以多台虚拟机作服务器1.1 在不同的虚拟机上安装httpd服务1.2 在不同虚拟机所构建的服务端的默认路径下创建不同标识的文件1.3 使用windows本机的浏览器分别访问3台服务器的地址 2.在新的一台虚拟机上配置nginx实现反向代理以及负载均…

使用element UI 的el-upload上传图片并携带参数的用法

直接看代码&#xff1a;前端实现 <div class"upload"><el-uploadclass"upload-demo"name"upload_name":data"{user_name:user_name}"action"http://localhost:8000/api/deal_pest_Image":show-file-list"fal…

vb+sql汽车配件管理系统设计与实现

摘 要 目前汽车配件销售企业大多数在其连锁店的管理还是手工进行,随着汽车配件行业的迅速发展,手工管理的种种弊端暴露无疑,给销售企业的发展带来了不必要的麻烦。为了规范企业内部管理,提高企业业务管理水平,更好的为客户服务,应采用计算机来管理汽车配件的进销存业务。…