ラベル grafana の投稿を表示しています。 すべての投稿を表示
ラベル grafana の投稿を表示しています。 すべての投稿を表示

2024年7月9日火曜日

Grafana を nginx 配下で動作させる方法

Grafana を nginx 配下で動作させる方法

概要

docker で動作している Grafana を nginx 配下で動作させる方法を紹介します

環境

  • Ubuntu 22.04
  • Grafana 10.26.0
  • nginx 1.27.0

Grafana の起動オプション変更

docker compose の場合は GF_SERVER_ROOT_URLGF_SERVER_SERVE_FROM_SUB_PATH を設定します
GF_SERVER_SERVE_FROM_SUB_PATH を true に設定しなければいけないので忘れずに設定しましょう

services:
  grafana:
    image: grafana/grafana-oss:9.5.20
    ports:
     - '3000:3000'
    environment:
      GF_SERVER_ROOT_URL: http://localhost:3000/grafana
      GF_SERVER_SERVE_FROM_SUB_PATH: true
    volumes:
      - type: volume
        source: grafana_data
        target: /var/lib/grafana
    restart: always
volumes:
  grafana_data:

nginx.conf

/prometheus で受けれるようにします

upstream grafana {
    server 192.168.1.100:3000;
}

server {
    listen 8080;
    server_name host01;

    location = /grafana {
        return 302 /grafana/;
    }

    location /grafana/ {
        proxy_set_header Host $host;
        proxy_pass http://grafana;
    }
}

動作確認

:8080/grafana にアクセスして問題なく動作することを確認しましょう

最後に

Grafana は環境変数を使うのが簡単です

参考サイト

2021年4月30日金曜日

Grafana を helm chart で構築してみた

Grafana を helm chart で構築してみた

環境

Grafana を helm chart で k8s 上に構築してみました
アクセスには NodePort を使います

環境

  • kubernetes 1.20.4
  • helm 3.5.2
  • Grafana helm chart 6.7.4

Grafana の helm repo の インストール

  • helm repo add grafana https://grafana.github.io/helm-charts
  • helm repo update

普通に使う

まずは普通に使います
構築して NodePort でアクセスしてみます

  • helm install my-release grafana/grafana --set service.type=NodePort
  • kubectl get svc
AME                 TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE  
kubernetes           ClusterIP   10.96.0.1        <none>        443/TCP        14d  
my-release-grafana   NodePort    10.107.144.202   <none>        80:32483/TCP   8m45s

grafana の Pod がデプロイされたノードの IP を調べます
そして http://node-ip:32483 にアクセスすると Grafana の UI が表示されることが確認できます

ログインする

admin ユーザにでログインします
パスワードは secret に登録されているので以下のコマンドで取得できます

  • kubectl get secret --namespace default my-release-grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

ingress 経由で使う

よくあるケースは ingress 経由で使う場合です
ポイントは ingress.hosts と ingress.path で宛先を設定する点です
またサブディレクトリでアクセスしたい場合は serve_from_sub_path を使います

  • vim values.yml
grafana.ini:  
  server:  
    protocol: http  
    domain: localhost  
    root_url: "%(protocol)s://%(domain)s:3000/-/grafana"  
    serve_from_sub_path: true  
ingress:  
  enabled: true  
  hosts:  
    - "grafana.example.com"  
  path: "/-/grafana"  
service:  
  type: NodePort  
  nodePort: 32080

set だと長くなるなるので設定は values.yml を使っています

デプロイしてみましょう

  • helm install my-release grafana/grafana -f values.yml

これで http://node-ip:32080 にアクセスすれば Grafana にアクセスできます
ログイン方法は先程紹介したとおりです

最後に

ログインでリダイレクトされる場合は cookies を削除しましょう

参考サイト

2021年2月20日土曜日

Omnibus Gitlab で Grafana を外部に移行して OAuth 連携する方法

概要

