ハブルの住民の皆さん、こんにちは!
今日は、OpenShift クラスター内の postgres とその他のいくつかのエンティティを実際にどのように監視したかったのか、またそれをどのように実行したかについて説明したいと思います。
入り口には次のようなものがありました。
- オープンシフト
- ヘルメット
- プロメテウス
Java アプリケーションを操作するには、すべてが非常に単純かつ透過的であり、より正確に言えば、次のようになります。
1) build.gradleへの追加
implementation "io.micrometer:micrometer-registry-prometheus"
2) 構成を使用して prometheus を実行する
- job_name: 'job-name'
metrics_path: '/actuator/prometheus'
scrape_interval: 5s
kubernetes_sd_configs:
- role: pod
namespaces:
names:
- 'name'
3) Grafana にディスプレイを追加する
私たちの名前空間の近くにあるベースを監視する瞬間が来るまでは、すべてが非常に単純で平凡でした (はい、これは悪いことです、誰もこれをしませんが、別のことが起こります)。
それはどのように機能しますか?
postgres と prometheus 自体を含むポッドに加えて、もう XNUMX つのエンティティ、エクスポーターが必要です。
抽象的な概念におけるエクスポータは、アプリケーションまたはサーバーからメトリクスを収集するエージェントです。 postgres エクスポータは Go で書かれており、データベース内で SQL スクリプトを実行するという原則に基づいて動作し、得られた結果を prometheus が受け取ります。 これにより、独自のメトリクスを追加して、収集されたメトリクスを拡張することもできます。
次のようにデプロイしてみましょう (deployment.yaml の例、バインディングなし)。
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: postgres-exporter
labels:
app: {{ .Values.name }}
monitoring: prometheus
spec:
serviceName: {{ .Values.name }}
replicas: 1
revisionHistoryLimit: 5
template:
metadata:
labels:
app: postgres-exporter
monitoring: prometheus
spec:
containers:
- env:
- name: DATA_SOURCE_URI
value: postgresdb:5432/pstgr?sslmode=disable
- name: DATA_SOURCE_USER
value: postgres
- name: DATA_SOURCE_PASS
value: postgres
resources:
limits:
cpu: 100m
memory: 50Mi
requests:
cpu: 100m
memory: 50Mi
livenessProbe:
tcpSocket:
port: metrics
initialDelaySeconds: 30
periodSeconds: 30
readinessProbe:
tcpSocket:
port: metrics
initialDelaySeconds: 10
periodSeconds: 30
image: exporter
name: postgres-exporter
ports:
- containerPort: 9187
name: metrics
サービスとイメージストリームも必要でした
導入後はぜひ皆さんに会っていただきたいと思っています。
次の部分を Prometheus 構成に追加します。
- job_name: 'postgres_exporter'
metrics_path: '/metrics'
scrape_interval: 5s
dns_sd_configs:
- names:
- 'postgres-exporter'
type: 'A'
port: 9187
そして、すべてがうまくいきました。残っているのは、これらすべてを grafana に追加して、結果を楽しむことだけです。
独自のクエリを追加する機能に加えて、prometheus の設定を変更して、よりターゲットを絞ったメトリクスを収集できます。
これは以下に対しても同様の方法で行われました。
- カフカ
- Elasticsearch
- モンゴ
PS 名前、ポートなどのすべてのデータは空から取得されたものであり、情報は含まれていません。
便利なリンク:
出所: habr.com