這是本文件的舊版!


在 K3s 環境透過 Rancher 建立 LibreNMS

  • 採用 K3s 環境已經定義好的
    • ingress + tls → librenms.k3s.ichiayi.com
    • nfs storage
  • 使用官方提供的 helm chart 進行安裝配置
  1. 加入 helm repo

    helm repo add librenms https://www.librenms.org/helm-charts
    helm repo update

  2. 產生 appkey Exp.

    $ echo "base64:$(head -c 32 /dev/urandom | base64)"
    base64:SkGsCIF2TZtQZx8swneh80I1sHQ3AYRD8UCkeze70Bs=

  3. 設定配置檔 librenms-values.yaml
    librenms:
      appkey: "base64:dC6DWwcnR6zeFEhd3kgIO1PN3djVfVBhfiHCxjicOXw="
      timezone: "Asia/Taipei"
    
      configuration: |-
        $config['distributed_poller'] = true;
        $config['distributed_poller_group'] = 0;
        $config['rrdcached'] = "librenms-rrdcached:42217";
        ### RRD 設定
        $config['rrd_dir'] = "/data/rrd";
        $config['rrdtool_version'] = "1.8.0";
        ### 確保使用 UTC 時間戳
        $config['rrd']['step'] = 300;
        $config['rrd']['heartbeat'] = 600;
    
      image:
        repository: librenms/librenms
        tag: "25.11.0"
    
      frontend:
        replicas: 1
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
          limits:
            cpu: 500m
            memory: 1Gi
    
      poller:
        replicas: 3
        resources:
          requests:
            cpu: 500m
            memory: 1Gi
          limits:
            cpu: 1
            memory: 2Gi
     
      # ----------------------------------------------
      # RRDcached 服務 (不再包含 persistence 設定)
      # ----------------------------------------------
      rrdcached:
        enabled: true
    
        persistence:
          enabled: true
          journal:
            size: 1Gi
            storageClassName: "nfs-client"
          rrdcached:
            size: 10Gi	  
            storageClassName: "nfs-client"
     
        envs:
          - name: WRITE_JITTER
            value: "1800"
          - name: WRITE_TIMEOUT
            value: "1800"
          - name: LOG_LEVEL
            value: "LOG_INFO"
          # 關鍵:確保 rrdcached 監聽所有介面
          - name: LISTEN
            value: "0.0.0.0:42217"
    
        resources:
          requests:
            cpu: 100m
            memory: 500Mi
          limits:
            cpu: 500m
            memory: 1Gi
     
    # ----------------------------------------------
    # MySQL(採用 Bitnami 內建,可用 NFS 做為 PVC)
    # ----------------------------------------------
    mysql:
      enabled: true
      architecture: standalone
      image:
        repository: bitnamilegacy/mysql
      auth:
        rootPassword: "change_me_root"
        password: "change_me_librenms"
        database: "librenms"
        username: "librenms"
    
      primary:
        extraEnvVars:
          - name: TZ
            value: "Asia/Taipei"
          - name: MYSQL_EXTRA_FLAGS
            value: "--default-time-zone=+08:00"
    
        extraFlags: "--default-time-zone=+08:00 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"
    
        persistence:
          enabled: true
          size: 10Gi
          storageClass: nfs-client
          accessModes:
            - ReadWriteOnce   # MySQL 建議 RWO(安全)
        resources:
          requests:
            cpu: 200m
            memory: 512Mi
     
    # ----------------------------------------------
    # Redis(建議用 NFS PVC, 但也可用 emptyDir)
    # ----------------------------------------------
    redis:
      enabled: true
      architecture: standalone
      master:
        persistence:
          enabled: true
          size: 2Gi
          storageClass: nfs-client
          accessModes:
            - ReadWriteOnce
        resources:
          requests:
            cpu: 100m
            memory: 256Mi
     
    # ----------------------------------------------
    # Ingress
    # ----------------------------------------------
    ingress:
      enabled: true
      className: nginx
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/proxy-body-size: "64m"
        nginx.ingress.kubernetes.io/ssl-redirect: "false"  
      hosts:
        - host: librenms.k3s.ichiayi.com
          paths:
            - path: /
              pathType: Prefix
      tls:
        - secretName: wildcard-k3s-ichiayi-com-tls
          hosts:
            - librenms.k3s.ichiayi.com
  4. 執行安裝

    helm install librenms -f librenms-values.yaml librenms/librenms

    • 如果安裝後要調整參數(修改 librenms-values.yaml), 需要修改後執行 helm upgrade

      helm upgrade librenms -f librenms-values.yaml librenms/librenms

  5. 進入 Librenms 網頁 Exp. https://librenms.k3s.ichiayi.com
    • 預設帳號密碼 admin / librenms
  1. 找到 frontend 的 pod(或任意一個 librenms pod 都可以)
  2. 在容器內部執行建立帳號指令

    php /opt/librenms/artisan user:add admin \
      --password=librenms \
      [email protected] \
      --role=admin

  • 透過修改 librenms-values.yaml 內加入
    librenms:
    :
      snmp_scanner:
        enabled: true              # 啟用此項
        cron: "*/15 * * * *"      # 每 15 分鐘執行
        resources:
          requests:
            cpu: 200m
            memory: 256Mi
          limits:
            cpu: 500m
            memory: 1Gi
        securityContext:
          runAsUser: 1000
          runAsGroup: 1000
          fsGroup: 1000
    :

    執行 helm upgrade 讓修改生效

    helm upgrade librenms -f librenms-values.yaml librenms/librenms
  • tech/k3s/librenms.1764402742.txt.gz
  • 上一次變更: 2025/11/29 15:52
  • jonathan