前回 Promethues を外部に移行してみました
今回は Grafana を移行してみたいと思います
また Grafana のログインは Gitlab の OAuth を使います

環境

  • GitLab Enterprise Edition 13.8.0-ee
  • Grafana 7.4.1

Gitlab で OAuth アプリケーションの作成

「Admin Area」->「Applications」->「New Application」から作成します

で作成します

RedirectURI の 192.168.100.11 が Grafana の IP になります
Grafana の構築方法は後述します
URI の /login/gitlab は必須の設定になります
固定の値なので別の URI にしないようにしましょう

作成された Application ID と Secret はあとで使うのでメモしておきます

Grafana の構築

今回はコンテナで起動します
まずは Grafana の設定ファイルを作成します
Gitlab の OAuth と連携する設定を記載します

  • vim grafana.ini
[server]                                                                                                                                       
root_url = http://192.168.100.11:3000
[auth.gitlab]
enabled = true
allow_sign_up = true
client_id = xxxxxxxxxxxxxxxx
client_secret = xxxxxxxxxxxxxxxx
scopes = api
auth_url = https://example.gitlab.com/oauth/authorize
token_url = https://example.gitlab.com/oauth/token
api_url = https://example.gitlab.com/api/v4
allowed_groups =

root_url は callback URL として Gitlab に送信するので Gitlab でアプリケーション作成の際に設定した callback URL と同じ IP を入力しましょう
client_idclient_secret は先程作成したアプリケーションの Application ID と Secret を入力しましょう
example.gitlab.com の部分は自信の Gitlab の URL に置き換えてください
allow_sign_up=true を設定することで Grafana 側にユーザ情報がない場合は自動で作成してくれます


設定ファイルが作成できたらコンテナを起動しましょう

  • docker run -d --user 0 -v $(pwd)/data:/var/lib/grafana -v $(pwd)/grafana.ini:/etc/grafana/grafana.ini -p 3000:3000 --name=grafana grafana/grafana

動作確認

http://192.168.100.11:3000/login にアクセスるとログイン画面が表示されます

これで「Sign in with GitLab」をクリックすると Gitlab の認証情報で Grafana にログインできるようになります

おまけ: ログインフォームを消す方法

  • vim grafana.ini
[auth.basic]
enabled = false
disable_login_form = true
  • docker restart grafana

参考サイト

2020年10月21日水曜日

Grafana でメールチャネルを使ってアラートを送信する方法

概要

前回 Grafana で Slack にアラートを通知してみました
今回は Email チャネルを設定してメール送信してみたいと思います

admin ログインとアラートの有効化

前回の記事を参考に設定してください

SMTP サーバの設定

これはなぜか設定ファイルを直接編集する必要があります
UI からでは設定できません

  • vim /var/opt/gitlab/grafana/grafana.ini
[smtp]
enabled = true
host = smtp.gmail.com:587
user = your-google-account-name@gmail.com
password = your-app-password
skip_verify = false
from_address = your-google-account-name@gmail.com
from_name = your-google-account-name

そしたら grafana だけ再起動します
reconfigure を掛けてしまうと grafana.ini も上書きされてしまうので注意してください

  • gitlab-ctl restart grafana

Grafana でメールチャネルを作成

Grafana のダッシュボードからメールチャネルを作成しましょう

画面の下にテストメールを送信できるボタンがあるのでそれを押してテスト送信してみましょう
こんな感じでメールが届けばちゃんと SMTP の設定ができています

あとはアラートを待つだけ

あとはアラートを設定して来るのを待ちます
アラートの設定方法は過去の記事を参考にしてください

最後に

Gitlab に付属の Grafana を使ってメールでアラート通知をしてみました
STMP の情報は UI からではなく直接設定ファイルに記載する必要があるようです
Gitlab の場合は reconfigure を掛けると設定が上書きされてしまうのでそこだけ注意しましょう

2020年10月9日金曜日

