Log监控

 

关于日志的监控,hinemos里提供了两种监控手段,一种是系统日志监控,另一种是日志文件监控

那这两种的区别在于:

1.系统日志监控监控的是/var/log/message,而日志文件监控,是可以自定义日志文件的。

2.系统日志监控不需要安装hinemos agent,而日志文件监控是必须要安装hinemos agent的。

 

对象结点设定

这两种日志监控方式,都是通过rsyslog的功能来实现的,如果是系统日志监控,并且对象结点里没有安装hinemos agent,那么必须在/etc/rsyslog.conf文件的最后,添加上将日志转送给hinemos manager服务器的设置

*.info;mail.none;authpriv.none;cron.none @@192.168.75.128:514

(192.168.75.128是hinemos Manager的IP)

但是如果安装了hinemos agent,那么在安装的同时也会对rsyslog进行设置,这样就不需要手动添加上面的那行设置,

它是在/etc/rsyslog.d/rsyslog_hinemos-agent.properties里生成

[root@Ap1 rsyslog.d]# cat rsyslog_hinemos_agent.conf        
#        
# Hinemos Agent  (for syslog monitoring)        
#        
*.info;mail.none;authpriv.none;cron.none                @@192.168.100.96:514        
[root@Ap1 rsyslog.d]#

 

监视结果测试

关于系统日志监控项,对象结点设置完上面的信息之后,可以通过手动写log来确认监控项的设置效果。

 

 [root]# logger "hello world"   
 [root]# logger "ERROR: warning there is something wrong"

 

可以通过确认客户端的event状态发现,有error通知,warning there is something wrong

 

EVENT_FOR_TRAP设定

默认情况下,系统日志监控的设定选项中,有event_for_trap这个设置项,默认情况下,该项的设置是,30分钟内,同一重要度的通知,仅通知一次。如果希望所有的通知都提示的话,需要将默认设置修改成一直都通知。

 

如何匹配监控字符

从第一个开始匹配,如果匹配上了,那么下面的字符串就不会再去匹配

 

处理原理

rsyslog里的设置可以看出,对象结点产生的日志信息被发送到Hinemos Manager服务器的工作模式来处理的,那么确实是将日志文件发送给Hinemos Manager里,然后再去匹配那么定义的字符串吗,旧版本确实是这样的,但是从4.1版本开始,就不在是这样的处理方式,比较的这个过程不再是在HinemosManager里,而是在各个对象结点,通过hinemos agent来判断匹配,然后Hinemos agent将有问题的消息传给Hinemos Manager,这样大大降低了Hinemos Manager的负荷。



 

 

参考:http://www.hinemos.info/ja/technology/nttdata/2014091901      
 http://www.hinemos.info/ja/technology/nttdata/2015092901

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Linux 环境下,可以使用 C 语言中的 `syslog()` 函数向系统日志中写入日志信息,包括用户新增等操作。系统日志文件一般位于 `/var/log/auth.log`,可以监控该文件以检测用户新增事件。 下面是使用 C 语言代码实现监控用户新增的具体步骤: 1. 打开 `/var/log/auth.log` 日志文件,以便实时读取文件内容。可以使用 `fopen()` 函数打开文件,例如: ```c FILE *log_file = fopen("/var/log/auth.log", "r"); ``` 2. 不断读取日志文件内容,以便监控用户新增事件。可以使用 `fgets()` 函数读取文件内容,例如: ```c char buf[1024]; while (fgets(buf, sizeof(buf), log_file) != NULL) { // 处理读取到的日志信息 } ``` 3. 在读取到日志信息时,使用正则表达式等方式提取出需要监控的信息,例如用户新增事件。可以使用 `regcomp()` 函数编译正则表达式,使用 `regexec()` 函数执行匹配,例如: ```c regex_t reg; if (regcomp(&reg, "new user: name=([^,]+)", REG_EXTENDED) != 0) { // 正则表达式编译失败,处理错误逻辑 } if (regexec(&reg, buf, 0, NULL, 0) == 0) { // 匹配成功,处理用户新增事件 } regfree(&reg); ``` 4. 在处理用户新增事件时,可以使用 `syslog()` 函数向系统日志中写入相关信息,例如: ```c syslog(LOG_INFO, "New user added: %s", username); ``` 5. 最后,关闭日志文件并结束程序: ```c fclose(log_file); closelog(); return 0; ``` 完整的代码示例: ```c #include <stdio.h> #include <regex.h> #include <syslog.h> int main() { // 打开系统日志 openlog("monitor", LOG_CONS | LOG_PID, LOG_USER); // 打开 /var/log/auth.log 文件 FILE *log_file = fopen("/var/log/auth.log", "r"); if (log_file == NULL) { syslog(LOG_ERR, "Cannot open log file"); return -1; } // 编译正则表达式 regex_t reg; if (regcomp(&reg, "new user: name=([^,]+)", REG_EXTENDED) != 0) { syslog(LOG_ERR, "Cannot compile regular expression"); fclose(log_file); closelog(); return -1; } // 不断读取 /var/log/auth.log 文件 char buf[1024]; while (fgets(buf, sizeof(buf), log_file) != NULL) { // 匹配正则表达式 regmatch_t match[2]; if (regexec(&reg, buf, 2, match, 0) == 0) { char username[256]; int len = match[1].rm_eo - match[1].rm_so; strncpy(username, buf + match[1].rm_so, len); username[len] = '\0'; // 写入系统日志 syslog(LOG_INFO, "New user added: %s", username); } } // 释放正则表达式 regfree(&reg); // 关闭日志文件和系统日志 fclose(log_file); closelog(); return 0; } ``` 注意:为了编译以上代码,需要链接 `libbsd` 库,可以使用以下命令编译: ```shell gcc -o monitor monitor.c -lbsd ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值