1
0
mirror of https://github.com/azlux/log2ram synced 2024-11-23 22:06:10 +00:00

Compare commits

..

No commits in common. "c21abf69949522feeabf3e5d71b28aa869ccfdf2" and "a342af9ed8621388e0b11e3e946937fa0e0938af" have entirely different histories.

2 changed files with 51 additions and 75 deletions

122
README.md
View File

@ -1,83 +1,71 @@
# Log2Ram # Log2Ram
Log2Ram works just like ramlog for systemd (on Debian 8 Jessie for example). Like ramlog for systemd (on debian 8 jessie for example).
Useful for **RaspberryPi** for not writing on the SD card all the time. You need it because your SD card doesn't want to suffer anymore! Usefull for **RaspberryPi** for not writing on the SD card all the time. You need it because your SD card doesn't want to suffer anymore!
Explanations: The script creates a `/var/log` mount point in RAM. So any writing of the log to the `/var/log` folder will not actually be written to disk (in this case to the SD card on a Raspberry Pi) but directly to RAM. By default, every day the CRON will synchronize the contents in RAM with the folder located on the physical disk. The script will also make this copy of RAM to disk in case of machine shutdowns (but, of course, it still won't do it in case of power failures). This way you can avoid excessive writing on the SD card and extend its life. Explanations: The script creates a `/var/log` mount point in RAM. So any writing of the log to the `/var/log` folder will not actually be written to disk (in this case to the SD card for a Raspberry Pi) but directly to RAM. By default, every day, the CRON will launch a synchronization of the RAM to the folder located on the physical disk. The script will also make this copy of RAM to disk in case of machine shutdown (but cannot do it in case of power failure). This way you avoid excessive writing on the SD card.
[Log2Ram](https://github.com/azlux/log2ram)'s script works on every Linux system. If you don't have Systemd, you can still use Log2Ram with your own daemon manager. The script [log2ram](https://github.com/azlux/log2ram) can work on every linux system. So you can use it with your own daemon manager if you don't have systemd.
Log2Ram is based on transient /var/log for Systemd. For more information, check [here](https://www.debian-administration.org/article/661/A_transient_/var/log). Log2Ram is based on transient log for Systemd here : [A transient /var/log](https://www.debian-administration.org/article/661/A_transient_/var/log)
_____ _____
## Table of Contents ## Table of Contents
1. [Installation](#installation) 1. [Install](#install)
2. [Is it working?](#is-it-working) 2. [Is it working?](#is-it-working)
3. [Upgrading](#upgrading) 3. [Upgrade](#upgrade)
4. [Customization](#customization) 4. [Customize](#customize)
5. [Troubleshooting](#troubleshooting) 5. [Troubleshooting](#troubleshooting)
6. [Uninstallation](#uninstallation-) 6. [Uninstall](#uninstall-)
## Installation ## Install
### Via APT (recommended) ### With APT (recommended)
echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ bullseye main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
sudo apt update
sudo apt install log2ram
```bash
echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ bullseye main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
sudo apt update
sudo apt install log2ram
```
### Manually ### Manually
curl -L https://github.com/azlux/log2ram/archive/master.tar.gz | tar zxf -
cd log2ram-master
chmod +x install.sh && sudo ./install.sh
cd ..
rm -r log2ram-master
```bash For better performances. `RSYNC` is a recommended package.
curl -L https://github.com/azlux/log2ram/archive/master.tar.gz | tar zxf -
cd log2ram-master
chmod +x install.sh && sudo ./install.sh
cd ..
rm -r log2ram-master
```
For better performances, `RSYNC` is a recommended package. **REBOOT** before installing anything else (for example apache2)
**REBOOT** before installing anything else (for example `apache2`)
## Is it working? ## Is it working?
After installing and rebooting, use systemctl to check if Log2Ram started successfully: After installing and rebooting, use systemctl to check if Log2Ram started successfully:
```bash ```
systemctl status log2ram systemctl status log2ram
``` ```
This will show a color-coded status (green: active/red: failed), as well as the last few log lines. To show the full log (scrolled to the end), run: This will show a color-coded status (green active/red failed) as well as the last few log lines. To show the full log (scrolled to the end), run:
```bash ```
journalctl -u log2ram -e journalctl -u log2ram -e
``` ```
The log is also written to `/var/log/log2ram.log`. The log is also written to `/var/log/log2ram.log`.
You can also inspect the mount folder in RAM with: You can also inspect the mount folder in ram with (You will see lines with log2ram if working)
```
```bash
# df -h | grep log2ram # df -h | grep log2ram
log2ram 40M 532K 40M 2% /var/log log2ram 40M 532K 40M 2% /var/log
```
or also:
```bash
# mount | grep log2ram # mount | grep log2ram
log2ram on /var/log type tmpfs (rw,nosuid,nodev,noexec,relatime,size=40960k,mode=755) log2ram on /var/log type tmpfs (rw,nosuid,nodev,noexec,relatime,size=40960k,mode=755)
``` ```
If you do not get any line as response of these commands, something is not working. Refer to [this section](#is-it-working). ## Upgrade
## Upgrading You need to stop log2ram (`service log2ram stop`) and start the [install](#install). (APT will do it automatically)
You need to stop Log2Ram (`service log2ram stop`) and execute the [installation](#installation) process. If you used APT, this will be done automatically. ## Customize
#### variables :
## Customization
#### Variables
In the file `/etc/log2ram.conf`, there are five variables: In the file `/etc/log2ram.conf`, there are five variables:
- `SIZE`: defines the size the log folder will reserve into the RAM (default is 40M). - `SIZE`: defines the size the log folder will reserve into the RAM (default is 40M).
@ -86,19 +74,18 @@ In the file `/etc/log2ram.conf`, there are five variables:
- `PATH_DISK`: activate log2ram for other path than default one. Paths should be separated with a `;`. - `PATH_DISK`: activate log2ram for other path than default one. Paths should be separated with a `;`.
- `ZL2R`: enable zram compatibility (`false` by default). Check the comment on the config file. See https://github.com/StuartIanNaylor/zram-swap-config to configure a zram space on your raspberry before enable this option. - `ZL2R`: enable zram compatibility (`false` by default). Check the comment on the config file. See https://github.com/StuartIanNaylor/zram-swap-config to configure a zram space on your raspberry before enable this option.
#### Refresh time #### refresh time:
By default Log2Ram writes to disk every day. If you think this is too much, you can run `systemctl edit log2ram-daily.timer` and add:
By default, Log2Ram writes to disk every day. If you think this is too much, you can run `systemctl edit log2ram-daily.timer` and for example add:
```ini ```ini
[Timer] [Timer]
OnCalendar= OnCalendar=
OnCalendar=Mon *-*-* 23:55:00 OnCalendar=Mon *-*-* 23:55:00
``` ```
... Or even disable it altogether with `systemctl disable log2ram-daily.timer`, if you instead prefer Log2Ram to be writing logs only on system stops/reboots. ... or even disable it with `systemctl disable log2ram-daily.timer`, if you prefer writing logs only at stop/reboot.
#### Compressor #### compressor:
Compressor for ZRAM. Useful for the `COMP_ALG` of ZRAM on the config file. Compressor for zram. Usefull for the `COMP_ALG` of ZRAM on the config file.
| Compressor name | Ratio | Compression | Decompress. | | Compressor name | Ratio | Compression | Decompress. |
|------------------------|----------|-------------|-------------| |------------------------|----------|-------------|-------------|
@ -117,50 +104,41 @@ Compressor for ZRAM. Useful for the `COMP_ALG` of ZRAM on the config file.
### Existing content in `/var/log` too large for RAM ### Existing content in `/var/log` too large for RAM
One thing that stops Log2Ram from functioning is if `/var/log` is too large before starting Log2Ram the first time. This can happen if logs had been collected for a long time before installing Log2Ram itself. Find the largest directories in `/var/log` (this example command only shows the 3 largest): One thing that stops Log2Ram from starting is if `/var/log` is to large before starting Log2Ram the first time. This can happen if logs had been collected for a long time before installing Log2Ram. Find the largest directories in `/var/log` (this commands only shows the 3 largest):
```bash ```
sudo du -hs /var/log/* | sort -h | tail -n 3 sudo du -hs /var/log/* | sort -h | tail -n 3
``` ```
If the `/var/log/journal` is very large, then there are a lot of system logs. Deletion of old "archived" logs can be fixed by adjusting a setting. Edit the `/etc/systemd/journald.conf` file and add the following option: If the `/var/log/journal` is very large, then there are a lot of system logs. Deletion of old "archived" logs can be fixed by adjusting a setting. Edit the `/etc/systemd/journald.conf` file and add the following option:
```bash ```
SystemMaxUse=20M SystemMaxUse=20M
``` ```
This should be set to a value smaller than the size of the RAM volume; for example, half of it could be fine. Then, apply the new setting: This should be set to a value smaller than the size of the RAM volume, for example half. Then apply the new setting:
```bash ```
sudo systemctl restart systemd-journald sudo systemctl restart systemd-journald
``` ```
This should shrink the size of "archived" logs to be below the newly imposed limit. Reboot and check that Log2Ram now works properly: This should shrink the size of "archived" logs to be below the limit. Reboot and check that Log2Ram succeds:
```bash
sudo reboot
``` ```
sudo reboot
Wait until system reboots...
```bash
systemctl status log2ram systemctl status log2ram
``` ```
## Uninstallation :( ## Uninstall :(
(Because sometime we need it)
(Because sometimes we need it) ### With APT
```
### Via APT
```bash
sudo apt remove log2ram sudo apt remove log2ram
``` ```
You can use `--purge` to remove config files as well.
You can add the `--purge` argument to remove Log2Ram config files as well.
### Manually ### Manually
```
```bash
chmod +x /usr/local/bin/uninstall-log2ram.sh && sudo /usr/local/bin/uninstall-log2ram.sh chmod +x /usr/local/bin/uninstall-log2ram.sh && sudo /usr/local/bin/uninstall-log2ram.sh
``` ```

View File

@ -9,9 +9,7 @@ install -m 644 log2ram.service /etc/systemd/system/log2ram.service
install -m 644 log2ram-daily.service /etc/systemd/system/log2ram-daily.service install -m 644 log2ram-daily.service /etc/systemd/system/log2ram-daily.service
install -m 644 log2ram-daily.timer /etc/systemd/system/log2ram-daily.timer install -m 644 log2ram-daily.timer /etc/systemd/system/log2ram-daily.timer
install -m 755 log2ram /usr/local/bin/log2ram install -m 755 log2ram /usr/local/bin/log2ram
if [ ! -f /etc/log2ram.conf ]; then install -m 644 log2ram.conf /etc/log2ram.conf
install -m 644 log2ram.conf /etc/log2ram.conf
fi
install -m 644 uninstall.sh /usr/local/bin/uninstall-log2ram.sh install -m 644 uninstall.sh /usr/local/bin/uninstall-log2ram.sh
systemctl enable log2ram.service log2ram-daily.timer systemctl enable log2ram.service log2ram-daily.timer