GrafanaとCloudWatchメトリックダッシュボードの展開について
14640 ワード
計量の柱
メトリクスは、我々がより多くの分散されたアプリケーション・アーキテクチャを採用するとき、ますます重要である観測可能性の主要な構成要素のうちの1つです.あなたがちょうどあなたの可観測性の旅に出発していて、datadogのような支払われたSaaSサービスの正当化を見つけるか、克服する厳しいバリアをすり減らすのを見つけるならば、あなたは簡単に最初に、あなたにメトリックコレクションがどのように働くかについてより良い把握をすることができて、あなたの現在のシステムに若干の洞察を提供するためにダッシュボードをつくることができるオープンソース解決を使用することから始めることができます.
このポストでは、我々はコミュニティによって作成されたダッシュボードで、最小限の労力でAWS弾性Kubernetesサービス(EKS)クラスタにGrafanaを展開するのに役立ついくつかの迅速なレシピを通過する予定です.それで、始めましょう.
目次
The quick 5-minute build
Grafana
The 10-minute build
要件
クイック5分ビルド
何を得る
セットアップ
ライノノアラ / レシピ
可観測性ツールを設定するためのレシピ集
レシピ
AWSとEKSのリソースを設定するためのレシピのコレクション
これは、人々に観察可能なツールを導入しようとして、それらをできるだけ簡単に彼らの基盤にそれらを加えるためのレシピを提供しようとすることの試みです、あなたがこれらのセットアップのほとんどがあなたの生産ニーズ(例えば、HA考慮、メンテナンスプロセス)のためにあまりに単純であるかもしれないとわかるかもしれないように、そして、私がこれらをよりよくして、レシピに単純化することができる方法を考えることができるならば.私は私の将来のセットアップで自分自身のためのレシピガイドとして、このリポジトリを更新します.
要件
このリポジトリには、すでに以下のツールがインストールされており、必要なIAM権限(管理者が望ましい)をterraformで使用することを前提としています
This is not a free tier compatible setup and any costs incurred will be bared by you and you…
View on GitHub
レシピリポジトリをクローンgithub.com/ryanoolala/recipes , この投稿を通してセットアップを参照するために使用します
IWAMの役割
私たちは、まず最初に、CloudWatchからメトリクスを取得するためにパーミッションを備えたIAMロールを作成します.そして、我々は役割を提供するためにTerraformを使用しています.そして、私の場合では、私は使用をしていますterragrunt , しかし、簡単に入力をコピーすることができ、代わりにterraformモジュール変数の入力に.
module "cloudwatch-iam" {
source = "git::https://gitlab.com/govtechsingapore/gdsace/terraform-modules/grafana-cloudwatch-iam?ref=1.0.0"
allow_role_arn = arn:aws:iam::{{ACCOUNT_ID}}:role/ryan20200826021839068100000001
name = "ryan"
}
The grafana cloudwatch iam モジュールはEKS ARNロールを受け取ります.これは、我々のGrafanaアプリケーションがノード上で動作し、このCloudWatchの役割を仮定することができ、AWS APIからメトリックをプルする権限があるからです.これは、grafana_role_arn = arn:aws:iam::{{ACCOUNT_ID}}:role/grafana-cloudwatch-role-ryan
グラファナ
ここでは興味深いことに、私たちはヘルム3を使用してgrafana展開されます.確認してください
kubectl
コンテキストをクラスタに設定し、このサービスをホストしたい場合、IAMの役割を作成したAWSアカウントに属します.データソースを作成します.YAMLファイルに以下の値を付けてください
assumeRoleArn
上記からのあなたの出力で.# file://datasource.yaml
datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: Cloudwatch
type: cloudwatch
isDefault: true
jsonData:
authType: arn
assumeRoleArn: "arn:aws:iam::{{ACCOUNT_ID}}:role/grafana-cloudwatch-role-ryan"
defaultRegion: "ap-southeast-1"
customMetricsNamespaces: ""
version: 1
# <bool> allow users to edit datasources from the UI.
editable: true
これはGrafanaを使用するように設定されているCloudWatchデータソースから始めることができますassumeRoleArn
CloudWatchメトリックの取得についてグラファナのインストール
$ helm install grafana stable/grafana -f https://github.com/ryanoolala/recipes/blob/master/metrics/grafana/5min/k8s/grafana/values.yaml -f datasource.yaml --create-namespace --namespace grafana
またはリポジトリをクローンした場合、場所datasource.yaml
into ./metrics/grafana/5min/k8s/grafana
ラン$ cd ./metrics/grafana/5min/k8s/grafana && make install.datasource
少しの間、あなたはGrafanaを走らせます$ kubectl get pod -n grafana
NAME READY STATUS RESTARTS AGE
grafana-5c58b66f46-9dt2h 2/2 Running 0 84s
ダッシュボードへのアクセスを取得するには$ kubectl port-forward svc/grafana -n grafana 8080:80
Forwarding from 127.0.0.1:8080 -> 3000
Forwarding from [::1]:8080 -> 3000
私にUIを見せてください!
移動するhttp://localhost:8080 そして、あなたはあなたのGrafana UIを見ます
あなたがこれらのダッシュボードがどこにロードされるかについて疑問に思っているならば、私は彼らを見つけましたgrafana's dashboard site , いくつかを選んで、
values.yaml
# https://github.com/ryanoolala/recipes/blob/master/metrics/grafana/5min/k8s/grafana/values.yaml#L364
dashboards:
default:
aws-ec2:
url: https://grafana.com/api/dashboards/617/revisions/4/download
aws-ebs:
url: https://grafana.com/api/dashboards/11268/revisions/2/download
aws-cloudwatch-logs:
url: https://grafana.com/api/dashboards/11266/revisions/1/download
aws-rds:
url: https://grafana.com/api/dashboards/11264/revisions/2/download
aws-api-gateway:
url: https://grafana.com/api/dashboards/1516/revisions/10/download
aws-route-53:
url: https://grafana.com/api/dashboards/11154/revisions/4/download
aws-ses:
url: https://grafana.com/api/dashboards/1519/revisions/4/download
aws-sqs:
url: https://grafana.com/api/dashboards/584/revisions/5/download
次は?
UIが編集して新しいダッシュボードを追加することができますが、この設定の永続的なストアを提供していないので、変更は永続的ではありません.それをよりよくしましょう!
10分体制
変更を保存するには、いくつかの方法があります.ブロックストア(EBS)ボリュームをインスタンスに付けて、ディスクに格納されている設定が最も簡単です.しかし、EBSはReadWriteMany
ストレージドライバは、可用性ゾーンと異なるEKSノード間でgrafanaインスタンスをスケールアウトできません.次の最も簡単な解決策は、私の意見では、AWSリレーショナルデータベースサービス(RDS)を利用して、Grafanaのための永続的なレイヤとして、自動バックアップと高可用性(HA)を完全に管理します.
何を得る
セットアップ
Postgres RDS
この例でPostgreresを使用しますが、GrafanaはMySQLとSQLITE 3をサポートしています.あなたが私がどのようにインスタンスを展開するためにterraformを使用したかについてわかっているならば、あなたは私のより多くを読むかもしれませんREADME .
あなたがterraformに慣れていないならば、これはわずかに複雑になるかもしれません、したがって、私はあなたがこれを必要とする10分の努力の下でそれを保つために非常により簡単でより速いであるAWSコンソールを使っているPostgresをつくることを提案します.
グラファナ
Postgresデータベースの設定があるので、Kubernetes秘密のオブジェクトを作成して、接続に必要な資格情報を格納します.
$ cd ./metrics/grafana/10min/k8s/grafana
$ make secret
Removing old grafana-db-connection...
secret "grafana-db-connection" deleted
Postgres Host?:
mydbhost.com
Postgres Username?:
myuser
Postgres Password? (keys will not show up in the terminal):
Attempting to create secret 'grafana-db-connection'...
secret/grafana-db-connection created
この秘密grafana-db-connection
で使用されますvalues.yaml
また、環境を設定しますGF_DATABASE_TYPE
to postgres
.# https://github.com/ryanoolala/recipes/blob/cf7839e9e919735c72fee77450d891f8ee13ef17/metrics/grafana/10min/k8s/grafana/values.yaml#L268
## Extra environment variables that will be pass onto deployment pods
env:
GF_DATABASE_TYPE: "postgres"
# https://github.com/ryanoolala/recipes/blob/cf7839e9e919735c72fee77450d891f8ee13ef17/metrics/grafana/10min/k8s/grafana/values.yaml#L282
envFromSecret: "grafana-db-connection"
これらの変更を行うと、現在の配備されているGrafanaをhelm upgrade grafana stable/grafana -f values.yaml --namespace grafana
, または、あなたが新鮮なセットアップから始めているならば、$ helm install grafana stable/grafana -f https://github.com/ryanoolala/recipes/blob/master/metrics/grafana/10min/k8s/grafana/values.yaml --create-namespace --namespace grafana
または、あなたが倉庫をクローン化したならば$ cd ./metrics/grafana/10min/k8s/grafana && make install
この新しいGrafanaでは、システムの変更を行い、DataSourcesとダッシュボードを追加し、データベース内のこれらの変更を保存することができます.したがって、インスタンスの再起動について心配する必要はなく、再度やり直す必要があります.ログイン
編集するには、管理者ユーザーを使用してログインする必要があります、デフォルトのユーザー名とパスワードをインストール中に、次の変更によって設定することができますvalues.yaml
# Administrator credentials when not using an existing secret (see below)
adminUser: admin
adminPassword: strongpassword
Grafanaが開始された後、我々は代わりにUI上のパスワードを変更することができますし、新しいパスワードは、将来のログインセッションのデータベースに格納されます.
ラッピング
うまくいけば、これはあなたがGrafanaのヘルムチャートを使用してCloudWatchメトリックダッシュボードを表示するように設定する方法のアイデアを与えた.
次のパートでは、私たちはPrometheusを配備することについてより多くを共有します.そして、それは我々にKerbernetesクラスタの中でより多くの洞察を提供します.これらの情報は、我々の配備されたアプリケーションをよりよく理解する助けとなるでしょう.
Reference
この問題について(GrafanaとCloudWatchメトリックダッシュボードの展開について), 我々は、より多くの情報をここで見つけました
https://dev.to/mcf/getting-started-in-deploying-grafana-and-prometheus-2ac3
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
# Administrator credentials when not using an existing secret (see below)
adminUser: admin
adminPassword: strongpassword
うまくいけば、これはあなたがGrafanaのヘルムチャートを使用してCloudWatchメトリックダッシュボードを表示するように設定する方法のアイデアを与えた.
次のパートでは、私たちはPrometheusを配備することについてより多くを共有します.そして、それは我々にKerbernetesクラスタの中でより多くの洞察を提供します.これらの情報は、我々の配備されたアプリケーションをよりよく理解する助けとなるでしょう.
Reference
この問題について(GrafanaとCloudWatchメトリックダッシュボードの展開について), 我々は、より多くの情報をここで見つけました https://dev.to/mcf/getting-started-in-deploying-grafana-and-prometheus-2ac3テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol