Added shared memory check

This commit is contained in:
Magnus Root 2026-04-30 17:01:13 +03:00
parent 51b6fe3ff8
commit bd531dd416
3 changed files with 46 additions and 2 deletions

View file

@ -96,6 +96,7 @@ need_soft:
- zoxide - zoxide
- logrotate - logrotate
- cron - cron
- lynx
smtp_host: smtp_host:
smtp_port: smtp_port:
smtp_user: smtp_user:

View file

@ -0,0 +1,27 @@
#!/bin/bash
OUTPUT="/var/lib/node_exporter/textfile_collector/shm_usage.prom"
TMP=$(mktemp)
echo "# HELP container_shm_usage_bytes Shared memory usage in bytes" > $TMP
echo "# TYPE container_shm_usage_bytes gauge" >> $TMP
echo "# HELP container_shm_size_bytes Shared memory total size in bytes" >> $TMP
echo "# TYPE container_shm_size_bytes gauge" >> $TMP
while IFS= read -r line; do
pid=$(echo "$line" | awk '{print $1}')
container=$(echo "$line" | awk '{print $2}' | tr -d '/')
if [ "$pid" = "0" ] || [ -z "$pid" ]; then continue; fi
df_out=$(nsenter -t "$pid" -m df -B1 /dev/shm 2>/dev/null | tail -1)
total=$(echo "$df_out" | awk '{print $2}')
used=$(echo "$df_out" | awk '{print $3}')
if [ -n "$used" ] && [ -n "$total" ]; then
echo "container_shm_usage_bytes{name=\"$container\"} $used" >> $TMP
echo "container_shm_size_bytes{name=\"$container\"} $total" >> $TMP
fi
done < <(docker ps -q | xargs docker inspect --format '{{.State.Pid}} {{.Name}}' 2>/dev/null)
mv $TMP $OUTPUT
chmod 644 $OUTPUT

View file

@ -20,8 +20,7 @@
dest: "{{ node_exporter_install_node_exporter_bin_path }}" dest: "{{ node_exporter_install_node_exporter_bin_path }}"
mode: '0755' mode: '0755'
remote_src: true remote_src: true
when: when: node_exporter_download_check is changed or node_exporter_version_check.stdout | length == 0
- node_exporter_download_check is changed or node_exporter_version_check.stdout | length == 0
ignore_errors: "{{ ansible_check_mode }}" ignore_errors: "{{ ansible_check_mode }}"
- name: Create node_exporter group (optional fixed GID) - name: Create node_exporter group (optional fixed GID)
@ -73,6 +72,23 @@
user: root user: root
when: inventory_hostname is match("^PTAF") when: inventory_hostname is match("^PTAF")
- name: Copy script shared memory check
ansible.builtin.copy:
src: files/collect-shm-metrics.sh
dest: /usr/local/bin/collect-shm-metrics.sh
owner: root
group: root
mode: '0744'
when: inventory_hostname is match("^PTAF")
- name: Create cron job for shared memory check
ansible.builtin.cron:
name: "Collect Docker shared memory check"
minute: "*/1"
job: "/usr/local/bin/collect-shm-metrics.sh"
user: root
when: inventory_hostname is match("^PTAF")
- name: Copy script for docker CPU check - name: Copy script for docker CPU check
ansible.builtin.copy: ansible.builtin.copy:
src: files/docker-cpu-metrics.sh src: files/docker-cpu-metrics.sh