我们正在尝试用Grafana和Prometheus Operator监控K8S
大多数指标都按预期工作,我能够看到具有正确值的仪表板,我们的系统包含10个节点,总共500个pod,现在当我重新启动Prometheus时,所有数据都被删除了(我希望它存储为两个我的问题是,如何定义Prometheus音量以保持数据两周或100GB DB
。我找到了以下(我们用户Prometheus运营商)
https://github.com/coreos/prometheus-operator/blob/master/Documentation/user-guides/storage.md
这是Prometheus操作员的配置
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
我应该在哪里找到这个“/ path / to / prom / db”?我怎么能参考呢?我应该以某种方式创建它,或者只提供路径。我们在系统中配置了nfs
- 如何将它与普罗米修斯结合起来
由于我对qazxsw poi和qazxsw poi没有深入的了解,我创造了以下内容(不确定这些值,我的服务器是什么,我应该提供什么样的路径......
pvc
我应该把它放在那里以及我如何制作我的普罗米修斯(即我在问题中提供的配置)来使用它
pv
如果除了server: myServer
path: "/path/to/prom/db"
之外还有其他任何持久性卷,我可以用于我的用例请咨询如何
您必须使用持久性卷和卷声明(PV和PVC)来保留持久数据。您可以参考“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
例如https://kubernetes.io/docs/concepts/storage/persistent-volumes/(默认情况下,普罗米修斯保存数据15天)。
要完全删除数据,请使用此API调用:
--storage.tsdb.retention
编辑
Kubernetes片段样本
--storage.tsdb.retention='7d'
请参考以下代码。将storage-retention定义为7d或configmap中所需的保留天数,并将其作为env变量加载到容器中,如下所示
$ curl -X POST -g 'http://<your_host>:9090/api/v1/admin/tsdb/<your_index>'
您可能需要在prometheus操作员文件中调整这些设置
我最近开始使用操作员图表,
并设法在不定义pv和pvc的情况下添加持久性。
在新图表配置中,添加持久性比您描述的更容易,只需在prometheus.prometheusSpec下编辑文件/helm/vector-chart/prometheus-operator-chart/values.yaml:
...
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
...
并添加此/helm/vector-chart/prometheus-operator-chart/templates/prometheus/storageClass.yaml:
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
这将自动创建pv和pvc,它将在aws中创建一个ebs,它将存储您的所有数据。