Gitlab の Grafana でアラート機能を試してみた

概要

過去 に Gitlab の Grarana にアクセスする方法を紹介しました
どうやらアラート機能も使えるようなので試してみました

環境

  • GitLab Enterprise Edition 13.3.5-ee
  • grafana 7.0.3

admin でログインできるようにする

アラート機能を使うには admin 権限が必要です
Gitlab の Grafana はデフォルトでは Gitlab の OAuth のみでログインするようになっており権限が readonly しかないので admin でログインできるようにする必要があります

admin ログイン用のフォームを表示させる

まずは admin がログインできるようにログインフォームを表示するようにします

  • vim /etc/gitlab/gitlab.rb
grafana['disable_login_form'] = false
  • gitlab-ctl reconfigure

これで reconfigure をかければ grafana のログイン画面に OAuth 以外のログインフォームが表示されるようになります

admin ユーザのパスワードを設定する

これは CLI で行います
grafana['admin_password'] という項目が gitlab.rb にありますがこれではなく CLI で先にパスワードを設定する必要があります

  • gitlab-ctl set-grafana-password

これで新規に admin ユーザのパスワードを設定することができます
設定できたら Grafana の UI から「admin/設定したパスワード」でログインできるか確認してみましょう

アラート機能を有効にする

次にアラート機能を有効にします
デフォルトではなぜかアラート機能が使えないので有効にする必要があります

  • vim /etc/gitlab/gitlab.rb
grafana['alerting_enabled'] = true
  • gitlab-ctl reconfigure

これでアラート機能が有効になります

Notification channel を設定する

まずは Notification channel を新規で追加する必要があります
左メニューから追加しましょう

Slack や LINE、メールなどのチャネルに通知することができます
今回は Slack に通知してみます
Type に Slack を選択しあとは Incomming Webhook URL を設定しましょう

それ以外にも細かい設定ができますが今回は Incomming Webhook URL のみ設定します
チャネルやアイコンなど必要であれば設定しましょう
以下のようにチャネルの一覧に表示されれば OK です

アラートを設定してみる

これでようやくアラート機能が使えます
admin ユーザでログインして既存のダッシュボードを適当に選択して編集画面に移動しましょう

ダッシュボードの一覧からアラートしたい項目のダッシュボードを選択します
今回は「Gitlab Omnibus - Redis」を選択します

そしてダッシュボードから「Memory Usage」パネルを選択し「Edit」を選択します

アラート用のクエリを作成する

まずはアラート用のクエリを作成します
いくつかクエリが設定されているのですがアラート用には作成されておらずアラートが作成できないので新規でクエリを作成します

Query タブから新規で追加します
今回は Metrics に「redis_memory_used_bytes」を指定します

クエリを新規で作成した「Alert」タブに移動します
そして「Create Alert」を選択しましょう

アラートを作成する

まずアラートの条件を設定します
今回は 5 分間の値がある一定以上であれば通知するようにします
条件は以下のようになります

単位が bytes なので注意しましょう
設定しているしきい値の値がリアルタイムにグラフに反映されるのでわかりやすいと思います

次に通知するチャネルを設定します
先程作成した Slack チャネルを使います
通知する際のメッセージを設定可能なので好きなメッセージを設定します
本来はここに変数を使って現在の値などを表示したいのですがやり方がわかりませんでした
調べると他の人も悩んでいるのでまだやり方がないのかもしれません (参考)

作成できたら右上の「Apply」を押してアラートを作成します

ダッシュボードにもアラートのしきい値が表示されるようになります

動作確認

あとはアラートが上がるまで待ちましょう
今回の条件であれば 5 分後に 100% アラートが上がるはずです

問題なく Grafana でアラートの監視が始まっていればダッシュボードで Pending の線が表示されるようになります
これが表示されない場合はダッシュボードにアラートのルールがうまく保存されていないので以下のトラブルシューティングなどを参考に解決してください

