Используйте оператор Прометей с объемом БД для k8s - PullRequest
17 голосов
/ 11 марта 2019

мы пытаемся отслеживать K8S с помощью Grafana и Prometheus Operator
большинство показателей работают так, как ожидалось, и я смог увидеть панель управления с правильным значением, наша система содержит 10 узлов с общим количеством 500 модулей, теперь, когдаЯ перезапускаю Prometheus, все данные были удалены (я хочу, чтобы они хранились в течение двух недель). Мой вопрос: как определить объем Prometheus для хранения данных в течение двух недель или 100GB DB.Я обнаружил следующее (мы пользователь Prometheus оператор)

https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md

Это конфигурация оператора Прометей

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  labels:
    k8s-app: prometheus-operator
  name: prometheus-operator
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: prometheus-operator
  template:
    metadata:
      labels:
        k8s-app: prometheus-operator
    spec:
      containers:
      - args:
        - --kubelet-service=kube-system/kubelet
        - --logtostderr=true
        - --config-reloader-image=quay.io/coreos/configmap-reload:v0.0.1
        - --prometheus-config-reloader=quay.io/coreos/prometheus-config-reloader:v0.29.0
        image: quay.io/coreos/prometheus-operator:v0.29.0
        name: prometheus-operator
        ports:
        - containerPort: 8080
          name: http

Это конфигурация Prometheus

    apiVersion: monitoring.coreos.com/v1
    kind: Prometheus
    metadata:
      name: prometheus
      namespace: monitoring
      labels: 
        prometheus: prometheus
    spec:
      replica: 2
      serviceAccountName: prometheus
      serviceMonitorNamespaceSelector: {}
      serviceMonitorSelector:
        matchLabels:
          role: observeable
      tolerations:
      - key: "WorkGroup"
        operator: "Equal"
        value: "operator"
        effect: "NoSchedule"
      - key: "WorkGroup"
        operator: "Equal"
        value: "operator"
        effect: "NoExecute"
      resources:
        limits:
          cpu: 8000m
          memory: 24000Mi
        requests:
          cpu: 6000m
          memory: 6000Mi
     storage:
       volumeClaimTemplate:
         spec:
        selector:
          matchLabels:
            app: prometheus
        resources:
          requests:
            storage: 100Gi

https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md

у нас есть файловая система (nfs), и вышеупомянутая конфигурация хранилища не 'т работает, мой вопрос:

  1. что мне не хватает здесь, это как настроить volume, server, path в следующем разделе в разделе nfs

где мне найти этот "/ path / to / prom / db"?как я могу сослаться на это?Должен ли я создать его как-то, или просто указать путь.в нашей системе настроены nfs

как объединить его с Прометеем

Поскольку у меня нет глубоких знаний в pvc и pv, я создал следующее (не уверен, что касается этих значений, чтомой сервер и какой путь я должен предоставить ...

server: myServer
path: "/path/to/prom/db"

что мне туда поставить и как сделать мой Прометей (т.е. конфигурацию, которую я указал в вопросе) для использованияэто

apiVersion: v1
kind: PersistentVolume
metadata:
  name: prometheus
  namespace: monitoring
  labels:
    app: prometheus
    prometheus: prometheus
spec:
  capacity:
    storage: 100Gi
  accessModes:
    - ReadWriteOnce # required
  nfs:
    server: myServer
    path: "/path/to/prom/db"

если есть какой-либо другой постоянный том, отличный от nfs, который я могу использовать для своего варианта использования, пожалуйста, сообщите как

Ответы [ 4 ]

1 голос
/ 26 марта 2019

Чтобы определить, когда удалять старые данные, используйте этот переключатель --storage.tsdb.retention

например. --storage.tsdb.retention='7d' (по умолчанию Прометей хранит данные в течение 15 дней).

Чтобы полностью удалить данные, используйте этот вызов API:

$ curl -X POST -g 'http://<your_host>:9090/api/v1/admin/tsdb/<your_index>'

EDIT

образец фрагмента Kubernetes

...
 spec:
      containers:
      - name: prometheus
        image: docker.io/prom/prometheus:v2.0.0
        args:
          - '--config.file=/etc/prometheus/prometheus.yml'
          - '--storage.tsdb.retention=7d'
        ports:
        - name: web
containerPort: 9090
...
1 голос
/ 28 марта 2019

см. Код ниже.определите срок хранения для 7d или требуемые дни хранения в файле конфигурации и загрузите его как переменную env в контейнер, как показано ниже

      containers:
      - name: prometheus
        image: image: prom/prometheus:latest
        args:
          - '--storage.tsdb.path=/prometheus'
          - '--storage.tsdb.retention=$(STORAGE_RETENTION)'
          - '--web.enable-lifecycle'
          - '--storage.tsdb.no-lockfile'
          - '--config.file=/etc/prometheus/prometheus.yml'
        ports:
        - name: web
          containerPort: 9090
        env:
        - name: STORAGE_RETENTION
          valueFrom:
            configMapKeyRef:
              name: prometheus.cfg
              key: storage-retention

. Возможно, вам придется настроить эти параметры в файлах оператора Prometheus

1 голос
/ 23 марта 2019

вы должны использовать постоянный объем и объем заявки (PV & PVC) для постоянных данных.Вы можете сослаться на "https://kubernetes.io/docs/concepts/storage/persistent-volumes/". Необходимо внимательно следить за предоставлением, политикой возврата, режимом доступа, типом хранения в приведенном выше URL.

0 голосов
/ 16 апреля 2019

Я недавно начал работать с диаграммой оператора,

И сумел добавить постоянство, не задавая pv и pvc.

В новой конфигурации диаграммы добавить постоянство гораздо проще, чем вы описываете, просто отредактируйтефайл /helm/vector-chart/prometheus-operator-chart/values.yaml в prometheus.prometheusSpec:

storageSpec:
  volumeClaimTemplate:
    spec:
      storageClassName: prometheus
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 10Gi
    selector: {}

и добавьте этот / helm / vector-chart / prometheus-оператор-диаграмма / шаблоны / прометей / storageClass.yaml :

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: prometheus
provisioner: kubernetes.io/aws-ebs
reclaimPolicy: Retain
parameters:
  type: gp2
  zones: "ap-southeast-2a, ap-southeast-2b, ap-southeast-2c"
  encrypted: "true"

Это автоматически создаст вас pv и pvc , которыесоздаст ebs в aws, в котором будут храниться все ваши данные.

...