GitHub user soreana created a discussion: Centralised logging via rsyslog

##### ISSUE TYPE
 * Feature Idea

##### COMPONENT NAME
~~~
Systemvm
~~~

##### CLOUDSTACK VERSION
~~~
It can be merge to 4.14
~~~

##### CONFIGURATION
<!--
Information about the configuration if relevant, e.g. basic network, advanced 
networking, etc.  N/A otherwise
-->


##### OS / ENVIRONMENT
Used Ubuntu 18:04 as a host for management server and KVM Hypervisor.

##### SUMMARY

Hello Cloudstack community. There is a systemvm remote logging feature 
proposal. It enabled administrator to access systemvm's log file through 
management server. I think it would be interesting for other as well. To better 
explaining my setup I depicted the configuration in below picture.

![Cloudstack Centralized 
logging-2](https://user-images.githubusercontent.com/9499410/82427752-cdabb200-9a89-11ea-8e8e-c4eb0744076f.png)

In this case rather than downloading log file manually from systemvms, they 
will be available automatically through management server.

### STEPS TO REPRODUCE

Below are configuration files for hypervisor, management server and sytemvms.

#### Hypervisors

Below 4 lines have to uncommented in rsyslog configuration file on each 
hypervisor in `/etc/rsyslog.conf`

```Python
module(load="imtcp")
input(type="imtcp" port="514")

module(load="imudp")
input(type="imudp" port="514")
```

Adding below file on each hypervisor to export logs from hypervisor to 
management server.

```Java
# cat /etc/rsyslog.d/00-fwd.conf
if ($fromhost-ip startswith '169.') then {
    *.* @<Management Server IP>:514
    stop
}
```

#### Management Server

Just like hypervisors, below 4 lines have to uncommented in rsyslog 
configuration file on management server in `/etc/rsyslog.conf`

```Python
module(load="imtcp")
input(type="imtcp" port="514")

module(load="imudp")
input(type="imudp" port="514")
```

Add below file on management server

```Java
# cat /etc/rsyslog.d/00-remote.conf
$template remote-incoming-logs,"/var/log/rsyslog/%HOSTNAME%/syslog"
$template remote-incoming-logs-combined,"/var/log/rsyslog/remote"
if ($fromhost-ip startswith '10.' or $fromhost-ip startswith '172.') then 
?remote-incoming-logs
if ($fromhost-ip startswith '10.' or $fromhost-ip startswith '172.') then 
?remote-incoming-logs-combined
& ~ 
```

#### Systemvm

`00-fwd.conf` file should add on each systemvm as well to export logs from 
systemvms to hypervisors.

```Java
# cat /etc/rsyslog.d/00-fwd.conf
*.*  @169.254.0.1:514
```

`49-cloud.conf` file should add on each systemvm. This file describes the logs 
that eventually sent to a management server

```Java
 # cat /etc/rsyslog.d/49-cloud.conf
$InputFileName /var/log/cloud.log
$InputFileTag cloud
$InputFileStateFile stat-file1-cloud
$InputFileSeverity info 
$InputFileFacility local7 
$InputFilePollInterval 1 
$InputFilePersistStateInterval 1 
$InputRunFileMonitor
```
 
Need to uncomment below lines if they are commented in /etc/rsyslog.conf

```python
$ModLoad imudp
$UDPServerRun 3914
```

##### EXPECTED RESULTS

~~~
Management server store systemvm's logs in /var/log/rsyslog/<Systemvm's host 
name>/syslog
~~~


GitHub link: https://github.com/apache/cloudstack/discussions/9179

----
This is an automatically sent email for users@cloudstack.apache.org.
To unsubscribe, please send an email to: users-unsubscr...@cloudstack.apache.org

Reply via email to