見出し画像

監視ツール「Grafana Cloud」の設定記録【追記有】

ネットで情報を漁ってみると「Grafana」そのものについては
情報がいくつか出てくるんだけど、
Grafanaをホスティングしてくれてる「Grafana Cloud
の情報は少なかったので設定した記録をここに記す。

今回の目的

ローカルネットワークにあるサーバーのCPU負荷などを
スマホや出先でのノートパソコンで見たい。

前提環境

環境

ローカルのサーバー:Ubuntu 22.04.1 LTS
監視ツール:Grafana Cloud
エージェント:grafana-agent

導入の流れ

1.Grafana Cloudに登録する。

https://grafana.com/products/cloud/ から可能

2.Linux Server に接続する

あとは基本的に手順に従うだけ。
書いてある手順をわかりやすくすると、

・grafana-agentのインストールをする
・設定ファイル、デフォルトだと/etc/grafana-agent.yaml に指定の文言を入れる
integrations:の下に以下を入れる ※hostnameは適宜変更(変更用の入力欄はちゃんと用意されてる)

  node_exporter:
    enabled: true
    # disable unused collectors
    disable_collectors:
      - ipvs #high cardinality on kubelet
      - btrfs
      - infiniband
      - xfs
      - zfs
    # exclude dynamic interfaces
    netclass_ignored_devices: "^(veth.*|cali.*|[a-f0-9]{15})$"
    netdev_device_exclude: "^(veth.*|cali.*|[a-f0-9]{15})$"
    # disable tmpfs
    filesystem_fs_types_exclude: "^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|tmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$"
    # drop extensive scrape statistics
    metric_relabel_configs:
    - action: drop
      regex: node_scrape_collector_.+
      source_labels: [__name__]
    relabel_configs:
    - replacement: hostname
      target_label: instance
logs:
  configs:
    scrape:
      configs:

の下に

    - job_name: integrations/node_exporter_journal_scrape
      journal:
        max_age: 24h
        labels:
          instance: hostname
          job: integrations/node_exporter
      relabel_configs:
      - source_labels: ['__journal__systemd_unit']
        target_label: 'unit'
      - source_labels: ['__journal__boot_id']
        target_label: 'boot_id'
      - source_labels: ['__journal__transport']
        target_label: 'transport'
      - source_labels: ['__journal_priority_keyword']
        target_label: 'level'
    - job_name: integrations/node_exporter_direct_scrape
      static_configs:
      - targets:
        - localhost
        labels:
          instance: hostname
          __path__: /var/log/{syslog,messages,*.log}
          job: integrations/node_exporter

を入れる。
このjob設定がないと詳細がremote writeされないから大事

※結構タブ幅間違えやすかったりするので注意
Yamlなんで意外とズレたりするんだよね。

このintegrasionの設定さえ入れればダッシュボードで状態が確認できるはず。

こんな感じになります。

以上です。

あとがき

基本的にgrafana-agentさえ無事に入れば設定できることがわかった。
家にあるRaspberryPiの状態もこれで外から見れるので、
RaspberryPiの設定もしておこうと思う。
でも今のところgrafana-agentのインストールがアーキテクチャの問題でうまくいかないみたいだから苦戦しそうな今日このごろ。


追記分

Windowsの設定

    - job_name: integrations/windows-exporter-application
      windows_events:
        use_incoming_timestamp: true
        bookmark_path: "./bookmark-application.xml"
        eventlog_name: "Application"
        xpath_query: '*'
        labels:
          job: integrations/windows_exporter
      relabel_configs:
        - source_labels: ['computer']
          target_label: 'agent_hostname'
      pipeline_stages:
        - json:
            expressions:
              source: source
        - labels:
            source:
    - job_name: integrations/windows-exporter-system
      windows_events:
        use_incoming_timestamp: true
        bookmark_path: "./bookmark-system.xml"
        eventlog_name: "System"
        xpath_query: '*'
        labels:
          job: integrations/windows_exporter
      relabel_configs:
        - source_labels: ['computer']
          target_label: 'agent_hostname'
      pipeline_stages:
        - json:
            expressions:
              source: source
        - labels:
            source:

bookmark_path: "./bookmark-application.xml"
の部分が指示通りだと変換時に
bookmark_path: C:\Users\user\AppData\Roaming\"bookmark-application.xml"
という風に変換していまい、設定ファイルエラーを起こすので、
設定後に

bookmark_path: C:\Users\user\AppData\Roaming\bookmark-application.xml

というようにダブルクオーテーションを外すか、
ps1ファイルの

if ($line -ne $null) {
    $content = Get-Content $config_file
    $line | ForEach-Object {
        if ($_ -notmatch [Regex]::Escape($env:APPDATA)) {
            $split_line = $_ -split ": "
            $prefix = $split_line[0]
            $bookmark_filename = $split_line[1] -replace "./",""
            $content = $content -replace $_,"$($prefix): $($env:APPDATA)\$($bookmark_filename)"
        }
    }
    $content | Set-Content $config_file
}

らへんを編集して(多分$bookmark_filename = $split_line[1] -replace "./","")あたり
調整しないといけない

最後までお読みいただき、ありがとうございます。 今後もたくさんの方に読んでいただけるよう精進します。 活動継続にあたりサポートをいただけると、 私のモチベーション維持やクオリティ向上に繋がります。 頂いたサポートはクリエイターとしての活動費にさせて頂きます。 ぜひお願い致します。