asp 网站管理系统青岛网站快速排名优化
2026/6/11 7:52:44 网站建设 项目流程
asp 网站管理系统,青岛网站快速排名优化,营销型网站的域名,在线制作网站的工具Filebeat原理与安装 参考#xff1a;官网#xff0c;文档配置 一、Filebeat 原理 Filebeat 是 Elastic 生态轻量级日志采集器#xff0c;主打轻量、低资源占用、高可靠#xff0c;专为无 Java 环境的服务器设计#xff0c;可将日志转发至 Logstash/Elasticsearch/Redis…Filebeat原理与安装参考官网文档配置一、Filebeat 原理Filebeat 是 Elastic 生态轻量级日志采集器主打轻量、低资源占用、高可靠专为无 Java 环境的服务器设计可将日志转发至 Logstash/Elasticsearch/Redis/Kafka 等组件适配容器、系统日志、应用日志等多场景采集需求其工作原理可拆解为 4 个核心环节核心组件组件作用Prospectors勘探器监控指定路径的日志文件支持通配符 / 递归采集检测文件新增、轮转、删除Harvesters收割机单个文件的实际读取进程记录文件偏移量offset逐行读取日志内容Registry注册表本地持久化文件默认路径/var/lib/filebeat/registry记录每个文件的读取偏移量、inode 等信息重启后可续传避免重复采集Output输出器将采集的日志转发至 ES/Kafka/Redis/Logstash 等支持负载均衡、压缩、重试机制工作流程Prospectors 扫描指定路径为每个日志文件启动独立 HarvesterHarvester 逐行读取日志将数据写入内存队列默认 2048 条输出器从内存队列批量读取数据按配置转发至目标端成功发送后Registry 更新文件偏移量若发送失败Filebeat 自动重试默认重试 3 次可配置确保数据不丢失日志文件轮转 / 重命名时Prospectors 基于 inode 识别文件保证采集不中断。核心特性轻量无依赖仅需 Go 编译的二进制文件无 Java 环境内存占用通常 50MB断点续传基于 Registry 文件记录偏移量重启 / 崩溃后可从断点继续采集自动发现支持容器Docker/K8s、系统日志等自动发现采集目标低延迟内存队列 批量发送兼顾性能与实时性数据增强内置 processors 可添加主机 / 容器 / K8s 元数据便于日志溯源。一句话总结通过 Filebeat 依据 filebeat.input 配置按文件类型采集日志文件对不同类型文件分类读取处理后将数据输出至 Elasticsearch、Redis、Kafka 等后端存储最终在 Kibana 中实现数据的可视化展示与分析。二、Filebeat 安装环境准备系统CentOS 7/8、Ubuntu 18.04权限root 或 sudo 权限网络可访问目标输出端如 ES/Kafka或本地下载安装包2.1、安装手动安装下载解压wgethttps://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.18.8-linux-x86_64.tar.gztarxf filebeat-8.18.8-linux-x86_64.tar.gzmvfilebeat-8.18.8-linux-x86_64 filebeatmkdir/opt/filebeat/{data,log}权限说明chmod777filebeat -Rchmod755/opt/filebeatchmod755/opt/filebeat/filebeatchmod600/opt/filebeat/filebeat.yml# -- 不配成600启动会异常chmod755/opt/filebeat/logchmod700/opt/filebeat/data自启脚本cat/etc/systemd/system/filebeat.serviceEOF [Unit] DescriptionFilebeat Service Afternetwork.target [Service] Typesimple Userroot ExecStart/opt/filebeat/filebeat -c /opt/filebeat/filebeat.yml --path.home /opt/filebeat --path.data /opt/filebeat/data --path.logs /opt/filebeat/logs Restarton-failure RestartSec5 [Install] WantedBymulti-user.target EOF启动# 1. 先手动验证 Filebeat 配置关键确保无语法/权限错误/opt/filebeat/filebeattestconfig -c /opt/filebeat/filebeat.yml# 输出 Config OK 则配置无问题# 2. 重载 systemd 配置systemctl daemon-reload# 3. 停止旧进程启动服务systemctl stop filebeat systemctl start filebeat# 4. 查看服务状态systemctl status filebeat2.2、默认配置默认配置说明vim /opt/filebeat/filebeat.yml# 日志输入配置核心filebeat.inputs: - type: filestream# 7.16 推荐类型替代原 log 类型id: my-filestream-id# 唯一标识便于管理多输入源enabled:false# 默认为关闭启用需改为 truepaths:# 日志路径支持通配符- /var/log/*.log# 扩展配置常用encoding: utf-8# 编码格式默认 utf-8exclude_lines:[^DBG]# 过滤以 DBG 开头的行include_lines:[^ERR|^WARN]# 仅保留 ERR/WARN 开头的行exclude_files:[\.gz$]# 过滤 .gz 压缩文件recursive_glob.enabled:true# 开启子目录递归采集最大 8 级# 模块配置系统/nginx 等预制采集规则filebeat.config.modules: path:${path.config}/modules.d/*.yml reload.enabled:false# 生产建议关闭自动重载# ES 索引模板配置setup.template.settings: index.number_of_shards:1# 分片数生产建议 3-5根据数据量调整# Kibana 关联可视化用setup.kibana:# hosts: [kibana:5601] # 启用时填写 Kibana 地址# 输出目标配置按需选择output.elasticsearch: hosts:[localhost:9200]# ES 集群地址多节点用逗号分隔preset: balanced# 负载均衡策略# 数据增强处理器processors: - add_host_metadata:# 添加主机元数据IP/主机名等when.not.contains.tags: forwarded - add_cloud_metadata: ~# 云环境元数据AWS/Azure 等- add_docker_metadata: ~# Docker 容器元数据- add_kubernetes_metadata: ~# K8s 集群元数据关键配置说明类型适用场景备注filestream通用文件采集7.16 推荐替代 log 类型性能更优container容器日志采集适配 Docker/K8s 容器日志syslog系统日志标准 syslog 协议采集stdin标准输入测试场景用tcp/udp网络日志采集 TCP/UDP 传输的日志winlogWindows 日志仅 Windows 环境支持文件采集高级配置filebeat.inputs: - type: filestream paths: - /var/log/app/*.log encoding: gbk# 适配中文日志如 Windows 生成的 gbk 编码文件exclude_lines:[^DBG]# 过滤调试日志include_lines:[sometext]# 仅保留含指定文本的行recursive_glob.enabled:true# 递归采集子目录日志2.3、参数说明filebeat.inputstype 所支持的类型参数Azure Event Hub Container 容器 Kafka Log(deprecatedin7.16.0, use filestream)Log(已弃用于7.16.0请使用 filestream)MQTT Redis Stdin(标准输入)Streaming Syslog(系统日志)TCP UDP Unified Logs(统一日志)Unix winlog(Windows 日志)input.file官方参数说明参数paths 文件路径 可以使用 recursive_glob.enabled 开启深度 recursive_glob.enabled 开启文件深度查询 单个8级 encoding 支持编码 普通latin1utf-8utf-16be-bomutf-16beutf-16lebig5gb18030gbkhz-gb-2312euc-kreuc-jpiso-2022-jpshift-jis exclude_lines 删除匹配的行 如 exclude_lines[^ DBG]删除以DEG开头的任意行 include_lines 需要匹配的行 如 include_lines[^ ERR^ WARN]导出以ERR或开头的任何行WARN 如 导出所有包含的日志行sometext但以DBG调试消息开头的行 include_lines[sometext]exclude_lines[^ DBG]exclude_files 过滤指定的文件 如 exclude_files[\ .gz $]# 过滤任何以.gz的文件三、实战使用示例3.1、控制台输出配置文件# 配置文件test-console.ymlfilebeat.inputs: - type: stdin enabled:trueoutput.console:# 格式化输出便于阅读pretty:true# 如果是指定配置文件使用前 先将systemctl stop filebeatfilebeat -e -c test-console.yml# -e 表示输出到标准错误控制台测试# 控制台随便搞条日志2025-12-1517:19:43.517[main]WARN[166]- No MyBatis mapper was foundin[com.yyy.zzz.qqq.qqq]package. Please check your configuration.# 会按照格式直接原模原样打印出来{message:2025-12-15 17:19:43.517 [main] WARN [166] - No MyBatis mapper was found in [com.yyy.zzz.qqq.qqq] package. Please check your configuration.,input:{type:stdin},}3.2、文件输出配置文件 - 输出到控制台catfileout-filebeat.yml filebeat.inputs: - type: filestream enabled:truepaths: - /var/log/messages exclude_lines:[^DEBUG|^DBG]exclude_lines:[\.gz$]#output.console:# pretty: trueoutput.file: path:/tmp/filebeat# 日志存储目录需提前创建filename: filebeat.log# 文件名rotate_every_kb:10240# 每 10MB 轮转一次扩展配置number_of_files:5# 保留 5 个轮转文件扩展配置测试filebeat]# ./filebeat -e -c fileout-filebeat.yml# 会输出成一个文件ls/tmp/filebeat/ messages.log-20251215.ndjson3.3、重置日志读取偏移量修改registry文件# 编辑 Registry 文件 是 --path.data /opt/filebeat/datacd/opt/filebeat/data/registry/filebeatvimlog.json# 找到目标文件的记录比如 messages它会有很多行直接拉到最下面{k:filestream::.global::native::73025661-64768,v:{ttl:-1,updated:[2062166666919,1765788708],cursor:{offset:327021},meta:{source:/var/log/messages,identifier_name:native}}}字段含义k唯一标识符格式为filestream::.global::native::inode-设备号你的环境中 inode 是 73025661设备号 64768v.cursor.offset文件读取偏移量核心修改字段v.meta.source日志文件路径用于定位目标文件op操作类型set 更新记录无需修改修改offset将cursor:{offset:327021} 改为 cursor:{offset:0}3.4、输出到es配置文件[rootnode1 filebeat]# cat filebeat.ymlfilebeat.inputs: - type: filestream enabled:truepaths: - /root/tmplog/*.log fields: type:tp-logfields_under_root:true# 关键将 fields 下的字段提升到根层级- type: filestream enabled:truepaths: - /var/log/*.log fields: type:syslogfields_under_root:true# 关键将 fields 下的字段提升到根层级如果不提升的话 下面分组获取不到 when.equalssetup.kibana: host:10.4.50.130:5601#space.id:output.elasticsearch:#hosts: [localhost:9200]hosts:[10.4.50.130:9200,10.4.50.139:9200,10.4.50.167:9200]protocol:httpusername:elasticpassword:Elastic123456indices: - index:filebeat-tp-log# 基础别名无日期when.equals:# fields:type: tp-logtype:tp-log# 匹配fileds的就给它放到filebeat-tp-log索引中- index:filebeat-sys-logwhen.equals: type:syslog- index:filebeat-other-logwhen.not.equals:# 这里是不匹配就给它放到 other-log下面type:[tp-log,syslog]bulk_max_size:200timeout: 30s max_retries:5验证systemctl restart filebeatcurl-u elastic:密码 http://10.4.50.130:9200/_cat/indices greenopen.ds-filebeat-sys-log-2025.12.16-000001 D8qdwGHNSeCWLXQCH_YSDQ318980848.4kb459.8kb459.8kb greenopen.ds-filebeat-tp-log-2025.12.16-000001 ewJn2uSkScqZq4g_EnsvtQ318976240291.4mb145.2mb145.2mb3.5、输出到kafka编写 Filebeat 配置cat/etc/filebeat/filebeat.ymlEOF filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log # Nginx 访问日志 - /var/log/nginx/error.log # Nginx 错误日志 # 自定义字段便于后续 Logstash/ES 过滤 fields: service: nginx env: prod ip: 192.168.9.32 # 字符编码适配中文日志 encoding: utf-8 # 仅保留错误日志中的 ERROR/WARN 行 include_lines: [^ERROR|^WARN] # 禁用默认模块避免干扰 filebeat.config.modules: path:${path.config}/modules.d/*.yml reload.enabled: false # 输出到 Kafka output.kafka: hosts: [192.168.9.31:9092, 192.168.9.32:9092] # Kafka 集群地址 topic: nginx-logs-prod # 自定义 Kafka 主题 partition.round_robin: reachable_only: true # 仅发送到可达的分区 required_acks: 1 # 主分区确认后即认为发送成功 compression: gzip # 启用 gzip 压缩减少网络传输 compression_level: 4 # 压缩级别1最快9最优 max_message_bytes: 1048576 # 单消息最大 1MB # 数据增强添加主机元数据 processors: - add_host_metadata: ~ - add_cloud_metadata: ~ EOF验证配置并重启# 验证配置语法filebeattestconfig -c /etc/filebeat/filebeat.yml# 重启 Filebeatsystemctl restart filebeat# 查看运行状态systemctl status filebeat验证 Kafka 数据# 进入 Kafka 安装目录消费主题数据cd/usr/local/kafka/bin ./kafka-console-consumer.sh --bootstrap-server192.168.9.31:9092 --topic nginx-logs-prod --from-beginning四、参数说明4.1、索引匹配索引匹配1# 如果直接用filelds需要将它提到root级别- type: log# 或- type: filestream fields: type:tp-logfields_under_root:trueoutput.elasticsearch: indices: - index:filebeat-tp-logwhen.equals: type:tp-log# 不匹配时会加到这个索引中- index:filebeat-other-logwhen.not.equals: type:[tp-log,syslog]索引匹配2# 匹配生成索引scan_frequency: 5s tags:[thedd]encoding: utf-8 output.elasticsearch: indices: - index:filebeat-tp-logwhen.equals:# --用这种方式也行type:thedd- index:filebeat-theddddwhen.contains: tags:thedd收集debug日志logging: level: debug to_files:truefiles: path: /var/log/filebeat name: filebeat-8188.log keepfiles:1permissions: 0644 selectors:[filestream,multiline,publish][rootnode1 filebeat]# tail -f /var/log/filebeat/filebeat-8188.log-20251219-20.ndjson{log.level:info,timestamp:2025-12-19T18:02:52.8820800,log.origin:{function:github.com/elastic/beats/v7/libbeat/cmd/instance.(*Beat).launch,file.name:instance/beat.go,file.line:782},message:filebeat stopped.,service.name:filebeat,ecs.version:1.6.0}4.2、Multiline4.2.1、参数说明核心组合对照表组合negate match核心规则以 pattern 为基准合并方向true after当前行匹配 pattern → 触发合并当前行不匹配 → 作为新日志起始行匹配到 pattern 的行是主行其他行都跟在主行后面false after当前行不匹配 pattern → 触发合并当前行匹配 → 作为新日志起始行没匹配到 pattern 的行是主行匹配到的行跟在主行后面true before当前行匹配 pattern → 触发合并当前行不匹配 → 作为新日志起始行几乎不用日志顺序乱时才用false before当前行不匹配 pattern → 触发合并当前行匹配 → 作为新日志起始行几乎不用日志顺序乱时才用示例一negate: false match: after配置filebeat.inputs: - type: filestream enabled:truepaths: - /var/log/app/error.log# 匹配以YYYY-MM-DD日期开头的日志行适配业务日志格式multiline.pattern: ^\d{4}-\d{2}-\d{2}# 匹配日期开头的行multiline.negate:falsemultiline.match: after multiline.max_lines:1000# 限制最大合并行数防止内存溢出multiline.timeout: 5s# 超时未匹配则强制结束合并效果2025-12-16 00:01:04.123[main]WARN[123]-testwarn log some warn detail another warn line# 合并后变成1条日志2025-12-16 00:01:04.123[main]WARN[123]-testwarn log some warn detail another warn line示例二negate: true match: after匹配异常配置filebeat.inputs: - type: filestream enabled:truepaths: - /var/log/app/all.log# 匹配以at开头的异常堆栈行适配DM数据库异常日志multiline.pattern: ^at# 匹配at开头的堆栈行multiline.negate:truemultiline.match: after multiline.timeout: 5s# 超时强制结束合并效果# 原始日志2025-12-16 00:01:03.052 ERROR - 网络通信异常 dm.jdbc.driver.DMException: 网络通信异常 at dm.jdbc.driver.DBError.throwException(...)# 合并后变成1条日志2025-12-16 00:01:03.052 ERROR - 网络通信异常 dm.jdbc.driver.DMException: 网络通信异常 at dm.jdbc.driver.DBError.throwException(...)其它两种几乎不用简单说只有日志行顺序完全反了比如先出堆栈、后出日期才用match: before效果是把乱序的日志还原成正常顺序日常不用管4.2.2、示例配置# Filebeat 核心输入配置 # 定义日志输入源的集合filebeat.inputs:# 注释掉filestream类型新版改用log类型旧版对多行日志兼容性更稳定#- type: filestream# 指定输入类型为log经典日志采集模式适配多行日志场景- type: log# 是否启用该输入源true启用false禁用enabled:true# 配置需要采集的日志文件路径支持通配符此处采集/root/tmplog目录下所有.log后缀的文件paths: - /root/tmplog/*.log# 可选自定义字段当前注释未启用用于后续ES索引路由/日志分类#fields:# type: tp-log#fields_under_root: true # 是否将自定义字段放到日志根节点而非fields子节点# 排除指定规则的日志行匹配年月日 时分秒.毫秒 [xxx] DEBUG/INFO开头的行只采集WARN/ERROR等重要日志exclude_lines:^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9] \[.*\] (DEBUG|INFO)# 多行日志合并配置 # 多行日志合并类型基于正则表达式匹配multiline.type: pattern# 匹配日志起始行的正则以YYYY-MM-DD HH:MM:SS.xxx开头的行日志的首行multiline.pattern: ^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}\.\d# 反转匹配规则true表示非匹配pattern的行即日志后续行需要合并multiline.negate:true# 合并方式after表示非匹配行合并到上一个匹配行日志首行之后multiline.match: after# 单个多行日志的最大行数限制防止超大日志撑爆内存超出则截断multiline.max_lines:500# 多行合并超时时间10秒内无新行则结束当前多行日志合并multiline.timeout: 10s# 文件生命周期配置 # 忽略超过72小时未修改的旧文件不再监控/读取需与clean_inactive配合ignore_older: 72h# 读取到文件末尾后关闭文件句柄适用于静态日志文件避免占用资源close_eof:true# 清理96小时未访问的文件注册表记录需大于ignore_older建议差值24hclean_inactive: 96h# 文件被删除后关闭对应的harvester进程并清理注册表close_removed:true# 文件被重命名后关闭旧文件句柄并重新监控新名称若匹配paths规则close_renamed:true# 基础采集配置 # 扫描日志文件的频率每5秒检查一次文件是否有新内容scan_frequency: 5s# 自定义标签用于后续ES索引路由匹配when.contains.tags: theddtags:[thedd]# 日志文件编码格式UTF-8适配中文日志避免乱码encoding: utf-8# 单个文件的最大harvester进程数1表示单进程读取避免并发读取冲突harvester_limit:1# 强制关闭文件句柄即使文件还在写入也按规则关闭避免句柄泄漏force_close_files:true# Kibana 配置 # 配置Kibana地址用于导入索引模板/可视化面板非必填但建议配置setup.kibana: host:10.4.50.130:5601# Kibana的IP端口# Elasticsearch 输出配置 output.elasticsearch:# ES集群节点地址列表多个节点用逗号分隔提高可用性#hosts: [localhost:9200] # 本地ES注释掉改用集群hosts:[10.4.50.130:9200,10.4.50.139:9200,10.4.50.167:9200]# 通信协议http若ES开启HTTPS则改为httpsprotocol:http# ES认证用户名需提前创建有写入权限的用户username:elastic# ES认证密码password:Elastic123456# 索引路由规则根据日志标签/字段分发到不同ES索引indices:# 当日志包含tags: thedd时写入filebeat-thedddd索引- index:filebeat-theddddwhen.contains: tags:thedd# 批量写入ES的最大条数200条/批平衡写入性能和内存bulk_max_size:200# ES请求超时时间30秒避免网络波动导致写入失败timeout: 30s# 写入失败后的最大重试次数5次重试后仍失败则丢弃max_retries:5说明#- type: filestream- type: log# 搞了一天 type换成log 多行日志才合并 也是无奈# 生成个日志cat/root/tmplog/test-8188.logEOF 2025-12-16 00:01:03.052 [Druid-ConnectionPool-Create-24293395] ERROR [2787] - create connection SQLException, url: jdbc:dm://127.0.0.1:5236/doshare?zeroDateTimeBehaviorconvertToNulluseUnicodetruecharacterEncodingUTF-8, errorCode 6001, state 08S01 dm.jdbc.driver.DMException: 网络通信异常 at dm.jdbc.driver.DBError.throwException(SourceFile:774) ~[DmJdbcDriver-18_8.1.3.26.jar!/:?] at dm.jdbc.a.a.init(SourceFile:152) ~[DmJdbcDriver-18_8.1.3.26.jar!/:?] 2025-12-16 00:01:04.123 [main] WARN [123] - test warn log some warn detail another warn line EOF先加数据视图在用analytics-discover查看看下章添加五、kibana添加索引左侧找到Manager进行添加操作按步骤加查看message六、其它补充6.1常见问题日志采集重复原因Registry 文件损坏 / 删除导致 Filebeat 从头读取解决恢复 Registry 备份或通过filebeat clean registry清理后重新采集需确认可重复。日志采集延迟原因内存队列过小、批量发送配置不合理解决增加队列大小queue.mem.events: 4096调整批量发送参数output.kafka.bulk_max_size: 500。配置验证失败排查命令filebeat test config -c /etc/filebeat/filebeat.yml根据报错修复语法如缩进、字段名错误。无日志输出检查 Filebeat 日志tail -f /var/log/filebeat/filebeat确认日志文件权限Filebeat 进程需有读取日志文件的权限建议添加 filebeat 用户到日志所属组确认路径正确性避免通配符错误如/var/log/*.log漏写星号。生产环境建议配置分层按业务拆分配置文件如 filebeat-nginx.yml、filebeat-app.yml便于管理监控告警监控 Filebeat 进程状态、Registry 目录大小、输出端ES/Kafka写入速率日志轮转配置 Filebeat 自身日志轮转/etc/logrotate.d/filebeat避免日志文件过大版本选择生产环境优先选择 6.8.x/7.17.xLTS 版本避免频繁升级安全加固ES/Kafka 开启认证Filebeat 配置加密传输SSL/TLS。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询