meta-facebook: Add rsyslog

Added rsyslog and its conf file for IPMI Sel format

Tested: Verified on target.

(From meta-facebook rev: 5bc212a1fdec2d81612aab1c6862efc41e141399)

Change-Id: I1684d30731eb3f90c9eda174a647348ad4205056
Signed-off-by: Vijay Khemka <vijaykhemka@fb.com>
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rotate-event-logs.service b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rotate-event-logs.service
new file mode 100644
index 0000000..fdeefd4
--- /dev/null
+++ b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rotate-event-logs.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=Rotates the event logs
+
+[Service]
+Type=oneshot
+ExecStart=/usr/sbin/logrotate /etc/logrotate.d/logrotate.rsyslog
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rotate-event-logs.timer b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rotate-event-logs.timer
new file mode 100644
index 0000000..148f8e4
--- /dev/null
+++ b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rotate-event-logs.timer
@@ -0,0 +1,8 @@
+[Unit]
+Description=Run rotate-event-logs.service every minute
+
+[Timer]
+OnCalendar=*-*-* *:*:00
+
+[Install]
+WantedBy=timers.target
diff --git a/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rsyslog.conf b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rsyslog.conf
new file mode 100644
index 0000000..3aae03f
--- /dev/null
+++ b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rsyslog.conf
@@ -0,0 +1,36 @@
+# if you experience problems, check
+# http://www.rsyslog.com/troubleshoot for assistance
+
+# rsyslog v3: load input modules
+# If you do not load inputs, nothing happens!
+# You may need to set the module load path if modules are not found.
+#
+# Ported from debian's sysklogd.conf
+
+# Journal-style logging
+# Limit to no more than 2000 entries in one minute and enable the
+# journal workaround to avoid duplicate entries
+module(load="imjournal" StateFile="/var/log/state"
+                        RateLimit.Interval="60"
+                        RateLimit.Burst="2000")
+
+# Template for Redfish messages
+# "<timestamp> <MessageId>,<MessageArgs>"
+template(name="IPMISELTemplate" type="list") {
+    property(name="timereported" dateFormat="rfc3339")
+    constant(value=" ")
+    property(name="$!IPMISEL_MESSAGE_ID")
+    constant(value=", ")
+    property(name="$!IPMISEL_MESSAGE_ARGS")
+    constant(value="\n")
+}
+
+# If the journal entry has a Redfish MessageId, save as a Redfish event
+if ($!IPMISEL_MESSAGE_ID != "") then {
+   action(type="omfile" file="/var/log/ipmi_sel" template="IPMISELTemplate")
+}
+
+#
+# Include all config files in /etc/rsyslog.d/
+#
+$IncludeConfig /etc/rsyslog.d/*.conf
diff --git a/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
new file mode 100644
index 0000000..9eddafa
--- /dev/null
+++ b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
@@ -0,0 +1,12 @@
+# /etc/logrotate.d/rsyslog - Ported from Debian
+
+# Keep up to four 64k files for ipmi_sel (256k total)
+/var/log/ipmi_sel
+{
+    rotate 3
+    size 64k
+    missingok
+    postrotate
+        systemctl reload rsyslog 2> /dev/null || true
+    endscript
+}
diff --git a/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog_%.bbappend b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog_%.bbappend
new file mode 100644
index 0000000..03a81e2
--- /dev/null
+++ b/meta-facebook/meta-tiogapass/recipes-extended/rsyslog/rsyslog_%.bbappend
@@ -0,0 +1,25 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+# Pin to rsyslog v8.1904.0 for now
+# v8.1903.0 has a couple issues with the imjournal module:
+#   1. Enabling the "WorkAroundJournalBug" option causes rsyslogd to fail to start
+#   2. Logging data especially while rotating the journal causes a double free error
+PV = "8.1904.0"
+SRC_URI[md5sum] = "b9398b5aa68a829bf2c18a87490d30c0"
+SRC_URI[sha256sum] = "7098b459dfc3f8bfc35d5b114c56e7945614ba76efa4e513b1db9c38b0ff9c3d"
+
+SRC_URI += "file://rsyslog.conf \
+           file://rsyslog.logrotate \
+           file://rotate-event-logs.service \
+           file://rotate-event-logs.timer \
+"
+
+PACKAGECONFIG_append = " imjournal"
+
+do_install_append() {
+        install -m 0644 ${WORKDIR}/rotate-event-logs.service ${D}${systemd_system_unitdir}
+        install -m 0644 ${WORKDIR}/rotate-event-logs.timer ${D}${systemd_system_unitdir}
+        rm ${D}${sysconfdir}/rsyslog.d/imjournal.conf
+}
+
+SYSTEMD_SERVICE_${PN} += " rotate-event-logs.service rotate-event-logs.timer"