Commit a20e15e6 authored by Adam Wujek's avatar Adam Wujek 💬

userspace/snmpd: add deamons start counters

Add following deamon's start counters:
--sshd (dropbear)
--https (lighttpd)
--snmpd
--syslog

Update:
--start scripts
--snmpd
--MIB
Signed-off-by: Adam Wujek's avatarAdam Wujek <adam.wujek@cern.ch>
parent 47e39151
......@@ -6,6 +6,18 @@
# Make sure the dropbearkey progam exists
[ -f /usr/bin/dropbearkey ] || exit 0
start_counter() {
# increase boot counter
COUNTER_FILE="/tmp/start_cnt_sshd"
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() {
echo -n "Starting dropbear sshd: "
# Make sure dropbear directory exists
......@@ -28,6 +40,7 @@ start() {
fi
umask 077
start-stop-daemon -S -q -p /var/run/dropbear.pid --exec /usr/sbin/dropbear
start_counter
echo "OK"
}
stop() {
......
#!/bin/sh
COUNTER_FILE="/tmp/start_cnt_syslogd"
start_counter() {
# increase boot counter
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() {
# Check the configuration file: if there's no target, don't run the thing.
if ! grep -q '^##.*remote-host' /etc/rsyslog.conf; then
echo -n "Starting rsyslog: "
/usr/sbin/rsyslogd
start_counter
echo "OK"
else
echo "Not starting rsyslog: no target host selected"
# avoid SNMPd complaints about lack of start counter file
echo "0" > $COUNTER_FILE
fi
}
......
......@@ -3,9 +3,22 @@
SNMP_PID=/var/run/snmpd.pid
SNMP_CONF=/wr/etc/snmpd.conf
start_counter() {
# increase boot counter
COUNTER_FILE="/tmp/start_cnt_snmpd"
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() {
# Log to syslog at daemon level. And log source address (-a)
snmpd -Lsd -p $SNMP_PID -a -c $SNMP_CONF
start_counter
}
stop() {
......
......@@ -2,9 +2,23 @@
#
# Starts lighttpd daemon.
#
start_counter() {
# increase boot counter
COUNTER_FILE="/tmp/start_cnt_httpd"
START_COUNTER=1
if [ -f "$COUNTER_FILE" ];
then
read -r START_COUNTER < $COUNTER_FILE
START_COUNTER=$((START_COUNTER+1))
fi
echo "$START_COUNTER" > $COUNTER_FILE
}
start() {
echo -n "Starting lighttpd daemon: "
/usr/sbin/lighttpd -f /var/www/lighttpd.config
start_counter
echo "OK"
}
stop() {
......
......@@ -645,6 +645,38 @@ wrsStartCntRTUd OBJECT-TYPE
"Number of RTU deamon starts"
::= { wrsStartCntGroup 3 }
wrsStartCntSshd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SSH deamon starts"
::= { wrsStartCntGroup 4 }
wrsStartCntHttpd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of HTTP deamon starts"
::= { wrsStartCntGroup 5 }
wrsStartCntSnmpd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SNMP deamon starts"
::= { wrsStartCntGroup 6 }
wrsStartCntSyslogd OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Nmber of SYSLOG deamon starts"
::= { wrsStartCntGroup 7 }
wrsSpllState OBJECT IDENTIFIER ::= { wrsExpertStatus 3 }
-- wrsSpllStatusGroup (.7.3.2)
wrsSpllStatusGroup OBJECT IDENTIFIER ::= { wrsSpllState 2 }
......
......@@ -2,18 +2,44 @@
#include "snmp_shmem.h"
#include "wrsStartCntGroup.h"
#define START_CNT_SSHD "/tmp/start_cnt_sshd"
#define START_CNT_HTTPD "/tmp/start_cnt_httpd"
#define START_CNT_SNMPD "/tmp/start_cnt_snmpd"
#define START_CNT_SYSLOGD "/tmp/start_cnt_syslogd"
static struct pickinfo wrsStartCnt_pickinfo[] = {
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntHAL),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntPPSI),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntRTUd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntSshd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntHttpd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntSnmpd),
FIELD(wrsStartCnt_s, ASN_COUNTER, wrsStartCntSyslogd),
};
struct wrsStartCnt_s wrsStartCnt_s;
/* read start counter from files in /tmp */
static void read_start_count(char *file, uint32_t *counter)
{
FILE *f;
f = fopen(file, "r");
if (!f) {
snmp_log(LOG_ERR, "SNMP: wrsStartCntGroup filed to open file "
"%s\n", file);
} else {
/* ignore fscanf errors */
fscanf(f, "%d", counter);
fclose(f);
}
}
time_t wrsStartCnt_data_fill(void){
static time_t time_update;
time_t time_cur;
time_cur = time(NULL);
if (time_update
&& time_cur - time_update < WRSSTARTCNT_CACHE_TIMEOUT) {
......@@ -29,6 +55,11 @@ time_t wrsStartCnt_data_fill(void){
wrsStartCnt_s.wrsStartCntPPSI = ppsi_head->pidsequence;
wrsStartCnt_s.wrsStartCntRTUd = rtud_head->pidsequence;
read_start_count(START_CNT_SSHD, &wrsStartCnt_s.wrsStartCntSshd);
read_start_count(START_CNT_HTTPD, &wrsStartCnt_s.wrsStartCntHttpd);
read_start_count(START_CNT_SNMPD, &wrsStartCnt_s.wrsStartCntSnmpd);
read_start_count(START_CNT_SYSLOGD, &wrsStartCnt_s.wrsStartCntSyslogd);
/* there was an update, return current time */
return time_update;
}
......
......@@ -8,6 +8,10 @@ struct wrsStartCnt_s {
uint32_t wrsStartCntHAL;
uint32_t wrsStartCntPPSI;
uint32_t wrsStartCntRTUd;
uint32_t wrsStartCntSshd;
uint32_t wrsStartCntHttpd;
uint32_t wrsStartCntSnmpd;
uint32_t wrsStartCntSyslogd;
};
extern struct wrsStartCnt_s wrsStartCnt_s;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment