Nxlog研究
1、日志收集策略有誤,如果填了不存在類型的日志就會報此種錯誤
> ERROR failed to subscribe to msvistalog events,the channel was not found > [error code: 15007]; The specified channel could not be found. Check > channel configuration.2018-09-11 15:48:24 ERROR failed to subscribe to msvistalog events,the channel was not found [error code: 15007]; 無法找到指定的通道。請檢查通道配置。
2018-09-11 16:01:54 ERROR failed to subscribe to msvistalog events using bookmark: 指定的隊列無效。?
2018-09-11 16:01:54 ERROR failed to subscribe to msvistalog events,the Query is invalid: [error code: 15001]
調用函數
NXlog的核心包含了一些內置的語法。它能夠完成一些更加復雜的日志處理功能。當NXLog啟動的時候,內置的語言就會被預編譯,如果程序出錯了,NXLog會提示錯誤信息的。
函數使用位置
1、指令中的變量 2、Exec中執行相應程序
NXLog語言不包含異常捕獲程序,如果出錯了,會在NXLog的日志中打印出來,如果在處理的時候出錯了,那很可能就會把日志丟掉了
類型?
NXLog語言是強類型程序,NXLog 語言只支持簡單類型,復雜的類型例如HashMap這種是不支持的
| Unknown? | 未知類型? |
| Boolean? | 可用TRUE、FALSE、undefined? |
| Integer? | 整形? |
| String? | 字符串,undefined字符串和空字符串相等,一個字符串最多放1M,編譯時就決定了的? |
| Datetime? | 時間戳? |
| IPv4 Address? | IP地址??? |
| IPv6 Address? | IP地址?? |
| 正則表達式? | 只能用=~ 或者!~操作符???? |
| Binary? | 可用保存bytes數組?? |
| Variadic arguments? | 變長參數? |
| 表達式 | 和常規的開發語言差不多,變量用$xxx這樣聲明,一些示例: 條件非 ifnot$successlog_error("failure");? 正則匹配 if$Message=~/^Testmessage/log_info("matched");? 使用/g進行全局替換 if$SourceName=~s//s/_/glog_info("removedallwhitespaceinSourceName");? 使用/s代替.* if$Message=~/failure/slog_info("failurestringpresentinthemessage");? /m能代替正則的^和$ /i能忽略大小寫匹配 |
| 靜態計數器? | NXLog有一些靜態計數器,可以用create_stat來調用 if$Message=~/loginfailure/? |
| COUNT? | 累計計數器? |
| COUNTMIN? | 計算給定變量的最小值? |
| COUNTMAX? | 計算給定變量的最大值? |
| AVG? | 計算給定變量的平均值? |
| AVGMIN? | 計算給定變量的最小值平均值的? |
| AVGMAX? | 計算給定變量的最小值平均值的 |
| RATE? | 指定時間間隔的值? |
| RATEMIN? | 指定時間間隔的最小值?? |
| RATEMAX? | 指定時間間隔的最大值? |
| GRAD? | 計算在指定的時間間隔上的計數器的速率的變化 |
| GRADMIN? | 計算在指定的時間間隔上的計數器的速率的最大值? |
| GRADMAX? | 計算在指定的時間間隔上的計數器的速率的最小值? |
| string lc(string arg);? | 把字符串轉成小寫 |
| string uc(string arg);? | 把字符串轉成大寫? |
| datetime now();? | 當前時間? |
| string type(unknown arg);? | 返回變量類型,"boolean", "integer", "string", "datetime", "ip4addr", "ip6addr", "regexp", "binary"? |
| integer microsecond(datetime datetime);? | 轉為微秒? |
| integer second(datetime datetime);? | 轉為秒? |
| integer minute(datetime datetime);? | 轉為分鐘 |
| integer hour(datetime datetime)? | 轉為小時? |
| integer day(datetime datetime) | 轉為天? |
| integer month(datetime datetime)? | 轉為月? |
| integer year(datetime datetime)? | 轉為年? |
| datetime fix_year(datetime datetime);? | 設置當前時間的年,BSD syslog或者cisco timestamp會把年丟掉的? |
| integer dayofweek(datetime datetime)? | 返回一周的第幾天? |
| integer dayofyear(datetime datetime)? | 返回一年的第幾天? |
| string string(unknown arg);? | 轉為string? |
| integer integer(unknown arg)? | 轉為integer |
| datetime datetime(integer arg)? | 轉為datetime? |
| datetime parsedate(string arg)? | 轉為date, 例:$EventTime = parsedate($somestring); if not defined($EventTime) $EventTime = now();? |
| string strftime(datetime datetime, string fmt);? | 格式化字符串? |
| datetime strptime(string input, string fmt);? | 格式化日期? |
| string hostname();? | 獲取主機名? |
| string hostname_fqdn();? | 獲取主機名? |
| ip4addr host_ip();? | 獲取主機IP? |
| ip4addr host_ip(integer nth);? | 獲取非本地回路IP? |
| unknown get_var(string varname);? | 獲取變量 |
| integer get_stat(string statname);? | 獲取計數器的值? |
| integer get_stat(string statname, datetime time);? | 獲取計數器的值,如果不存在就把time設進去? |
| ip4addr ip4addr(integer arg)? | 轉為ipv4類型? |
| ip4addr ip4addr(integer arg, boolean ntoa);? | 轉為IPV4類型,ntoa代表是否反轉? |
| string substr(string src, integer from);? | 字符串截取? |
| string substr(string src, integer from, integer to);? | 字符串截取? |
| string replace(string subject, string src, string dst);? | 字符串替換? |
| string replace(string subject, string src, string dst, integer count);? | 字符串替換? |
| integer size(string str);? | 獲取字符串長度? |
| boolean dropped();? | 如果當前事件drop了,返回True? |
| log_debug(unknown arg, varargs args); | 打印日志,級別為Debug? |
| debug(unknown arg, varargs args);? | 打印日志,級別為Debug? |
| log_info(unknown arg, varargs args);? | 打印日志,級別為Info? |
| log_warning(unknown arg, varargs args);? | 打印日志,級別為Warning? |
| log_error(unknown arg, varargs args);? | 打印日志,級別為Error? |
| delete(unknown arg);? | 刪除日志里面的指定字段? |
| create_var(string varname);? | 創建模塊變量? |
| create_var(string varname, integer lifetime);? | 創建模塊變量并指定生存周期? |
| create_var(string varname, datetime expiry);? | 創建模塊變量并指定生存周期? |
| delete_var(string varname);? | 刪除變量? |
| set_var(string varname, unknown value);? | 設置變量? |
| create_stat(string statname, string type);? | 創建計數器? |
| create_stat(string statname, string type, integer interval);? | 創建計數器? |
| create_stat(string statname, string type, integer interval, datetime time);? | 創建計數器? |
| create_stat(string statname, string type, integer interval, datetime time, integer lifetime);? | 創建計數器? |
| create_stat(string statname, string type, integer interval, datetime time, datetime expiry);? | 創建計數器? |
| add_stat(string statname, integer value);? | 添加計數器值? |
| add_stat(string statname, integer value, datetime time);? | 添加計數器值? |
| sleep(integer interval);? | 休眠指定時長? |
| drop();? | 放棄處理當前日志? |
| rename_field(string old, string new);? | 修改日志字段名稱? |
| reroute(string routename); | 動態指定路由? |
| add_to_route(string routename);? | 復制一份日志動態指定路由,不影響當前日志流? |
?
總結
- 上一篇: imewlconverter 制作Rim
- 下一篇: win10打开远程控制服务器,如何在Wi