Используйте оператор Прометей с объемом БД для k8s
мы пытаемся контролировать K8S с Grafana и Prometheus Operator
большинство показателей работают должным образом, и я смог увидеть панель инструментов с правильным значением, наша система содержит 10 узлов с общим количеством 500 модулей, теперь, когда я перезапускаю Прометей, все данные были удалены (я хочу, чтобы они сохранялись в течение двух неделю) Мой вопрос: как определить объем Prometheus для хранения данных в течение двух недель или 100GB DB
данных объемом 100GB DB
. Я нашел следующее (мы пользователь оператор Прометей)
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
Это конфиг Прометея
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), и вышеупомянутая конфигурация хранилища не работает, мой вопрос:
- то, что я пропускаю здесь, это как настроить
volume
, server
, path
в следующем его в разделе nfs
где я должен найти этот "/путь/к/выпуску/БД"? как я могу сослаться на это? Должен ли я создать его как-то, или просто указать путь. в нашей системе настроены 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
который я могу использовать для своего nfs
использования, пожалуйста, сообщите, как
Ответы
Ответ 1
Вы должны использовать постоянный объем и требование объема (PV & PVC) для постоянных данных. Вы можете ссылаться на " https://kubernetes.io/docs/concepts/storage/persistent-volumes/ ", где необходимо внимательно изучить условия предоставления доступа, политику восстановления, режим доступа, тип хранилища в указанном выше URL-адресе.
Ответ 2
Чтобы определить, когда удалять старые данные, используйте этот переключатель --storage.tsdb.retention
например, --storage.tsdb.retention='7d'
(по умолчанию Прометей хранит данные в течение 15 дней).
Чтобы полностью удалить данные, используйте этот вызов API:
$ curl -X POST -g 'http://<your_host>:9090/api/v1/admin/tsdb/<your_index>'
РЕДАКТИРОВАТЬ
Пример фрагмента 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
...
Ответ 3
обратитесь к приведенному ниже коду. определите срок хранения для 7d или требуемые дни хранения в configmap и загрузите его как переменную 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
Ответ 4
Я недавно начал работать с операторской картой,
И удалось добавить постоянство без определения PV и ПВХ.
В новой конфигурации диаграммы добавить постоянство намного проще, чем вы описываете, просто отредактируйте файл /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-operator-chart/templates/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, который будет хранить все ваши данные внутри.