grafanaとPrometheusオペレーターでK8Sを監視しようとしています
ほとんどのメトリックは期待どおりに機能しており、ダッシュボードを正しい値で確認できました。システムには、全体で500ポッドのノードが10個あり、Prometheusを再起動すると、すべてのデータがdeleted(2週間保存したい)私の質問は、データを2週間保持するように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
これは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)があり、上記のストレージ構成が機能しない場合、私の質問は次のとおりです。
- ここで私が見逃しているのは、
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
以外の永続ボリュームがある場合は、方法についてアドバイスしてください
以下のコードを参照してください。以下に示すように、config-mapでstorage-retentionを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オペレーターファイルでこれらの設定を調整する必要がある場合があります
古いデータを削除するタイミングを決定するには、このスイッチを使用します--storage.tsdb.retention
例えば--storage.tsdb.retention='7d'
(デフォルトでは、Prometheusはデータを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
...
データを永続化するには、永続ボリュームとボリュームクレーム(PVおよびPVC)を使用する必要があります。 「 https://kubernetes.io/docs/concepts/storage/persistent-volumes/ "を参照して、上記のURLでプロビジョニング、再利用ポリシー、アクセスモード、ストレージタイプを注意深く確認する必要があります。
最近、オペレーターチャートの操作を開始しました。
そして、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-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の両方が作成され、awsにebsが作成され、内部にすべてのデータが保存されます。