這是本文件的舊版!
在 K3s 環境透過 Rancher 建立 LibreNMS
- 採用 K3s 環境已經定義好的
- ingress + tls → librenms.k3s.ichiayi.com
- nfs storage
- 使用官方提供的 helm chart 進行安裝配置
安裝程序
- 加入 helm repo
helm repo add librenms https://www.librenms.org/helm-charts helm repo update
- 產生 appkey Exp.
$ echo "base64:$(head -c 32 /dev/urandom | base64)" base64:SkGsCIF2TZtQZx8swneh80I1sHQ3AYRD8UCkeze70Bs=
- 設定配置檔 librenms-values.yaml
# ======================================== # 完整、可直接使用的 librenms-values.yaml # ======================================== global: storageClass: "nfs-client" # 你的 NFS provisioner 名稱 # ---------- 主要 LibreNMS ---------- librenms: appkey: "base64:SkGsCIF2TZtQZx8swneh80I1sHQ3AYRD8UCkeze70Bs=" timezone: "Asia/Taipei" # 分散式 poller 必要設定 configuration: |- $config['distributed_poller'] = true; $config['distributed_poller_group'] = 0; $config['poller_id'] = php_uname('n'); image: repository: librenms/librenms tag: "24.5.0" pullPolicy: IfNotPresent # 讓所有 pod 都從 secret 讀資料庫密碼與 APP_KEY(安全) extraEnv: - name: APP_KEY valueFrom: secretKeyRef: name: librenms-secret key: app-key - name: DB_HOST value: "librenms-mysql" - name: DB_DATABASE value: "librenms" - name: DB_USERNAME value: "librenms" - name: DB_PASSWORD valueFrom: secretKeyRef: name: librenms-secret key: db-password # 關鍵:讓 /opt/librenms 完整掛到 NFS(包含所有 rrd) persistence: enabled: true storageClass: "nfs-client" accessModes: - ReadWriteMany size: 50Gi # 建議一次給大,rrd 很吃空間 mountPath: /opt/librenms # 必須掛在這裡 # 自動建立 admin 帳號 + 第一次安裝 extraInitContainers: - name: librenms-setup image: librenms/librenms:24.5.0 command: ["/bin/bash", "-c"] args: - | # 第一次安裝 if [ ! -f /opt/librenms/.env ] || ! grep -q "APP_KEY=" /opt/librenms/.env; then echo "Running librenms:install..." php /opt/librenms/artisan librenms:install --no-interaction fi # 建立 admin 帳號(不會重複建立) if ! php /opt/librenms/artisan user:list --no-ansi | grep -q "admin.*Administrator"; then echo "Creating default admin user..." php /opt/librenms/artisan user:add admin \ --password=librenms \ [email protected] \ --role=admin \ --name="Administrator" \ --no-interaction fi chown -R librenms:librenms /opt/librenms volumeMounts: - name: data mountPath: /opt/librenms frontend: replicas: 1 resources: requests: cpu: 250m memory: 512Mi limits: cpu: 1000m memory: 1Gi poller: replicas: 3 resources: requests: cpu: 500m memory: 1Gi limits: cpu: 2000m memory: 2Gi # ---------- RRDcached(獨立大容量 NFS) ---------- rrdcached: enabled: true persistence: enabled: true journal: enabled: true size: 2Gi storageClass: "nfs-client" accessMode: ReadWriteMany rrdcached: enabled: true size: 100Gi # 真正吃空間的地方,建議 50~200Gi storageClass: "nfs-client" accessMode: ReadWriteMany envs: - name: TZ value: "Asia/Taipei" # ---------- MySQL ---------- mysql: enabled: true architecture: standalone auth: database: librenms username: librenms existingSecret: librenms-secret existingSecretPasswordKey: db-password rootPassword: "change_me_root" primary: persistence: enabled: true size: 20Gi storageClass: "nfs-client" accessModes: - ReadWriteOnce resources: requests: cpu: 250m memory: 1Gi # ---------- Redis ---------- redis: enabled: true architecture: standalone auth: enabled: false master: persistence: enabled: true size: 2Gi storageClass: "nfs-client" accessModes: - ReadWriteOnce # ---------- Ingress ---------- ingress: enabled: true className: nginx annotations: nginx.ingress.kubernetes.io/proxy-body-size: "64m" nginx.ingress.kubernetes.io/ssl-redirect: "true" hosts: - host: librenms.k3s.ichiayi.com paths: - path: / pathType: Prefix tls: - secretName: wildcard-k3s-ichiayi-com-tls hosts: - librenms.k3s.ichiayi.com
- 執行安裝
helm install librenms -f librenms-values.yaml librenms/librenms- 如果安裝後要調整參數(修改 librenms-values.yaml), 需要修改後執行 helm upgrade
helm upgrade librenms -f librenms-values.yaml librenms/librenms
- 進入 Librenms 網頁 Exp. https://librenms.k3s.ichiayi.com
- 預設帳號密碼 admin / librenms
FAQ
1. 如果無法使用預設帳號密碼登入
- 找到 frontend 的 pod(或任意一個 librenms pod 都可以)
- 在容器內部執行建立帳號指令
php /opt/librenms/artisan user:add admin \ --password=librenms \ [email protected] \ --role=admin
