home-assistant.io/source/_integrations/systemmonitor.markdown
Brazier85 3a1356eb9b
Added docs for ip command (#25737)
Co-authored-by: Franck Nijhof <frenck@frenck.nl>
2023-01-13 09:46:05 +01:00

189 lines
6.6 KiB
Markdown

---
title: System Monitor
description: Instructions on how to monitor the Home Assistant host.
ha_category:
- System Monitor
ha_release: pre 0.7
ha_iot_class: Local Push
ha_domain: systemmonitor
ha_platforms:
- sensor
ha_integration_type: integration
---
The `systemmonitor` sensor platform allows you to monitor disk usage,
memory usage, CPU usage, and running processes.
To add this platform to your installation,
add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /config
- type: memory_free
```
{% configuration %}
resources:
description: Contains all entries to display.
required: true
type: list
keys:
type:
description: The type of the information to display, please check the table below for details.
required: true
arg:
description: Argument to use, please check the table below for details.
required: false
{% endconfiguration %}
After restarting Home Assistant, these sensors will show up and update their
information every 15 seconds.
The table contains types and their argument to use in your `configuration.yaml`
file.
| Type (`type:`) | Argument (`arg:`) | Argument mandatory |
| :--------------------- |:--------------------------|:--------------------------|
| disk_use_percent | Path, e.g., `/` | no |
| disk_use | Path, e.g., `/` | no |
| disk_free | Path, e.g., `/` | no |
| memory_use_percent | | |
| memory_use | | |
| memory_free | | |
| swap_use_percent | | |
| swap_use | | |
| swap_free | | |
| load_1m | | |
| load_5m | | |
| load_15m | | |
| network_in | Interface, e.g., `eth0` | yes |
| network_out | Interface, e.g., `eth0` | yes |
| throughput_network_in | Interface, e.g., `eth0` | yes |
| throughput_network_out | Interface, e.g., `eth0` | yes |
| packets_in | Interface, e.g., `eth0` | yes |
| packets_out | Interface, e.g., `eth0` | yes |
| ipv4_address | Interface, e.g., `eth0` | yes |
| ipv6_address | Interface, e.g., `eth0` | yes |
| processor_use | | |
| processor_temperature | | |
| process | Binary, e.g., `octave-cli` | yes |
| last_boot | | |
## Disk usage
If no path is provided via the optional argument, the integration defaults to '/' (root).
**Note:** The disk usage sensors do not support monitoring folder/directory sizes. Instead, it is only concerned with "disks" (more specifically mount points on Linux).
```bash
$ df -H
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 12G 16G 42% /
devtmpfs 805M 0 805M 0% /dev
tmpfs 934M 0 934M 0% /dev/shm
/dev/mmcblk0p1 253M 54M 199M 22% /boot
```
Defining a `disk_use` sensor for `/` and `/home/pi` is redundant and will return the same values, since they both belong to the same "disk". However, defining separate sensors for `/dev` and `/dev/shm` is possible and provides different values, since those are treated as separate "disks" by the integration.
```yaml
# Example configuration.yaml entry
sensor:
- platform: systemmonitor
resources:
- type: disk_use
arg: /dev
- type: disk_use
arg: /dev/shm
```
## Processor temperature
- If no hardware sensor data is available (e.g., because the integration runs in a virtualized environment), the sensor entity will not be created.
- The unit of measurement (Celsius vs. Fahrenheit) will be chosen based on the system configuration.
- Only the very first processor related hardware sensor is read, i.e., no individual core temperatures (even if the hardware sensor could provide that level of detail).
## Linux specific
To retrieve all available network interfaces on a Linux System, execute the
`ifconfig` or `ip` command. The command differs based on your operation system and version.
```bash
ifconfig -a | sed 's/[ \t].*//;/^$/d'
```
```bash
ip link show
```
## Windows specific
When running this platform on Microsoft Windows, Typically,
the default interface would be called `Local Area Connection`,
so your configuration might look like:
```yaml
sensor:
- platform: systemmonitor
resources:
- type: network_in
arg: "Local Area Connection"
```
If you need to use some other interface, open a command line prompt and type `ipconfig` to list all interface names. For example a wireless connection output from `ipconfig` might look like:
```bash
Wireless LAN adapter Wireless Network Connection:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
```
Where the name is `Wireless Network Connection`.
## All available resources
```yaml
# Example configuration.yaml entry with all entry types (delete/comment out as necessary)
sensor:
- platform: systemmonitor
resources:
- type: disk_use_percent
arg: /config
- type: disk_use
- type: disk_free
- type: memory_use_percent
- type: memory_use
- type: memory_free
- type: swap_use_percent
- type: swap_use
- type: swap_free
- type: load_1m
- type: load_5m
- type: load_15m
- type: network_in
arg: eth0
- type: network_out
arg: eth0
- type: throughput_network_in
arg: eth0
- type: throughput_network_out
arg: eth0
- type: packets_in
arg: eth0
- type: packets_out
arg: eth0
- type: ipv4_address
arg: eth0
- type: ipv6_address
arg: eth0
- type: processor_use
- type: processor_temperature
- type: last_boot
```