seci-log 1.05 发布,日志分析增加业务系统日志
本次升级并没有增加新的告警,而是增加了业务日志分析,协议用的是udp 514端口,和syslog公用一个端口;由于业务日志五花八门要想进行适配和分析,必须先定好格式。下面详细介绍一下日志的格式,关键内容是以空格作为区分,属性和值是用等号进行分开的,整个日志中secisland business log 这三个字母是必须有的,其他字段都可以没有,但为了审计和分析的准确性,建议能加的都加上。格式示例如下:
secisland business log time="2015-04-26 15:42:34" user="zhang san" type=loginin biz="oa" model="web" srcip=192.168.1.1 srcport=442 srcprocess="ie" host=oa1 hostip=192.168.1.1 hostport=80 result=success protocol=http httpurl="http://aaa/login" desc="test aa"
字段 内容 备注
secisland business log 固定值 表示seci-log可以识别的业务日志标志。
time 时间 时间格式是固定的年-月-日 时:分:秒,需要两头加双引号
user 用户名 需要加双引号
type 时间类型 可以任意,loginin和loginout这两个是系统内置的,当是这两个的时候可以产生登录类的告警。
biz 业务系统 业务系统名称,加双引号
model 模块名 加双引号
srcip 源ip
srcport 源端口
srcprocess 源进程名 加双引号
host 主机名
hostip 业务ip
hostport 业务端口
result 结果
protocol 协议
httpurl http url 加双引号
desc 描述 加双引号
代码示例
列出了目前最主流的java和c#的的两个udp客户端代码的示例,其他语言类似的:
java
public
static
void
sendSyslog(String address,
int
port, String message)
throws
UnknownHostException,IOException {
DatagramSocket socket =
new
DatagramSocket();
InetAddress client = InetAddress.getByName(address);
byte
[] buffer = message.getBytes();
DatagramPacket packet =
new
DatagramPacket(buffer, buffer.length, client, port);
socket.send(packet);
socket.close();
}
c#
public
static
void
sendSyslog(
string
address,
int
port,
string
message)
{
byte
[] data =
new
byte
[1024];
IPEndPoint ipep =
new
IPEndPoint(IPAddress.Parse(address), port);
Socket server =
new
Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
data = Encoding.ASCII.GetBytes(message);
server.SendTo(data, data.Length, SocketFlags.None, ipep);
server.Close();
}