如何使用Zabbix监控日志文件?
参考:https://www.zabbix.com/documentation/3.4/manual/config/items/itemtypes/zabbix_agent#supported_item_keys
KEY | NAME |
---|---|
log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>] | Log file monitoring. Returns log |
log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>] | Count of matched lines in log file monitoring. Returns integer |
logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>] | Log file monitoring with log rotation support. Returns log |
logrt.count[file_regexp,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>] | Count of matched lines in log file monitoring with log rotation support. Returns integer |
log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]
描述
日志文件监控
返回值
Log
参数
file - 日志文件的全路径和文件名
regexp - 正则表达式
encoding - 编码。如果留空,UNIX/LINUX默认utf-8,Win默认ANSI。参考 identifier
maxlines - 每秒agent发送给server或proxy的最大新行数量。这个参数会覆盖在 zabbix_agentd.conf内配置的参数 'MaxLinesPerSecond' 的值。
mode - 可用值:
all (默认), skip - 跳过旧数据不处理 (仅影响新创建的items).
output - 可选的输出格式模板。 转义序列 \0会被替换为匹配的文本,转义序列 \N ( N=1…9) 会被替换为第N个匹配的组 (或者空字符串,如果N超过最大抓取组的数量)
maxdelay - 最大delay时间(秒)。 类型: float。
值: 0 - (默认) 从不忽略日志 ; > 0.0 - 忽略旧日志行,以在“maxdelay” 内获取最新的日志行分析并分析完毕。
参考 maxdelay
说明
这个监控项必须被配置为主动检查 active check.
如果文件不存在,或者权限不允许访问,监控项会显示 unsupported。
如果 output
留空 - 返回匹配的整行。注意,除 'Result is TRUE' 外的所有全局正则表达式总会返回整行, output
参数会被忽略。
在agent上,内容的提取发布使用 output
参数来进行。
Examples:
⇒ log[/var/log/syslog]
⇒ log[/var/log/syslog,error]
⇒ log[/home/zabbix/logs/logfile,,,100]
范例:使用
output
参数从日志记录提取一个数值:
log[/app1/app.log,"task run [0-9.]+ sec, processed ([0-9]+) records, [0-9]+ errors",,,,\1]
→ 将匹配一行日志记录"2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors"
,并且将仅发送数字 6080 给server。因为发送的是一个数值,那么监控项的 "Type of information" 可以从"Log" 变更为 "Numeric (unsigned)",这个值可以被用于图形展示,触发器等。
范例:使用
output
参数重写发给server的日志记录:
log[/app1/app.log,"([0-9 :-]+) task run ([0-9.]+) sec, processed ([0-9]+) records, ([0-9]+) errors",,,,"\1 RECORDS: \3, ERRORS: \4, DURATION: \2"]
→ 将会匹配一行日志记录"2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors "
,并且将修改日志记录为"2015-11-13 10:08:26 RECORDS: 6080, ERRORS: 0, DURATION: 6.08"
,然后发给server。
mode
参数支持始于 Zabbix 2.0.output
参数支持始于 Zabbix 2.2.maxdelay
参数支持始于 Zabbix 3.2.
更多文档请参见 log monitoring.
log.count[file,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>]
描述
统计日志监控匹配的行数
返回值
整数
参数
file - 日志文件的全路径和文件名
regexp - 正则表达式
encoding - 编码。如果留空,UNIX/LINUX默认utf-8,Win默认ANSI。参考 identifier
maxproclines - 每秒agent将分析的最大行数。默认值是 zabbix_agentd.conf中参数'MaxLinesPerSecond'的10倍。
mode - 可用值:
all (默认), skip - 跳过旧数据不处理 (仅影响新创建的 items)
maxdelay - 最大delay时间(秒)。类型: float。
值: 0 - (默认) 从不忽略日志 ; > 0.0 - 忽略旧日志行,以在“maxdelay” 内获取最新的日志行分析并分析完毕。
参考 maxdelay notes before using it!
说明
这个监控项必须被配置为主动检查 active check.
如果文件不存在,或者权限不允许访问,监控项会显示 unsupported。
更多文档请参见 log monitoring.
支持始于 Zabbix 3.2.0.
logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]
描述
日志监控(支持日志滚动)
返回值
日志
参数
| file_regexp - 日志文件的绝对路径&文件名的正则匹配。
regexp - 正则表达式
encoding - 编码。如果留空,UNIX/LINUX默认utf-8,Win默认ANSI。参考 identifier
maxlines - 每秒agent发送给server或proxy的最大新行数量。 这个参数会覆盖在 zabbix_agentd.conf内配置的参数 'MaxLinesPerSecond' 的值。
mode - 可用值:
all (默认), skip - 跳过旧数据不处理 (仅影响新创建的 items)。
output - 可选的输出格式模板。转义序列 \0会被替换为匹配的文本,转义序列 \N ( N=1…9) 会被替换为第N个匹配的组 (或者空字符串,如果N超过最大抓取组的数量)
maxdelay - 最大delay时间(秒)。 类型: float。
值: 0 - (默认) 从不忽略日志 ; > 0.0 - 忽略旧日志行,以在“maxdelay” 内获取最新的日志行分析并分析完毕。
参考 maxdelay notes before using it! |
说明
这个监控项必须被配置为主动检查 active check.
日志滚动(循环)基于文件的最后修改时间。
如果 output
留空 - 返回匹配的整行。注意,除 'Result is TRUE' 外的所有全局正则表达式总会返回整行, output
参数会被忽略。
在agent上,内容的提取发布使用 output
参数来进行。
Examples:
⇒ logrt["/home/zabbix/logs/^logfile[0-9]{1,3}$",,,100] → will match a file like "logfile1" (will not match ".logfile1")
⇒ logrt["/home/user/^logfile_.*_[0-9]{1,3}$","pattern_to_match","UTF-8",100] → will collect data from files such "logfile_abc_1" or "logfile__001".
范例:使用
output
参数从日志记录中提取一个数值:
logrt[/app1/^test.*log$,"task run [0-9.]+ sec, processed ([0-9]+) records, [0-9]+ errors",,,,\1]
→ 将匹配一行日志记录"2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors"
,并且仅发送数值 6080 给 server。 因为发送的是一个数值,那么监控项的 "Type of information" 可以从"Log" 变更为 "Numeric (unsigned)",这个值可以被用于图形展示,触发器等。
范例:使用
output
参数重写发给server的日志:
logrt[/app1/^test.*log$,"([0-9 :-]+) task run ([0-9.]+) sec, processed ([0-9]+) records, ([0-9]+) errors",,,,"\1 RECORDS: \3, ERRORS: \4, DURATION: \2"]
→ 将匹配一行日志 "2015-11-13 10:08:26 task run 6.08 sec, processed 6080 records, 0 errors " ,并且修改日志记录为 "2015-11-13 10:08:26 RECORDS: 6080, ERRORS: 0, DURATION: 6.08" ,然后发给 server。
mode
参数支持始于 Zabbix 2.0.output
参数支持始于 Zabbix 2.2.maxdelay
参数支持始于 Zabbix 3.2.
更多参见 log monitoring.
logrt.count[file_regexp,<regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>]
描述
统计匹配的日志数量(支持日志滚动)
返回值
整数
参数
file_regexp - 日志文件的绝对路径&文件名的正则匹配
regexp - 正则表达式
encoding - 编码。如果留空,UNIX/LINUX默认utf-8,Win默认ANSI。参考 identifier
maxproclines - 每秒agent将分析的最大行数。默认值是 zabbix_agentd.conf中参数'MaxLinesPerSecond'的10倍。
mode - 可用值:
all (默认), skip - 跳过旧数据不处理 (仅影响新创建的 items)
maxdelay - 最大delay时间(秒)。类型: float。
值: 0 - (默认) 从不忽略日志 ;> 0.0 -忽略旧日志行,以在“maxdelay” 内获取最新的日志行分析并分析完毕。
参考 maxdelay notes before using it!
说明
这个监控项必须被配置为主动检查 active check.
日志滚动(循环)基于文件的最后修改时间。
更多 log monitoring.
支持始于 Zabbix 3.2.0.
推荐阅读
-
如何使用 php 将文件转换为 mp3 格式
-
35 岁实现财务*,腾讯程序员手握2300万提前退休?-1000万房产、1000万腾讯股票、加上300万的现金,一共2300万的财产。有网友算了一笔账,假设1000万的房产用于自住,剩下1300万资产按照平均税后20-50万不等进行计算,大约花上26-60年左右的时间才能赚到这笔钱。也就是说,普通人可能奋斗一辈子,才能赚到这笔钱。在很多人还在为中年危机而惶惶不可终日的时候,有的人的35岁,就已经安全着陆,试问哪个打工人不羡慕?但问题是有这样财富积累必然有像样的实力做靠山。没有人可以不劳而获。 看到这里,肯定有人说,那么对于普通人来说,卷可能真就成了唯一的出路。但是卷也有轻松的卷,“偷懒”的卷法,对于程序员而言,刨除掉一时无法改掉的开会传统占用的大部分时间,如何把有限的时间和精力放在真正重要的架构设计、需求设计上,而不是重复的造*,编码、改bug、手动测试。因此在科技改变生活的今天,学会使用AI工具成为程序员们的必备技能。 以全栈式全自动的软件开发工具飞算SoFlu软件机器人为例,作为全球首款面向微服务架构设计和最佳实践的软件机器人,SoFlu软件机器人改变了原来手工编码的作业模式,通过可视化拖拽方式以及参数配置就能实现等同于编写复杂代码的业务逻辑,在设计业务逻辑时就完成了微服务应用开发,做到“业务即图,图即代码”,实现“软件开发,十倍提效”。 而作为飞算SoFlu软件机器人的一个重要组成部分,FuncGPT(慧函数)支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库。 FuncGPT(慧函数)具有五大核心能力: ● 自然语言:通过自然语言即可生成函数,降低软件开发门槛。 ● 秒级函数开发:全自动秒级开发函数,秒级完成,效率千倍提升。 ● 一站式函数开发应用:函数生成即可直接应用,效率、安全有保障。 ● 质量可靠:生成的函数代码符合业界规范、具备良好的可读性,符合最优解。 ● 灵活生成:可以根据开发人员的具体需求生成并支持调整和修改。 以“将文件流转换为File对象”这个需求为例,以下是FuncGPT(慧函数)秒级生成的代码: / 类名:FileConverter // 函数名:convertStreamToFile // 函数功能:将文件流转换为File对象 // POM依赖包:无 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileConverter { /** * 将文件流转换为File对象 * @param inputStream 文件流 * @param filePath 文件路径 * @param fileName 文件名 * @return 转换后的File对象 * @throws IOException 如果发生I/O异常 */ public static File convertStreamToFile(InputStream inputStream, String filePath, String fileName) throws IOException { File file = new File(filePath + File.separator + fileName); // 创建File对象 try (FileOutputStream outputStream = new FileOutputStream(file)) { // 创建文件输出流 byte buffer = new byte[1024]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { // 从文件流读取数据并写入文件 outputStream.write(buffer, 0, bytesRead); } } return file; // 返回转换后的File对象 } } // 函数示例 // 将文件流转换为File对象示例 // 入参:inputStream,文件流 // 入参:filePath,文件路径 // 入参:fileName,文件名 // 出参:file,转换后的File对象 // 调用示例: // InputStream inputStream = new FileInputStream("example.txt"); // String filePath = "C:\\Users\\User\\Documents"; // String fileName = "example.txt"; // File file = FileConverter.convertStreamToFile(inputStream, filePath, fileName); // System.out.println(file.getAbsolutePath); // 输出结果:例如,将文件流转换为File对象后,文件的绝对路径为:C:\Users\User\Documents\example.txt // 则输出结果为:C:\Users\User\Documents\example.txt 通过分析,不难发现以上代码:
-
如何使用 ffmpeg-python 轻松处理音频文件,进行格式转换、编辑和合并?
-
位、字节、WORD、DWORD 的区别和联系 - Unicode 和 ANSI 的区别就像输入法中 "全宽 "和 "半宽 "的区别一样。 由于不同的 ANSI 编码有不同的标准(不同的字符集),对于给定的多字节字符串,我们必须知道它使用的是哪种字符集,才能知道它包含哪些 "字符"。对于 UNICODE 字符串来说,无论环境如何,它所代表的 "字符 "内容始终是相同的。Unicode 有一个统一的标准,定义了世界上大多数字符的编码,因此拉丁文、数字、简体中文、繁体中文和日文都可以存储在一个编码中。统一码是一个统一的标准,定义了世界上大多数字符的编码。 比特(Bit)和字节(Byte)的区别:例如USB2.0 标准接口的传输速率为 480Mbps,有一些人误认为是每秒 480 兆比特,同样网络带宽为 2MB,就容易误认为是每秒 2 兆比特。其实,480Mbps 应该是 480 兆比特/秒或 480 兆字节/秒,它等于 "60 兆字节/秒";同样,2MB,应该是 256 兆字节/秒。 Bit 和 Byte 译为 "比特",都是数据计量单位,比特="位 "或 "比特"。 Byte = 字节,即 1byte = 8bits,两者的换算关系为 1:8。 Mbps = mega bits per second(兆位/秒)是速率单位,因此 2M 带宽应为 2 兆位/秒,即 2MBps。MB = 兆字节(Megabytes,兆字节)是单位量,1MB/S(兆字节/秒)= 8MBPS(兆字节/秒)。 通常所说的硬盘容量是指 40GB、80GB、100GB,其中的 B 是指 Byte 也称为 "字节"。 1 KB=1024 字节 1 MB=1024 KB=1024*1024 字节 1 GB=1024 MB=1024*1024*1024 字节 例如,以前所谓的 56KB MODEM 转换过来的 56KBps 除以 8 就是 7Kbyte,所以真正从网上下载文件存在硬盘上的速度也是每秒 7Kbyte;也就是说,用 B 表示传输速度一般指 Bit;用 B 表示容量一般指 Byte。比特、字节、WORD、DWORD 的本质。
-
如何在 Vue 中呈现使用 Vue 编写的 HTML 文件?
-
如何在 Linux 上使用 Osquery 设置文件完整性监控(FIM)
-
问:如何配置 NGINX 以提供使用 gzip 压缩的自定义扩展名的文件?
-
分步教程:如何使用 ZipArchive 的 php 扩展名压缩和解压文件
-
了解 Java 的 keytool 工具以及如何使用 .crt 文件解决证书相关问题
-
Android 教程系列 第 27 部分]如何使用 Keytool 工具生成密钥存储签名文件