Memo/Grafana

https://dexlab.net:443/pukiwiki/index.php?Memo/Grafana
 

Grafana


正規表現

  • 「web01」と「web01-test」が混在していて、testを除外する。
    /web(?!.*test)/

Playlist: 一定時間毎にダッシュボードを切り替える


ROW OPTIONS: 行単位のグループ化

  • 同系統のメトリクスをまとめる。
  • 行単位で隠しておける。クリックすると表示。複数系統のメトリクスを纏めると縦に長くなりがちなので、スクロールを減らせる。

Grafanaのバージョンによって、ROW OPTIONの位置が変わった。

  • v5.x: layout managerが変わって、ROWがpanelに変わった。ROWがデフォルトで不用になった代わりに、行に余白があると自動でグラフの配置が詰められる。
  1. Add panel
  2. Row panelを選択
  • v4.x以下: ROW単位だった
  1. Dashboard左下のAdd ROW

AWS Billingの表示

  • 2019-05-22時点
    • 1日に2回データがCloudWatchに入る
    • 設定有効後の値のみ見える。過去のBillingは見えない。
    • 一括請求が有効な場合、masterアカウントのBillingが初めに見える。3日ほど経過すると、子アカウントのBillingがCloudWatch metricsに入ってくる。
    • 動的にServiceName, LinkedAccountを取得できる。変数として登録するとフィルタのように使えるので便利。Memo/Grafana#geeacc90
    • 子アカウントの名前は入っていない
  • 2019-05-22時点でのCloudWatch メトリクス
    • LinkedAccount: 連結アカウント。アカウント番号
    • ServiceName: サービス名。CloudWatch上のサービス名。一貫性が無い
    • Currency: 通貨。通常はUSD
    • EstimatedCharges: 料金
  1. AWSアカウントでBilling情報をCloudWatchへ出力するように指定する。
  2. GrafanaホストはEC2上に作り、IAM roleで権限を与える。IAM userのアクセスキーは発行しない方がセキュリティ的に良い。
  3. AWS Billingのidをコピー
  4. Grafana上で、Create -> Import
  5. Paste dashborad id: 139
  6. Revision等をtagに付けると更新された場合に分かりやすい。Tag: r13
  7. Save
  8. DatasourceでCloudWatchのアカウントを指定する。
    • 一括請求の場合、masterアカウントを指定する

AWS(CloudWatch)で使えるquery

  • AWS CloudWatch | Grafana Documentation
    • dimension_values(): CloudWatch metrics全般を取得できる。動的に取得できるため、templateに利用できる。
    • ec2_instance_attribute(): EC2の属性から、一覧を取得
  • リージョン一覧
    $region = regions()
  • Billing/LinkedAccount: 一括請求(Consolidated billing)の場合、masterアカウント1つだけ。子アカウントは表示されなかった。
    $LinkedAccount = dimension_values($region, AWS/Billing, EstimatedCharges, LinkedAccount)
  • Billing/ServiceName一覧
    $ServiceName = dimension_values($region, AWS/Billing, EstimatedCharges, ServiceName)
  • RDS instance id一覧: CPUUtilizationでなくても良い。DBInstanceIdentifier別のメトリクスであれば何でも良いはず
    $RDS_DBInstanceIdentifier = dimension_values($region,AWS/RDS,CPUUtilization,DBInstanceIdentifier)
  • DynamoDB Table一覧: ConsumedReadCapacityUnitsでなくても良い。TableName別のメトリクスであれば何でも良いはず
    $DynamoDB_TableName = dimension_values($region,AWS/DynamoDB,ConsumedReadCapacityUnits,TableName)
  • ELB LoadBalancerName一覧:
    $ELB_LoadBalancerName = dimension_values($region,AWS/ELB,RequestCount,LoadBalancerName)

adminユーザのパスワードを忘れたら

  • DBに登録されるため、/etc/grafana/grafana.ini の admin_password を変えて、grafana-server を再起動しても反映されない。
  • default passwordの'admin' へ変更する場合
sudo sqlite3 /var/lib/grafana/grafana.db
sqlite> update user set password = '59acf18b94d7eb0694c61e60ce44c110c7a683ac6a8f09580d626f90f4a242000746579358d77dd9e570e83fa24faa88a8a6', salt = 'F3FAxVm33R' where login = 'admin';
sqlite> .quit

Direct link rendered image: 画像へのリンクを取得

チャットに画像を直接貼りたい。

  • 注意点
    • 画像のURLにも認証が入るため、認証がONの場合見えない。
  1. グラフをクリック > Share
  2. Direct link rendered imageをクリックすると、画像取得できるURLが発行されるのでコピペ
  3. チャットアプリによっては末尾に画像の拡張子が必要なので「#.png」を付ける

サンプルテンプレート


Elasticsearch

  • 記事

バックアップ&リストア

DBのバックアップを取るだけ。


