
# Rancher Monitoring 배포

## 1. 배포 방법

- 배포 전 `rancher-monitoring-crd`가 배포되었는 지 확인 후 배포한다.
- 명령어

  ``` sh
  $ helm upgrade rancher-monitoring --install \
    --namespace cattle-monitoring-system --create-namespace \
    ../rancher-monitoring -f ./custom-values.yaml
  ```


## 2.custom-values.yaml 설명

- custom-values.yaml에 정의된 값에 대한 설명이다.

### 1) 오프라인 설정
- private 환경 배포시 사용한다.

| Name                   | 설명                                                         | 기본값 |
| ---------------------- | ------------------------------------------------------------ | ------ |
| `global.cattle.systemDefaultRegistry` | 오프라인 설치 시에 설정. <br />paasup 설치시에는 "paasup.io"로 설정 | `""`   |

### 2) grafana 설정

- grafana의 리소스를 설정한다.

| Name                     | 설명                               | 기본값    |
| ------------------------ | ---------------------------------- | --------- |
| `grafana.resources`    | grafana pod의 resource 설정.       | `custom-values.yaml 참조`  |

### 3) prometheus 설정

- prometheus의 리소스를 설정한다.
- 리소스 설정시 `retensionSize`의 크기를 volume 크기보다 크게 설정하지 않도록 주의한다.

| Name                     | 설명                               | 기본값    |
| ------------------------ | ---------------------------------- | --------- |
| `prometheus.prometheusSpec.resources`    | prometheus pod의 resource 설정.       | `custom-values.yaml 참조`  |
| `prometheus.prometheusSpec.scrapeInterval`    | prometheus scrape_interval 설정. 수집 주기 설정       | `1m`  |
| `prometheus.prometheusSpec.evaluationInterval`    | prometheus evaluation_interval 설정. alert에 대한 평가 주기.        | `1m`  |
| `prometheus.prometheusSpec.retention`    | prometheus 메트릭 보관 주기 설정.        | `30d`  |
| `prometheus.prometheusSpec.retentionSize`    | 메트릭 보관 용량 설정.        | `10GB`  |
| `prometheus.prometheusSpec.storageSpec`    | Prometheus의 볼륨 설정.         | `10GB`  |

### 4) alertmanager 설정

| Name                     | 설명                               | 기본값    |
| ------------------------ | ---------------------------------- | --------- |
| `alertmanager.alertmanagerSpec.resources`    | alert manager의 resource 설정.       | `custom-values.yaml 참조`  |

### 5) cluster 별 Monitoring 설정

- rke, rke2, kubeadm, k3s 4가지 배포판에 대한 모니터링을 지원한다.
- 각 배포판 별 value를 `enabled: true`로 설정하여 메트릭을 수집할 수 있다.

#### rke2

``` yaml
rke2ControllerManager:
  enabled: false
rke2Etcd:
  enabled: false
rke2Proxy:
  enabled: false
rke2Scheduler:
  enabled: false
rke2IngressNginx:
  enabled: false
```

#### rke

``` yaml
rkeControllerManager:
  enabled: false
rkeEtcd:
  enabled: false
rkeProxy:
  enabled: false
rkeScheduler:
  enabled: false
rkeIngressNginx:
  enabled: false
```

#### kubeadm

``` yaml
kubeAdmControllerManager:
  enabled: false
kubeAdmScheduler:
  enabled: false
kubeAdmProxy:
  enabled: false
kubeAdmEtcd:
  enabled: false
```

#### k3s

``` yaml
k3sServer:
  enabled: false
```

### 6) ingress nginx

- 클러스터에 ingress nginx를 배포했을 때 해당 옵션을 `enabled: true`로 설정하여 메트릭 수집할 수 있다.

``` yaml
ingressNginx:
  enabled: false
  namespace: ingress-nginx
```