トラブルシューティング: Template variables are not supported in alert queries

ダッシュボードからアラート以外で使用するクエリを削除してみましょう
もしくはアラート専用のダッシュボードを作成して再度クエリとアラートの登録を行ってみてください

トラブルシューティング: Provisioning: Cannot save provisioned dashboard

Gitlab が用意している既存のダッシュボードに対して操作すると出る場合があるようです
どうやら Gitlab が用意している Grafana の監視ファイルは JSON で保存されています

  • ls -l /opt/gitlab/embedded/service/grafana-dashboards
total 176
-rw-r--r-- 1 root root 14858 Sep  4 18:25 gitaly.json
-rw-r--r-- 1 root root 12103 Sep  4 18:25 nginx.json
-rw-r--r-- 1 root root 22528 Sep  4 18:25 overview.json
-rw-r--r-- 1 root root 20974 Sep  4 18:25 postgresql.json
-rw-r--r-- 1 root root 17716 Sep  4 18:25 praefect.json
-rw-r--r-- 1 root root 12019 Sep  4 18:25 rails-app.json
-rw-r--r-- 1 root root   542 Sep  4 18:25 README.md
-rw-r--r-- 1 root root 24709 Sep  4 18:25 redis.json
-rw-r--r-- 1 root root 11682 Sep  4 18:25 registry.json
-rw-r--r-- 1 root root 22238 Sep  4 18:25 service_platform_metrics.json

これらのファイルに対して UI から更新を掛ける場合は allowUiUpdates = true なる属性の設定が必要なようで Gitlab ではそれが設定されていないためにエラーになるようです

なのでその場合は新規でダッシュボードを作成して同じクエリと同じアラートルールを追加すれば OK です

最後に

Gitlab に付属の Grafana でアラート機能を試してみました
有効にするのが少し面倒なのとアラートのルールを設定できるのは admin ユーザだけのようです

有効にできればあとは Grafana の世界の話なのでクエリの設定の仕方などは Grafana のドキュメントを参考にすると良いかなと思います

参考サイト

2020年10月8日木曜日

Mac で grafana 超入門

概要

Grafana を Mac にインストールして管理画面などの操作を簡単に確認してみました

環境

  • macOS 10.15.7
  • grafana 7.2.0

インストール

  • brew install grafana

起動

  • brew services start grafana

これで localhost:3000 にアクセスするとログイン画面が確認できます

パスワードは admin/admin になります
初回ログイン時にパスワードを変更するように促されるので変更すればログインできます

ダッシュボードを作成してみる

まずはダッシュボードを作成してみましょう
左メニューのプラスから「Dashboard」を選択します

ダッシュボードにはパネルを最低 1 つ以上追加する必要があります
「Add new panel」でパネルを追加しましょう

デフォルトではサンプル用のクエリが設定されています
クエリを元にグラフを生成しているのでグラフを追加したい場合はクエリを追加します
クエリは画面の下の部分から追加できます

ダッシュボードが作成できたら右上の「Save」からダッシュボードを保存します
あとからクエリやパネルは編集可能です 

保存が完了するとホーム画面や検索の一覧にダッシュボードが表示されます
選択すると作成したダッシュボードの内容が確認できます

データソースを追加する

上記はサンプル用に準備されたデータを使っています
実際にはデータソースを追加してそこからクエリを発行してグラフを作成します
左メニューの「Configuration」->「Data sources」から追加できます

デフォルトでは ElasticSearch や Prometheus などメジャーなデータリソースが選択可能なようです

今回はデータソースの連携方法は紹介しませんが基本はデータソースを追加してそこにあるデータに対してクエリを発行することでデータを可視化する感じです

最後に

Grafana を Mac にインストールして超基本の操作を確認してみました
他にもアラートやプレイリストなど機能がたくさんあるので試す機会があれば別記事で紹介したいと思います

参考サイト