0x0i.grafana
以下は、指定されたテキストの日本語への翻訳です。
Ansibleロール :rainbow: :bar_chart: Grafana
目次
Ansibleロールは、分析と監視のオブザーバビリティプラットフォームであるGrafanaをインストールおよび構成します。
サポートされているプラットフォーム:
* Debian
* Redhat(CentOS/Fedora)
* Ubuntu
要件
ターゲットホストにunzip/gtar
ユーティリティがインストールされている必要があります。詳しくは、ansibleのunarchive
モジュールのノートを参照してください。また、5.0以降に導入されたprovisioning
機能を使用するため、Grafanaのバージョンは5.0以上が必要です。
ロール変数
変数は、以下のソフトウェアおよびマシンプロビジョニングのステージに応じて利用可能で整理されています:
- install
- config
- launch
- uninstall
インストール
grafana
は圧縮アーカイブ(.tar
, .zip
)およびDEBおよびRPM配布パッケージを使用してインストールできます。これらはさまざまなソースからダウンロードされ、抽出されます。
インストールプロセスのさまざまな側面を制御するためにカスタマイズできる以下の変数があります。これにはソフトウェアのバージョンやバイナリのソースロケーション、保存先のインストールディレクトリが含まれます:
grafana_user: <service-user-name>
(デフォルト:grafana)
grafana_group: <service-group-name>
(デフォルト:grafana)
- Grafanaによって使用される専用のサービスユーザーとグループです(詳細についてはこちらを参照)。
install_type: <package | archive>
(デフォルト:archive)
package:DebianおよびRedhatディストリビューションでサポートされており、Grafanaのパッケージインストールは、指定されたパッケージをそれぞれのパッケージ管理リポジトリから取得します。
- インストールディレクトリはパッケージ管理システムによって決定され、現在すべてのディストリビューションで
/usr/{sbin,lib, share}
の下に設定されています。
- インストールディレクトリはパッケージ管理システムによって決定され、現在すべてのディストリビューションで
archive:tarおよびzipフォーマットの両方に互換性があり、アーカイブされたインストールバイナリは、公式のリリースインデックスや開発/カスタムソースから取得できます。
install_dir: </path/to/installation/dir>
(デフォルト:/opt/grafana
)
- ターゲットホスト上で
grafana
バイナリが抽出されるパスです。
archive_url: <path-or-url-to-archive>
(デフォルト:defaults/main.yml
を参照)
grafana
バイナリを含む圧縮されたtarまたはzipアーカイブのアドレスです。この方法は、実際に利用可能な任意のバージョンのgrafana
のインストールをサポートします。公式バージョンへのリンクはこちらで見つけられます。
archive_checksum: <path-or-url-to-checksum>
(デフォルト:defaults/main.yml
を参照)
- 指定された
grafana
アーカイブのデータ整合性を確認するためのチェックサムファイルのアドレスです。推奨されており、一般的にはベストプラクティスと見なされていますが、チェックサムの指定は必須ではありません。値として空文字列(''
)を指定することで無効にできます。
checksum_format: <string>
(デフォルト:sha256
を参照)
- 指定されたアーカイブチェックサムに関連付けられたファイル検証に使用されるハッシュアルゴリズムです。チェックサム/暗号学的ハッシュについての詳細はこちらを参照してください。
package_url: <path-or-url-to-package>
(デフォルト:defaults/main.yml
を参照)
grafana
バイナリを含むdebian(DEB)またはRPMパッケージのアドレスです。公式バージョンへのリンクはこちらで見つけられます。
package_checksum: <path-or-url-to-checksum>
(デフォルト:defaults/main.yml
を参照)
- 指定された
grafana
パッケージのデータ整合性を確認するためのチェックサムファイルのアドレスです。推奨されており、一般的にはベストプラクティスと見なされていますが、チェックサムの指定は必須ではありません。値として空文字列(''
)を指定することで無効にできます。
設定
このロールを使用すると、grafana
インストールの設定があります。その構成は以下のコンポーネントに整理されています:
- grafanaサービス設定(
grafana.ini
) - データソースのプロビジョニング(
provisioning/datasources - *.[json|yml]
) - ダッシュボードのプロビジョニング(
provisioning/dashboards - *.[json|yml]
) - 通知設定(
provisioning/notifiers - [json|yml]
)
各設定は、指定された設定ファイルの内容や設定をカスタマイズするために以下の変数の中で表現されます:
config_dir: </path/to/configuration/dir>
(デフォルト:{{ install_dir }}
)
- ターゲットホスト上で
grafana
設定ファイルがレンダリングされるパスです。
provision_configs: <['datasources', 'dashboards' and/or 'notifiers']>
(デフォルト:[])
- 設定するGrafanaプロビジョニングコンポーネントのリストです。詳細についてはこちらを参照してください。
Grafanaサービス設定
Grafanaサービス設定はINIファイルに含まれています。デフォルトではgrafana.iniという名前で、以下のサービスビヘイビアのセットがセクションによって整理されています。
これらのセクションと設定は、grafana_config
というハッシュ内で、設定セクションごとにキーとディクショナリの値を持つハッシュとして表現されます(例えば、sqlite3データベースファイルを保存するパスなど—デフォルトで有効化されています)。以下は、各セクションの概要と例の設定です。
:paths
[grafana_config:] path: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaがアーティファクトや変数データを保存する場所に関連するパラメータを指定します。
grafana_config:
# セクション [paths]
paths:
# セクションオプション1 - sqliteデータベースのパス
data: /mnt/data/grafana
# セクションオプション2 - ログを保存するパス
logs: /mnt/logs/grafana
[grafana_config:] server: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaがネットワーク経由でインターフェースできる方法に関連するパラメータを指定します。
grafana_config:
# セクション [server]
server:
http_addr: 127.0.0.1
http_port: 3030
:database
[grafana_config:] database: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaが利用可能なバックエンドデータストアタイプ(mysql, postgres, sqliteなど)とインターフェースする方法を制御するパラメータを指定します。
grafana_config:
# セクション [database]
database:
type: mysql
host: 127.0.0.1:3306
name: grafana-test
user: mysql-admin
password: PASSWORD
:remote_cache
[grafana_config:] remote_cache: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaが利用可能なリモートキャッシングタイプ(redis, memcached, databaseなど)とインターフェースする方法を制御するパラメータを指定します。
grafana_config:
# セクション [remote_cache]
remote_cache:
type: redis
connstr: addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false
:security
[grafana_config:] security: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaのユーザー/組織の認証および認可の動作を管理するパラメータを指定します。
grafana_config:
# セクション [security]
security:
admin_user: sre-user
admin_password: PASSWORD
login_remember_days: 7
:users
[grafana_config:] users: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaのユーザー機能を制御するパラメータを指定します。
grafana_config:
# セクション [users]
users:
allow_sign_up: true
allow_org_create: false
login_hint: THIS IS A HINT
:auth
[grafana_config:] auth: <key: value,...>
(デフォルト:詳細はセクションを参照)
- ユーザーの認可機能を規制するパラメータを指定します。
Grafanaは、ユーザーを認証するための複数の方法を提供しており、各方法の設定は適切に[auth.
grafana_config:
# セクション [auth.github] - 注: **github**は認証方法を示します
auth.github:
enabled: true
allow_sign_up: true
client_id: YOUR_GITHUB_APP_CLIENT_ID
client_secret: YOUR_GITHUB_APP_CLIENT_SECRET
scopes: user:email,read:org
auth_url: https://github.com/login/oauth/authorize
token_url: https://github.com/login/oauth/access_token
api_url: https://api.github.com/user
:dataproxy
[grafana_config:] dataproxy: <key: value,...>
(デフォルト:詳細はセクションを参照)
- データプロキシログを有効にするためのパラメータを指定します。
grafana_config:
# セクション [dataproxy]
dataproxy:
logging: true
timeout: 60
send_user_header: true
:analytics
[grafana_config:] analytics: <key: value,...>
(デフォルト:詳細はセクションを参照)
- 使用統計の収集とレポートを有効にするためのパラメータを指定します。
grafana_config:
# セクション [analytics]
analytics:
reporting_enabled: true
google_analytics_ua_id: UA_ID
check_for_updates: true
:dashboards
[grafana_config:] dashboards: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaのダッシュボードの管理ポリシーを制御するためのパラメータを指定します。
grafana_config:
# セクション [dashboards]
dashboards:
versions_to_keep: 5
:smtp
[grafana_config:] smtp: <key: value,...>
(デフォルト:詳細はセクションを参照)
- 身元認証およびアラート/通知のためのメールサーバー設定を指定します。
grafana_config:
# セクション [smtp]
smtp:
enabled: true
host: 127.0.0.1:65
user: smtp-user
password: PASSWORD
:log
[grafana_config:] log: <key: value,...>
(デフォルト:詳細はセクションを参照)
- ログ設定(例:ログレベルとログ出力モードやチャネル)を指定します。
grafana_config:
# セクション [log]
log:
mode: console
level: debug
:metrics
[grafana_config:] metrics: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaのテレメトリ出力を管理するための設定を指定します。
grafana_config:
# セクション [metrics]
metrics:
enabled: true
interval_seconds: 5s
metrics.graphite:
address: 127.0.0.1:7070
:snapshots
[grafana_config:] snapshots: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaのインタラクティブダッシュボードスナップショット機能の公開動作を管理するための設定を指定します。
grafana_config:
# セクション [snapshots]
snapshots:
external_enabled: true
external_snapshot_name: ENDPOINT
:external_image_storage
[grafana_config:] external_image_storage: <key: value,...>
(デフォルト:詳細はセクションを参照)
- 画像をサービス(例えば、Slack)上で共有するために公開する方法を管理するための設定を指定します。
Grafanaは、各バックエンドストレージプロバイダーに対する個別の設定を[external_image_storage.s3, gcs, azure blob, local storage
などのサービスでリモートストレージを有効にすることができます。
grafana_config:
# セクション [external_image_storage]
external_image_storage:
external_enabled: true
external_snapshot_name: Publish to ENDPOINT
external_image_storage.s3:
endpoint: http://example.org.s3/
bucket: grafana-snapshots
region: us-east-1
path: ${HOSTNAME}
access_key: ACCESS_KEY
secret_key: SECRET_KEY
:alerting
[grafana_config:] alerting: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaのアラートエンジンおよびその動作/ルールセットを管理するための設定を指定します。
grafana_config:
# セクション [alerting]
alerting:
enabled: true
execute_alerts: true
nodata_or_nullvalues: no_data
evaluation_timeout_seconds: 10
notification_timeout_seconds: 60
max_attempts: 5
:rendering
[grafana_config:] rendering: <key: value,...>
(デフォルト:詳細はセクションを参照)
- リモートHTTPレンダリングサービスを操作するための設定を指定します。
grafana_config:
# セクション [rendering]
rendering:
server_url: http://localhost:8081/render
callback_url: http://grafana.open.domain
:plugins
[grafana_config:] plugins: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaプラグインの利用可能性とアクセス性を管理するための設定を指定します。
grafana_config:
# セクション [plugins]
plugins:
enable_alpha: true
:feature_toggles
[grafana_config:] feature_toggles: <key: value,...>
(デフォルト:詳細はセクションを参照)
- Grafanaインスタンスでアルファ機能の使用を切り替えるための設定を指定します。
grafana_config:
# セクション [feature_toggles]
features_toggles:
enable: transformations
:tracing.jaeger
[grafana_config:] tracing.jaeger: <key: value,...>
(デフォルト:詳細はセクションを参照)
- 分散トレーシングのためのGrafanaのJaegerクライアントを設定するための設定を指定します。
注: 標準のJaeger環境変数(JAEGAR_*
でプレフィックスされる)は依然として指定可能で、ここで提供された設定を上書きします。
grafana_config:
# セクション [tracing.jaegar]
tracing.jaegar:
address: http://localhost:6381
always_included_tag: key1:value1,key2:value2
データソース
Grafanaは、時系列データ用のさまざまなストレージバックエンドをサポートしており、これらはデータソースと呼ばれています。各データソースは、Grafanaのprovisioning
ディレクトリ内のjson|yml
設定ファイルセットで構成されます。これらの設定は、[paths]セクションの中で調整できます。
これらのデータソース設定は、grafana_datasources
というハッシュ内で表現されます。このハッシュには、アクティベーション用のデータソース構造のリストと削除用のリストが含まれ、キーはそれぞれdatasources
とdeleteDatasources
です。値自体は、個々のデータソース仕様を表す辞書のリストで構成されています。サポートされているデータソースの詳細とリストについてはこちらを参照してください。
grafana_datasources: <list-of-dicts>
(デフォルト:[])
- レンダリングするgrafanaデータソース定義を指定します。利用可能なデータソースの参考にはこちらを参照してください。
grafana_datasources: name: <string>
(デフォルト:必須)
- レンダリングするgrafanaデータソースファイルの名前です。
grafana_datasources: <entry> : datasources: <list-of-dicts>
(デフォルト:[]
)
- 設定ファイル内でレンダリングするデータソース定義のリスト(上記のサポートリストに基づく)です。
grafana_datasources: <entry> : deleteDatasources: <list-of-dicts>
(デフォルト:[]
)
- 設定ファイル内でレンダリングするために削除する以前にインポートされたデータソース定義のリスト(上記のサポートリストに基づく)です。
grafana_datasources:
- name: example_datasource
datasources:
- name: elasticsearch-logs
type: elasticsearch
access: proxy
database: "[logs-]YYYY.MM.DD"
url: http://localhost:9200
jsonData:
interval: Daily
timeField: "@timestamp"
esVersion: 70
logMessageField: message
logLevelField: fields.level
- name: prometheus_example
type: prometheus
access: proxy
url: http://localhost:9090
deleteDatasources:
- name: graphite-legacy
type: graphite
access: proxy
url: http://localhost:8080
jsonData:
graphiteVersion: "1.1"
5.0以降、Grafanaはprovisioning/dashboards
ディレクトリに1つ以上のyaml|json
設定ファイルを追加することを許可しました。これにより、Grafanaはローカルファイルシステムからダッシュボードを読み込むことができます。このディレクトリには、読み込み元のディレクトリ/ファイルに関連する特徴やさまざまな形式のメタデータを示すダッシュボードプロバイダーのリストが含まれます。
これらのダッシュボードプロバイダーの設定は、grafana_dashboards
というハッシュ内で表現され、上述のダッシュボードプロバイダー構造のリストで構成されます。コミュニティによって作成されたダッシュボードの詳細とダウンロード可能なリストについてはこちらを参照してください。
grafana_dashboards: <list-of-dicts>
(デフォルト:[])
- レンダリングするgrafanaダッシュボードプロバイダー定義を指定します。サポートされているオプションのリファレンスはこちらを参照してください。
grafana_dashboards: <entry> : name: <string>
(デフォルト:必須)
- レンダリングするgrafanaダッシュボードプロバイダーのファイル名です。
grafana_dashboards: <entry> : apiVersion: <string>
(デフォルト:[]
)
- Grafanaダッシュボードプロバイダーファイルのバージョン名(インスタンス間での同期に便利です)。
grafana_dashboards: <entry> : providers: <list-of-dicts>
(デフォルト:[]
)
- 設定ファイル内でレンダリングするためのダッシュボードプロバイダー定義のリストです。
[grafana_dashboards: <entry> : urls: <entry>:] name
- ダッシュボード設定/内容を保存するためのJSONファイルの名前です。
[grafana_dashboards: <entry> : urls: <entry>:] src
[]
)
- JSONファイル/コンテンツをダウンロードするためのURLまたはウェブアドレスです。
[grafana_dashboards: <entry> : urls: <entry>:] id
<整数> (デフォルト:[]
)
- Grafanaの公式コミュニティハブからダウンロードするためにダッシュボードを参照するための一意の識別子です。
[grafana_dashboards: <entry> : urls: <entry>:] dest
(デフォルト:{{ provisioning_dir }}/dashboards
)
- JSONダッシュボード定義をホストファイルシステム上に保存する場所です。
注: ダッシュボードの識別と場所に関しては、_.src
または_.id
のどちらかが必須です。
grafana_dashboards:
- name: test-example
apiVersion: 2
urls:
- name: node_exporter_prometheus
src: https://grafana.com/api/dashboards/11173/revisions/1/download
- name: geth_server
id: '6976'
providers:
- name: 'default-example'
folder: 'default'
folderUid: 1
type: file
disableDeletion: true
updateIntervalSeconds: 30
options:
path: /var/lib/grafana/conf/provisioning/dashboards
通知
アラート通知チャネルは、provisioning/notifiers
ディレクトリに1つ以上のyaml|json
設定ファイルを追加することでプロビジョニングできます。
各設定ファイルは、次の最上位フィールドを含むgrafana_notifiers
ハッシュ内で表現されます:
- notifiers:起動時に追加または更新されるアラート通知のリストです。通知チャネルが既に存在する場合、Grafanaはそれを設定ファイルに合わせて更新します。
- delete_notifiers:noフィルタが設定された場合、通知リスト内のそれに挿入/更新する前に削除するアラート通知のリストです。
プロビジョニングは通知をuidで照会し、提供されたuidで既存の通知を更新します。
grafana_notifiers: <list-of-dicts>
(デフォルト:[])
- レンダリングするgrafana通知定義を指定します。サポートされているオプションのリファレンスはこちらを参照してください。
grafana_notifiers: <entry> : name: <string>
(デフォルト:必須)
- レンダリングするgrafanaアラート通知ファイルの名前です。
grafana_notifiers: <entry> : notifiers: <string>
(デフォルト:[]
)
- grafanaインスタンスのためにアクティベートするgrafanaアラート通知のリストです。
grafana_notifiers: <entry> : delete_notifiers: <list-of-dicts>
(デフォルト:[]
)
- grafanaインスタンスから削除するgrafanaアラート通知のリストです。
grafana_notifiers:
- name: slack-example
notifiers:
- name: example-org-slack
url: http://slack.example.org
recipient: team-channel
- name: example-org-pagerduty
integrationKey: PAGER_DUTY_KEY
delete_notifiers:
- name: example-org-email
addresses: [email protected],[email protected]
プラグイン
Grafanaは、データソース、パネル、およびアプリプラグインをサポートしています。このロールは、プラグインをダウンロードするためのプラグインの名前とバージョンを指定するリスト変数grafana_plugins
を提供します。プラグインのインストールに関する詳細については、Grafanaの公式プラグインドキュメントを参照し、利用可能なプラグインのリファレンスにはこちらを参照してください。
[grafana_plugins: <entry>:] name:
- ダウンロードするGrafanaプラグインの名前です。
[grafana_plugins: <entry>:] version:
latest
)
- ダウンロードするGrafanaプラグインのバージョンです。
grafana_plugins:
- name: petrslavotinek-carpetplot-panel
version: 0.1.1
- name: briangann-gauge-panel
# version: latest
起動
このロールは、systemdサービス管理ツールを利用して、grafana
ウェブサーバーを起動することをサポートします。これにより、サービスはバックグラウンドプロセスまたはデーモンとして管理されます。構成と実行ポテンシャルはその基盤となる管理フレームワークによって提供されます。
次の変数をカスタマイズして、サービスのsystemd [Service]単位定義と実行プロファイル/ポリシーを管理できます:
extra_run_args: <grafana-cli-options>
(デフォルト:[]
)
- リアルタイムでバイナリに渡す
grafana
コマンドライン引数のリストです。これにより、起動時にカスタマイズが可能です。
custom_unit_properties: <hash-of-systemd-service-settings>
(デフォルト:[]
)
- Grafana systemdサービスの
[Service]
単位構成と実行環境をカスタマイズするための設定のハッシュです。
アンインストール
プロビジョニングに必要なアーティファクトをアンインストールおよび削除するサポートにより、ユーザー/オペレーターはターゲットホストをこのロールの適用前の構成状態に戻すことができます。これにより、ノードを再利用したり、ツールのアップグレード間の移行をより洗練された/管理されたものにすることができます。
このアンインストールプロセスを管理するためにカスタマイズできる次の変数があります:
perform_uninstall: <true | false>
(デフォルト:false
)
- ターゲットホスト上でこの
grafana
インストールのすべてのアーティファクトと残骸をアンインストールおよび削除するかどうか(詳細についてはhandlers/main.yml
を参照)。
依存関係
- 0x0i.systemd
例のプレイブック
デフォルト例:
- hosts: all
roles:
- role: 0x0I.grafana
特定のバージョンのGrafanaビットをインストールする:
- hosts: all
roles:
- role: 0xOI.grafana
vars:
archive_url: https://dl.grafana.com/oss/release/grafana-6.6.1.linux-amd64.tar.gz
archive_checksum: 0edc8207e356ef66eb7b1c78a1cdabc2cd5c0655de774000de2ad0397e543377
Grafanaのインストール、設定、およびデータディレクトリを調整する:
- hosts: all
roles:
- role: 0x0I.grafana
vars:
install_dir: /usr/local
config_dir: /etc/grafana
data_dir: /mnt/grafana
トラブルシューティング用にデバッグモードでGrafanaを起動し、のみコンソール/stdout{err}に出力する:
- hosts: all
roles:
- role: 0x0I.grafana
vars:
grafana_config:
log:
level: debug
mode: console
ライセンス
MIT
著者情報
このロールは2019年にO1.IOによって作成されました。
Grafana - an analytics and monitoring observability platform
ansible-galaxy install 0x0i.grafana