add: Под с SmokePing

This commit is contained in:
Sergei Erjemin 2025-05-23 20:33:56 +03:00
parent d6c747f7c6
commit 010d85a0ce
2 changed files with 209 additions and 0 deletions

View File

@ -18,6 +18,7 @@
* [Перенос контейнера Docker в k3s](kubernetes/k3s-migrating-container-from-docker-to-kubernetes.md) (на примере Gitea) * [Перенос контейнера Docker в k3s](kubernetes/k3s-migrating-container-from-docker-to-kubernetes.md) (на примере Gitea)
* [Резервное копирование k3s](kubernetes/k3s-backup.md) * [Резервное копирование k3s](kubernetes/k3s-backup.md)
* [Настройка доступа к панелям управления](kubernetes/k3s-setting-up-web-access-to-dashboard.md) Longhorn и Traefik * [Настройка доступа к панелям управления](kubernetes/k3s-setting-up-web-access-to-dashboard.md) Longhorn и Traefik
* [Под с SmokePing](kubernetes/k3s_smokeping.md)
## Python ## Python
* [Устранение проблем при установке Python-коннектора mysqlclient (MySQL/MariaDB)](python/python-mysql.md) * [Устранение проблем при установке Python-коннектора mysqlclient (MySQL/MariaDB)](python/python-mysql.md)

208
kubernetes/k3s_smokeping.md Normal file
View File

@ -0,0 +1,208 @@
# Контейнер со smokeping в k3s
Полная жопа с домашним интеренетом? А поддержка провайдера, типа МГТС или Ростелеком, отвечает: "Проблем на линии нет,
у нас все работает"? А может быть, вы хотите следить за доступностью и сетевыми задержками в доступности своих серверов
в разных локациях, или в домашней сети?.. Smokeping -- это то, что вам нужно! Не такой громоздкий, как Zabbix,
и не такой сложный в настройке, как Grafana (хотя к Grafana его тоже можно подключить), и главное супер-компактный
и легкий.
И так, все манифесты в одном файле. Только поменяйте в манифесте `smokeping-config` меню, название и IP-адреса
на свои, и укажите на какое доменное имя публикуете веб-панель (у меня -- http://sp.local). Ну и читайте пояснения
и комментарии внутри манифестов:
```yaml
# ~/k3s/smokeping/smokeping.yaml
# Все манифесты для smokeping
# Манифест создания пространства имён `smokeping`. Если оно уже есть — kubectl apply ничего не изменит (т.е. безопасно.)
apiVersion: v1
kind: Namespace
metadata:
name: smokeping
---
# Манифест ConfigMap с конфигурацией Targets для smokeping
apiVersion: v1
kind: ConfigMap
metadata:
name: smokeping-config
namespace: smokeping
data:
# Это содержимое файла Targets. Здесь указываем, кого пинговать.
Targets: |
*** Targets ***
probe = FPing
menu = Top
title = Network Latency Grapher
remark = Привет тебе, путник. SmokePing website of Campany.\
Тут ты узнаешь все о задержках в вашей сети.
+ HOME
menu = HOME
title = HOME
++ Router
menu = Router
title = Router
alerts = someloss
host = 192.168.1.1
++ NAS
menu = NAS
title = NAS
alerts = someloss
host = 192.168.1.xxx
++ K3S_VIP
menu = K3S_VIP
title = K3S_VIP
alerts = someloss
host = 192.168.1.xxx
++ YANDEX_ALISA
menu = YANDEX_ALISA
title = YANDEX_ALISA
alerts = someloss
host = 192.168.1.xxx
+ INTERNET
menu = INTERNET
title = INTERNET
++ HOSTING_RU
menu = Russia
title = MasterHost_ru
alerts = someloss
host = xxx.xxx.xxx.xxx
++ HOSTING_EU
menu = Sweden
title = xxxxxxx
alerts = someloss
host = xxx.xxx.xxx.xxx
++ HOSTING_AS
menu = Tureky
title = xxxxxxx
alerts = someloss
host = xxx.xxx.xxx.xxx
---
# Манифест PVC (Longhorn) -- том для хранения данных графиков, чтоб при перезапуске пода данные не пропадали
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: smokeping-data # Имя PVC-хранилища
namespace: smokeping # Пространство имен `smokeping`
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn # Используем Longhorn как класс хранения
resources:
requests:
storage: 256Mi # Хватит на мониторинг 20-30 узлов глубиной 1.5-2 года (!)
---
# Манифест для развертывания smokeping (Deployment)
apiVersion: apps/v1
kind: Deployment
metadata:
name: smokeping
namespace: smokeping
spec:
replicas: 1
selector:
matchLabels:
app: smokeping
template:
metadata:
labels:
app: smokeping
spec:
containers:
- name: smokeping
# image: ghcr.io/linuxserver-arm64v8/smokeping # dля arm64v8
image: linuxserver/smokeping # оригинальный образ smokeping, и он заработал на amd64
env:
- name: TZ # Указываем временную зону
value: Europe/Moscow # ...чтобы на графиках не было UTC
ports:
- containerPort: 80
volumeMounts: # Монтируем файл Targets из ConfigMap в нужное место в контейнере
- name: config
mountPath: /config/Targets # mountPath указывает, куда будет "вставлен" файл
subPath: Targets # subPath = берём только один файл из configMap
- name: data
mountPath: /data # Данные графиков в Longhorn (PVC)
volumes:
- name: config # Используем том ConfigMap с конфигурацией
configMap:
name: smokeping-config
- name: data # Используем PVC (Longhorn) для хранения данных
persistentVolumeClaim:
claimName: smokeping-data
---
# Service — внутренний сервис для доступа к smokeping по сети внутри кластера
apiVersion: v1
kind: Service
metadata:
name: smokeping
namespace: smokeping
spec:
selector:
app: smokeping
ports:
- protocol: TCP
port: 80 # порт внутри кластера
targetPort: 80 # порт, на котором работает контейнер
type: ClusterIP # только для доступа внутри кластера (Ingress подключится к нему)
---
# IngressRoute для Traefik (под твою конфигурацию)
# Это публикует smokeping по адресу http://sp.local (заменить на свой домен)
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: smokeping
namespace: smokeping
spec:
entryPoints:
- web # это должен быть один из entrypoints в Traefik (обычно "web" = порт 80)
routes:
- match: Host(`sp.local`) # доменное имя, по которому будет доступен сервис
kind: Rule
services:
- name: smokeping
port: 80
---
######## Это я пытался сделать редирект на favicon, но не заработало. У самого smokeping нет favicon, и это бесило.
# Манифест Middleware для перенаправление всех запросов к /favicon.ico на другой URL (к сожалению у smokeping нет favicon.ico).
#apiVersion: traefik.io/v1alpha1
#kind: Middleware
#metadata:
# name: favicon-redirect
# namespace: smokeping
#spec:
# redirectRegex:
# regex: "^/favicon\\.ico$"
# replacement: "http://ai.local/_graphmagnifier_118081.ico"
# permanent: true
```
Сохраним файл в `~/k3s/smokeping/smokeping.yaml` (или в другом месте, где вам удобно), и применим манифесты:
```bash
kubectl apply -f ~/k3s/smokeping/smokeping.yaml
```
После этого smokeping будет доступен по адресу http://sp.local (или по тому доменному имени, которое вы указали
в манифесте IngressRoute) и увидите занятные графики (только дождитесь пока данные соберутся, ну часок-другой):
![Примерно так выглядят графики](../images/k3s--pods-smokeping.png)