へっぽこプログラマーの備忘録
プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。
menu
keyboard_arrow_up
Top
search
close
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
home
ホーム
computer
PC一般
construction
開発環境・ツール
code
プログラミング
Home
›
Telegraf
›
Telegraf + InfluxDB + Garafana でサーバーリソースを可視化する
2021/12/18
Telegraf + InfluxDB + Garafana でサーバーリソースを可視化する
update
event_note
label
Docker
label
Grafana
label
InfluxDB
label
Telegraf
CPUやメモリなどのリソースを収集して閲覧したいなと思い、ググってみるとこの組み合わせが良さそうでした。 Telegraf でデータを取得して InfluxDB に書き込み、Grafana で InfluxDB のデータを読み込んで可視化します。
個人的に InfluxDB と Grafana は使ったことありますが、Telegraf は今回初めて使いました。 尚、この3つの頭文字を取って TIG Stack と呼んでいるページもいくつか見かけました。 ## 環境 - Ubuntu 20.04 - Docker 20.10.7 - Telegraf 1.20.4 - InfluxDB 1.8.6 - Grafana 7.5.7 Telegraf と Grafana は現時点の最新のバージョンですが、InfluxDB は 2.0 系ではなく 1.8.6 を使いました。 InfluxDB 2.0 を使ったことがないのと、参考にした Telegraf の設定ファイルのサンプルが InfluxDB 2.0 ではないものばかりだったからです。 また、Telegraf, InfluxDB, Grafana は全て Docker (docker-compose) を使って動かします。 ## docker-compose.yaml のサンプル 以下のような `docker-compose.yaml` を作成しました。 ``` version: '3.1' services: telegraf: container_name: telegraf image: telegraf restart: always volumes: - ./telegraf.conf:/etc/telegraf/telegraf.conf:ro depends_on: - influxdb links: - influxdb networks: - common influxdb: container_name: influxdb image: influxdb:1.8.6 restart: always ports: - 8086:8086 volumes: - influxdb:/var/lib/influxdb networks: - common grafana: container_name: grafana image: grafana/grafana restart: always links: - influxdb ports: - 3000:3000 volumes: - grafana:/var/lib/grafana networks: - common networks: common: external: true volumes: influxdb: grafana: ``` `common` というネットワークを共通で使っているので、あらかじめ `docker network create` で作成しておく必要があります。 ## Telegraf の設定 `telegraf.conf` を作成します。 以下のページにちょうど良いのがあるのでこれをそのまま使いました。 - https://grafana.com/grafana/dashboards/928 後述しますが、Grafana のダッシュボードのテンプレートもこれを使いました。 上記の設定をコピーしたら最低限以下の設定だけ変更します。 - `[agent]` > `hostname` にマシン名を設定 - 設定しないと自動で設定されますが、起動の度に変わるので設定しておいたほうがよいと思います。 - 環境変数が使えるので、`hostname = "$HOSTNAME"` のようにも書けます。 - `[[outputs.influxdb]]` > `urls` を InfluxDB の URL に変更 - 上記の `docker-compose.yaml` の場合、URL は `http://influxdb.common:8086` のようにコンテナ名とネットワーク名を使っても指定できます。 他は必要に応じて設定します。 ## 起動 ``` $ docker-compose up ``` デーモン化したい場合は `-d` を指定します。 起動すると InfluxDB に Telegraf 用のデータベースを自動で作成してくれます。 (データベース名は `telegraf.conf` で設定できます。) ## Grafana の設定 Grafana にアクセスし、ログインします。 - http://localhost:3000 初期 ID とパスワードはどちらも `admin` です。 ### DB の登録 Configuration > Data Sources > Add data source > InfluxDB を選択します。 `URL` と `Database` の2つを設定します。 今回の例では以下のように設定します。 - `URL` に `http://influxdb.common:8086` を設定 - `Database` に `telegraf_metrics` を設定 ### ダッシュボードの作成 Telegraf 用のテンプレートがあるので、それをインポートするのが楽です。 テンプレートは以下のページで探せます。 - https://grafana.com/grafana/dashboards/ 今回は以下のテンプレートを使いました。 - https://grafana.com/grafana/dashboards/928 上記から JSON ファイルをダウンロードし、Grafana の左メニューの + ボタンからインポートします。 インポートの際、データベースは `telegraf_metrics` を選択します。 ダッシュボードにアクセスすると以下のような画面が表示されます。
かっこいい画面が簡単に作成できました。 ## リテンションポリシーの設定 `telegraf.conf` の [[outputs.influxdb]] > retention_policy でリテンションポリシーを指定できますが、ここが未指定だとデフォルトの `autogen` が使用され、データが無期限に保存されることになるので指定します。 例えば、リテンションポリシー名に `hoge` と指定します。 この状態で動作させると、`hoge` というリテンションポリシーが存在しないというエラーが出るので、InfluxDB のコンテナに入ってリテンションポリシーを作成します。 ``` $ docker exec -it influxdb bash ``` コンテナに入ったら以下のコマンドでリテンションポリシーを作成します。 ``` # influx > CREATE RETENTION POLICY "リテンションポリシー名" ON "データベース名" DURATION "期間" REPLICATION 1 DEFAULT ``` 例えば、今回は以下のように指定します。 ``` CREATE RETENTION POLICY "hoge" ON "telegraf_metrics" DURATION 1h REPLICATION 1 DEFAULT ``` 上記のコマンドではデータの保存期間を1時間に設定しています。
## 参考 URL - https://qiita.com/sammrai/items/0c329ac7aa8b100b66a8 - https://github.com/influxdata/telegraf/blob/master/etc/telegraf.conf - https://grafana.com/grafana/dashboards/928 - https://blog.htkyama.org/telegraf_influxdb_grafana
tweet
facebook
Pocket
B!
はてブ
LINE
chevron_left
chevron_right
Translate
Popular Posts
TortoiseGit でコミットメッセージを変更する
image
NO IMAGE
smbclient で session setup failed: NT_STATUS_LOGON_FAILURE が表示される
Docker for Windows の設定
image
NO IMAGE
TortoiseSVN ロック状態のチェック
image
NO IMAGE
マージ元ブランチとマージ先ブランチ
image
NO IMAGE
Visual Studio で文字がにじむ(ぼやける)
TortoiseGit でブランチ間の差分を見る
image
NO IMAGE
AsciidocFX をビルドする
image
NO IMAGE
PowerShellでブレークポイントが設定できない場合
[Python] 文字列の判定で、None と空文字を同時に判定する
Labels
.NET Core
31
.NET Framework
17
.NET Standard
2
AdminLTE
1
AI
1
Apache
3
AppVeyor
2
AsciiDoc
7
ASP.NET Core
55
Atom
4
AWS
5
AWS Cloud9
4
blockdiag
1
Blogger
13
Bootstrap
3
C/C++
6
C#
106
CentOS
3
Chrome
1
Chronograf
3
chrony
1
Codecov
1
CSS
1
Docker
82
DokuWiki
4
Doxygen
1
draw.io
1
EasyTag
1
Electron
1
Electron.NET
2
Entity Framework Core
9
Excel
2
FFmpeg
3
Firefox
6
Flask
1
Git
19
GitBook
4
GitBucket
7
GitHub
7
GitLab
39
Go
1
Google
1
Google Cloud Platform
1
Grafana
13
GStreamer
2
HTML
5
IIS
8
InfluxDB
14
JavaScript
15
Jekyll
3
Jenkins
7
Linux
34
Log4View
1
MahApps.Metro
3
MaterialDesignInXamlToolkit
1
MkDocs
2
MongoDB
5
MVC
1
MVVM
6
nginx
3
NLog
3
Node.js
8
npm
1
NVIDIA
3
onvif
1
OpenAPI
2
OpenCV
4
OpenSSL
3
OpenVINO
2
ownCloud
2
pandas
1
Pine Script
1
PlantUML
5
Portainer
3
PowerShell
8
Prism
2
PySide
19
Python
88
PyTorch
1
RabbitVCS
1
Razor
3
redis
1
Redmine
33
Redoc
1
remark.js
2
rocketchat
10
Ruby
3
scikit-learn
1
shotcut
1
SignalR
1
Slack
1
Socket.IO
1
SonarQube
5
Sphinx
10
SQL Server
5
SQLite
1
StableDiffusion
2
Subversion
2
Swagger
1
Swarmpit
1
Syslog
3
Telegraf
6
Tesseract
3
TestLink
2
Tomcat
2
TortoiseGit
11
TortoiseSVN
2
Trading View
1
Traefik
3
Travis CI
1
Ubuntu
31
Visual Studio
39
Visual Studio Code
10
VSCode
8
Vue.js
8
Windows
62
Windows 10
5
Windows ADK
1
Windows API
2
Windows Embedded
4
wkhtmltopdf
2
Word
3
WPF
12
WSL
5
WSL2
5
Xamarin
1
xUnit
5
yaml
1
yolo
1
アプリケーション
1
デザインパターン
1
テスト
1
バッチファイル
2
プログラミング
4
ライセンス
1
暗号資産(仮想通貨)
1
英語
2
確定申告
1
機械学習
1
強化学習
1
雑記
1
書籍
1
数学
1
正規表現
1
動画編集
1
Blog Archive
►
2024
(21)
►
12月
(3)
►
9月
(5)
►
8月
(1)
►
7月
(2)
►
6月
(1)
►
4月
(2)
►
3月
(1)
►
2月
(5)
►
1月
(1)
►
2023
(30)
►
12月
(3)
►
11月
(5)
►
10月
(2)
►
9月
(1)
►
8月
(2)
►
7月
(4)
►
6月
(2)
►
5月
(3)
►
4月
(2)
►
3月
(2)
►
2月
(3)
►
1月
(1)
►
2022
(106)
►
12月
(5)
►
11月
(1)
►
10月
(3)
►
9月
(6)
►
8月
(7)
►
7月
(6)
►
6月
(13)
►
5月
(9)
►
4月
(15)
►
3月
(11)
►
2月
(14)
►
1月
(16)
▼
2021
(85)
▼
12月
(11)
Telegraf で GPU の情報を取得し、Grafana で可視化する
[Python] Docker コンテナ内のアプリのログをホストの Syslog に追加する
[Python] Flask (Werkzeug)のロギングの設定
rsyslog から Telegraf への送信に時々失敗する
[Python] コンソールに出力するログに色を付ける
[Python] ロギングの個人的ベストプラクティス
Syslog を Telegraf に送り、Grafana で閲覧できるようにする
Telegraf + InfluxDB + Garafana でサーバーリソースを可視化する
docker デーモンが勝手に再起動する原因の調査と対策
[Python] 指定したディレクトリ内の空ディレクトリを全て削除する
Docker のディスク使用量を調べる
►
11月
(6)
►
10月
(4)
►
9月
(10)
►
8月
(8)
►
7月
(4)
►
6月
(18)
►
5月
(7)
►
4月
(8)
►
3月
(2)
►
2月
(2)
►
1月
(5)
►
2020
(56)
►
12月
(1)
►
11月
(3)
►
10月
(3)
►
9月
(3)
►
8月
(3)
►
7月
(7)
►
6月
(7)
►
5月
(2)
►
4月
(6)
►
3月
(6)
►
2月
(3)
►
1月
(12)
►
2019
(92)
►
12月
(13)
►
11月
(9)
►
10月
(3)
►
9月
(2)
►
8月
(3)
►
7月
(5)
►
6月
(11)
►
5月
(6)
►
4月
(17)
►
3月
(9)
►
2月
(6)
►
1月
(8)
►
2018
(100)
►
12月
(1)
►
11月
(11)
►
10月
(8)
►
9月
(6)
►
8月
(10)
►
7月
(10)
►
6月
(8)
►
5月
(9)
►
4月
(8)
►
3月
(14)
►
2月
(4)
►
1月
(11)
►
2017
(117)
►
12月
(14)
►
11月
(20)
►
10月
(17)
►
9月
(19)
►
8月
(10)
►
7月
(8)
►
6月
(3)
►
5月
(6)
►
4月
(5)
►
3月
(2)
►
2月
(8)
►
1月
(5)
►
2016
(91)
►
12月
(5)
►
11月
(9)
►
10月
(11)
►
9月
(9)
►
8月
(6)
►
7月
(14)
►
6月
(14)
►
5月
(11)
►
4月
(10)
►
3月
(2)
►
2015
(23)
►
12月
(4)
►
11月
(2)
►
10月
(8)
►
9月
(8)
►
7月
(1)
►
2013
(3)
►
11月
(1)
►
9月
(1)
►
7月
(1)
►
2012
(2)
►
7月
(1)
►
6月
(1)
►
2011
(1)
►
9月
(1)
►
2009
(1)
►
7月
(1)
►
2008
(2)
►
11月
(1)
►
7月
(1)
►
2007
(3)
►
10月
(3)