added rsyslog lab work for logging project
This commit is contained in:
parent
1ee7d5f00e
commit
ea06929d4f
1
rsyslog/Readme.txt
Normal file
1
rsyslog/Readme.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
Config dump from my lab, passwords are not real.
|
37
rsyslog/rsyslog/manage_rsyslog_logrotate.yaml
Normal file
37
rsyslog/rsyslog/manage_rsyslog_logrotate.yaml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
- name: Manage rsyslog and logrotate configurations locally on Ubuntu 20.04 LTS
|
||||||
|
hosts: localhost
|
||||||
|
become: yes
|
||||||
|
connection: local
|
||||||
|
gather_facts: yes
|
||||||
|
tasks:
|
||||||
|
- name: Install rsyslog and logrotate packages
|
||||||
|
ansible.builtin.package:
|
||||||
|
name:
|
||||||
|
- rsyslog
|
||||||
|
- logrotate
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: Copy rsyslog configuration file
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: rsyslog.conf
|
||||||
|
dest: /etc/rsyslog.conf
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
notify: restart rsyslog
|
||||||
|
|
||||||
|
- name: Copy logrotate configuration file for rsyslog JSON logs
|
||||||
|
ansible.builtin.copy:
|
||||||
|
src: rsyslog-json
|
||||||
|
dest: /etc/logrotate.d/rsyslog-json
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: 0644
|
||||||
|
|
||||||
|
handlers:
|
||||||
|
- name: restart rsyslog
|
||||||
|
ansible.builtin.systemd:
|
||||||
|
name: rsyslog
|
||||||
|
state: restarted
|
||||||
|
|
17
rsyslog/rsyslog/pgsql.conf
Normal file
17
rsyslog/rsyslog/pgsql.conf
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
### Configuration file for rsyslog-pgsql
|
||||||
|
### Changes are preserved
|
||||||
|
|
||||||
|
module (load="ompgsql")
|
||||||
|
|
||||||
|
#came from package
|
||||||
|
# *.* action(type="ompgsql" server="localhost" db="Syslog" uid="rsyslog" pwd="test")
|
||||||
|
|
||||||
|
# Legacy template for PostgreSQL
|
||||||
|
# $template pgsqlLogFormat,"INSERT INTO logs (log_data) VALUES ('%msg:jsonLogFormat%')",SQL
|
||||||
|
$template pgsqlCombinedTemplate,"INSERT INTO logs (log_data) VALUES ('{\"timestamp\":\"%timereported:::date-rfc3339%\",\"message\":\"%msg:::json%\",\"host\":\"%hostname:::json%\",\"severity\":\"%syslogseverity-text:::json%\",\"facility\":\"%syslogfacility-text:::json%\",\"syslogtag\":\"%syslogtag:::json%\"}')",SQL
|
||||||
|
|
||||||
|
# Save incoming logs to PostgreSQL DB with caching
|
||||||
|
if $fromhost-ip != '127.0.0.1' then {
|
||||||
|
action(type="ompgsql" server="localhost" user="myuser" pass="mypassword" db="logs" template="pgsqlCombinedTemplate" queue.type="LinkedList" queue.size="10000" queue.workerThreads="2" queue.dequeueBatchSize="100" queue.highWatermark="8000" queue.lowWatermark="2000" queue.discardSeverity="0" queue.discardMark="9750")
|
||||||
|
}
|
||||||
|
|
13
rsyslog/rsyslog/rsyslog-json
Normal file
13
rsyslog/rsyslog/rsyslog-json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/var/log/remote/*/*/*.log /var/log/remote/*/*/*.json {
|
||||||
|
daily
|
||||||
|
missingok
|
||||||
|
rotate 7
|
||||||
|
compress
|
||||||
|
delaycompress
|
||||||
|
notifempty
|
||||||
|
create 0640 root adm
|
||||||
|
postrotate
|
||||||
|
invoke-rc.d rsyslog rotate >/dev/null 2>&1 || true
|
||||||
|
endscript
|
||||||
|
}
|
||||||
|
|
60
rsyslog/rsyslog/rsyslog.conf
Normal file
60
rsyslog/rsyslog/rsyslog.conf
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Load input modules (Choose TCP or UDP)
|
||||||
|
module(load="imtcp")
|
||||||
|
input(type="imtcp" port="514")
|
||||||
|
|
||||||
|
# OR
|
||||||
|
|
||||||
|
module(load="imudp")
|
||||||
|
input(type="imudp" port="514")
|
||||||
|
|
||||||
|
# Queue configuration for caching
|
||||||
|
$ActionQueueType LinkedList
|
||||||
|
$ActionQueueSize 10000
|
||||||
|
$ActionQueueWorkerThreads 2
|
||||||
|
$ActionQueueDequeueBatchSize 100
|
||||||
|
$ActionQueueHighWatermark 8000
|
||||||
|
$ActionQueueLowWatermark 2000
|
||||||
|
$ActionQueueDiscardSeverity 0
|
||||||
|
$ActionQueueDiscardMark 9750
|
||||||
|
|
||||||
|
# JSON log format template
|
||||||
|
template(name="jsonLogFormat" type="list") {
|
||||||
|
constant(value="{")
|
||||||
|
constant(value="\"timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
|
||||||
|
constant(value="\",\"message\":\"") property(name="msg")
|
||||||
|
constant(value="\",\"host\":\"") property(name="hostname")
|
||||||
|
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
|
||||||
|
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
|
||||||
|
constant(value="\",\"syslogtag\":\"") property(name="syslogtag")
|
||||||
|
constant(value="\"}")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Dynamic file name template based on date, host, and application
|
||||||
|
template(name="DynamicFile" type="list") {
|
||||||
|
constant(value="/var/log/remote/")
|
||||||
|
property(name="timereported" dateFormat="year")
|
||||||
|
constant(value="/")
|
||||||
|
property(name="timereported" dateFormat="month")
|
||||||
|
constant(value="/")
|
||||||
|
property(name="timereported" dateFormat="day")
|
||||||
|
constant(value="/")
|
||||||
|
property(name="hostname")
|
||||||
|
constant(value="/")
|
||||||
|
property(name="programname")
|
||||||
|
constant(value=".log")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# Save incoming logs to dynamic file names with caching
|
||||||
|
if $fromhost-ip != '127.0.0.1' then {
|
||||||
|
action(type="omfile" dynaFile="DynamicFile" template="jsonLogFormat" queue.type="LinkedList" queue.size="10000" queue.workerThreads="2" queue.dequeueBatchSize="100" queue.highWatermark="8000" queue.lowWatermark="2000" queue.discardSeverity="0" queue.discardMark="9750")
|
||||||
|
}
|
||||||
|
|
||||||
|
include(file="/etc/rsyslog.d/pgsql.conf")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
10
rsyslog/rsyslog/run.sh
Executable file
10
rsyslog/rsyslog/run.sh
Executable file
@ -0,0 +1,10 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [ $# -ne 1 ]; then
|
||||||
|
echo "Usage: $0 <playbook_file>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
playbook_file=$1
|
||||||
|
|
||||||
|
ansible-playbook $playbook_file --ask-become-pass
|
Loading…
Reference in New Issue
Block a user