sqlite3の場合

  • バックアップ:毎日1回、最大7日の場合
    sudo nice sqlite3 /var/lib/grafana/grafana.db .dump | gzip > grafana.sqlite3.$(date +%w).gz
  • リストア:
    sudo service grafana-server stop
    sudo mv /var/lib/grafana/grafana.db /var/lib/grafana/grafana.db.$(date +%Y%m%d)
    zcat grafana.sqlite3.1.gz | sudo sqlite3 /var/lib/grafana/grafana.db
    sudo chown grafana:grafana /var/lib/grafana/grafana.db
    sudo service grafana-server start

設定ファイル

  • CentOS 7
    • /etc/grafana/grafana.ini
      [paths]
      # sqlite3のDBファイル等
      data = /var/lib/grafana
      # ログファイルのパス
      logs = /var/log/grafana
      [database]
      # sqlite3のDBファイル名
      path = grafana.db
      type = sqlite3

ログの出力先変更

CentOS 7で同じ内容のログが出ている場合、変更できる。

  • mode
    • console: /var/log/messages
    • file: /var/log/grafana/grafana.log
    • console, file: 両方に出力する
  • /var/log/grafana/grafana.log だけにする
    sudo vim /etc/grafana/grafana.ini
    --
    [log]
    ...
    mode = file
    --
    sudo service grafana-server restart

Templating: テンプレート化

Grafana 2.1からの機能。変数を定義して、変数に応じてグラフを切り替える事ができる。
変数自体は固定値だけでなく、データソースも指定できるため、動的に変更があっても、Grafana側の変更は不要にできる。
データソース自体も選択可能にできる。

  • グラフ
    • General > Titleで「$var_name」で参照できる。
    • Metrics > Aliasで「{{dimension_name}}」で参照できる。$var_nameではなく、結果に含まれるMetrics名になる。
      {{metric}}
      {{stat}}
      {{namespace}}
      {{region}}
      {{period}}
      {{YOUR_DIMENSION_NAME}}

関数

  • top(10, avg)
    • 複数アイテムがあった場合、上位10件を表示
  • bottom(10, avg)
    • 複数アイテムがあった場合、下位10件を表示
  • groupBy(interval, function)
    • 時間単位でアイテムの最大、最小、平均等を求める
  • sumSeries()
    • 複数のアイテムの合計。CPU負荷が高いのでgroupBy()と合わせて使う事推奨
  • setAlias(alias)
    • グラフ上に別名として表示できる
  • scale()
    • n倍, 1/n倍等
  • rate()
    • 1秒辺りの平均増加量。

単位

  • サイズの表記が複数あるが、グラフのAxesタブ > Unit上の表記は同じ「bytes」なので注意。
    • data (IEC) bytes: GiB表記。2進数での表示。通常コンピュータ上の表記はこちら
    • data (Metric) bytes: GB表記。10進数での表示。

Zabbix

  • Zabbixは複数ホストの重ねグラフはテンプレートできなかったり苦手。その部分はGrafanaにまかせる
  • 複数ホストのアイテム表示に正規表現「/hostname/」等が使える
  • ZabbixはGB表記だが、GrafanaグラフのUnitは「data (IEC) bytes」を選択すると正しい値になる。

Direct DB Connectionで高速化


複数zabbixのデータソースのテンプレート化

  • Templating例:dev/prodとzabbixが2つあり、データソースを切り替えたら、host groupも変わるようにする。
    • Variable:
      • Name: data_source_zabbix
      • Type: Datasource
    • Data source options:
      • Type: Zabbix
    • Variable:
      • Name: zabbix_host_group
      • Type: Query
    • Query Options:
      • Data source: $data_source_zabbix
      • Refresh: On Dashboard Load (これにしないと、zabbix_host_groupに追加された場合でも出て来ない?)
      • Query: *
      • Sort: asc

複数ホスト上の同じ項目の合計

  • 複数ホスト(web01,02)上の同じ項目のアイテムを合計してグラフに表示する
  • Metricsタブ > Query Mode: Metrics
  • Group: $zabbix_host_group
  • Host: /web.+/
  • Item: access count per min
  • Functions: groupBy(1m, avg) sumSeries() setAlias(access count)
  • Panel data source: $data_source_zabbix

plugins: プラグイン


一覧

sudo grafana-cli plugins ls
installed plugins:
alexanderzobnin-zabbix-app @ 3.8.1

更新

  • pluginの更新があると、Home DashboardのInstalled Appsに通知される。
  • Up to dateリンクから更新方法の案内が見えるので簡単
  • 例: CentOS 7
    # 全て更新する場合
    sudo grafana-cli plugins update-all
    
    # 指定pluginのみ更新
    sudo grafana-cli plugins update alexanderzobnin-zabbix-app
    
    sudo service grafana-server restart

追加

  • 例: CentOS7上の「zabbix」プラグインを追加
    sudo grafana-cli plugins install alexanderzobnin-zabbix-app
    sudo service grafana-server restart

アップグレード

  • pluginは自動更新されないので更新する
    sudo grafana-cli plugins update-all
    sudo service grafana-server restart

インストール

  • デフォルトURL: http://localhost:3000/
  • デフォルトuser/password: /etc/grafana/grafana.ini
    • [security] セクション

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-11 (木) 17:26:12 (11d)