summaryrefslogtreecommitdiffstats
path: root/src/zabbix_server/functions.c
diff options
context:
space:
mode:
authorhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-09-06 10:49:58 +0000
committerhugetoad <hugetoad@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-09-06 10:49:58 +0000
commit0c73f6de93f75b5c3875ea46d5160884d3e08389 (patch)
tree5a7294b9e169cc7d87618f292373d261d046bc28 /src/zabbix_server/functions.c
parenta9bc71fb2da3acff905b8d2cc7a5ae37a24c774f (diff)
downloadzabbix-0c73f6de93f75b5c3875ea46d5160884d3e08389.tar.gz
zabbix-0c73f6de93f75b5c3875ea46d5160884d3e08389.tar.xz
zabbix-0c73f6de93f75b5c3875ea46d5160884d3e08389.zip
Minor changes.
git-svn-id: svn://svn.zabbix.com/trunk@2040 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/zabbix_server/functions.c')
-rw-r--r--src/zabbix_server/functions.c60
1 files changed, 59 insertions, 1 deletions
diff --git a/src/zabbix_server/functions.c b/src/zabbix_server/functions.c
index e4d5e845..48c71565 100644
--- a/src/zabbix_server/functions.c
+++ b/src/zabbix_server/functions.c
@@ -373,6 +373,60 @@ void update_triggers(int itemid)
DBfree_result(result);
}
+void calc_timestamp(char *line,int *timestamp, char *format)
+{
+ int hh=0,mm=0,ss=0,yyyy=0,dd=0,MM=0;
+ int hhc=0,mmc=0,ssc=0,yyyyc=0,ddc=0,MMc=0;
+ int i,num;
+ struct tm *tm;
+
+ hh=mm=ss=yyyy=dd=MM=0;
+
+ for(i=0;(format[i]!=0)&&(line[i]!=0);i++)
+ {
+ if(isdigit(line[i])==0) continue;
+ num=(int)line[i]-48;
+
+ switch ((char) format[i]) {
+ case 'h':
+ hh=hh+hhc*num;
+ hhc++;
+ break;
+ case 'm':
+ mm=mm+mmc*num;
+ mmc++;
+ break;
+ case 's':
+ ss=ss+ssc*num;
+ ssc++;
+ break;
+ case 'y':
+ yyyy=yyyy+yyyyc*num;
+ yyyyc++;
+ break;
+ case 'd':
+ dd=dd+ddc*num;
+ ddc++;
+ break;
+ case 'M':
+ MM=MM+MMc*num;
+ MMc++;
+ break;
+ }
+ }
+
+ if(hh!=0&&mm!=0&&ss!=0&&yyyy!=0&&dd!=0&&MM!=0)
+ {
+ tm->tm_sec=ss;
+ tm->tm_min=mm;
+ tm->tm_hour=hh;
+ tm->tm_mday=dd;
+ tm->tm_mon=MM;
+ tm->tm_year=yyyy;
+ *timestamp=mktime(tm);
+ }
+}
+
/******************************************************************************
* *
* Function: process_data *
@@ -404,7 +458,7 @@ int process_data(int sockfd,char *server,char *key,char *value,char *lastlogsize
zabbix_log( LOG_LEVEL_DEBUG, "In process_data([%s],[%s],[%s],[%s])",server,key,value,lastlogsize);
- snprintf(sql,sizeof(sql)-1,"select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snmp_oid,h.useip,h.ip,i.history,i.lastvalue,i.prevvalue,i.value_type,i.trapper_hosts,i.delta,i.units,i.multiplier,i.formula from items i,hosts h where h.status=%d and h.hostid=i.hostid and h.host='%s' and i.key_='%s' and i.status=%d and i.type in (%d,%d)", HOST_STATUS_MONITORED, server, key, ITEM_STATUS_ACTIVE, ITEM_TYPE_TRAPPER, ITEM_TYPE_ZABBIX_ACTIVE);
+ snprintf(sql,sizeof(sql)-1,"select i.itemid,i.key_,h.host,h.port,i.delay,i.description,i.nextcheck,i.type,i.snmp_community,i.snmp_oid,h.useip,h.ip,i.history,i.lastvalue,i.prevvalue,i.value_type,i.trapper_hosts,i.delta,i.units,i.multiplier,i.formula,i.logtimefmt from items i,hosts h where h.status=%d and h.hostid=i.hostid and h.host='%s' and i.key_='%s' and i.status=%d and i.type in (%d,%d)", HOST_STATUS_MONITORED, server, key, ITEM_STATUS_ACTIVE, ITEM_TYPE_TRAPPER, ITEM_TYPE_ZABBIX_ACTIVE);
result = DBselect(sql);
if(DBnum_rows(result) == 0)
@@ -470,6 +524,7 @@ int process_data(int sockfd,char *server,char *key,char *value,char *lastlogsize
item.units=DBget_field(result,0,18);
item.multiplier=atoi(DBget_field(result,0,19));
item.formula=DBget_field(result,0,20);
+ item.logtimefmt=DBget_field(result,0,21);
s=value;
if( (strncmp(item.key,"log[",4)==0) ||
@@ -490,6 +545,9 @@ int process_data(int sockfd,char *server,char *key,char *value,char *lastlogsize
item.lastlogsize=atoi(lastlogsize);
item.timestamp=atoi(timestamp);
+
+ calc_timestamp(value,&item.timestamp,item.logtimefmt);
+
item.eventlog_severity=atoi(severity);
item.eventlog_source=source;
zabbix_log(LOG_LEVEL_DEBUG, "Value [%s] Lastlogsize [%s] Timestamp [%s]", value, lastlogsize, timestamp);