telegraf
インフラやアプリケーションの監視に必要なメトリクス収集エージェント「Telegraf」を設定し、システム指標の収集、データベースやサービスへの入力プラグイン設定、InfluxDBやPrometheusへの出力設定、カスタムメトリックパイプラインの構築を支援するSkill。
📜 元の英語説明(参考)
Configure Telegraf as a metrics collection agent for infrastructure and application monitoring. Use when a user needs to collect system metrics, set up input plugins for databases and services, configure output to InfluxDB or Prometheus, or build custom metric pipelines.
🇯🇵 日本人クリエイター向け解説
インフラやアプリケーションの監視に必要なメトリクス収集エージェント「Telegraf」を設定し、システム指標の収集、データベースやサービスへの入力プラグイン設定、InfluxDBやPrometheusへの出力設定、カスタムメトリックパイプラインの構築を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o telegraf.zip https://jpskill.com/download/15461.zip && unzip -o telegraf.zip && rm telegraf.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15461.zip -OutFile "$d\telegraf.zip"; Expand-Archive "$d\telegraf.zip" -DestinationPath $d -Force; ri "$d\telegraf.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
telegraf.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
telegrafフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Telegraf
概要
Telegraf をセットアップして、システム、データベース、およびアプリケーションからメトリクスを収集、処理、および転送します。入力/出力プラグインの設定、メトリクスのフィルタリング、集約プロセッサ、およびデプロイメントパターンについて説明します。
手順
タスク A: 基本的なシステムメトリクスの収集
# /etc/telegraf/telegraf.conf — システムメトリクスを収集して InfluxDB に送信
[global_tags]
environment = "production"
region = "us-east-1"
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
flush_interval = "10s"
hostname = ""
omit_hostname = false
[[outputs.influxdb_v2]]
urls = ["http://influxdb:8086"]
token = "$INFLUX_TOKEN"
organization = "myorg"
bucket = "infrastructure"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
[[inputs.mem]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.net]]
interfaces = ["eth0", "ens5"]
[[inputs.system]]
[[inputs.processes]]
[[inputs.kernel]]
タスク B: アプリケーションとデータベースの入力
# /etc/telegraf/telegraf.d/databases.conf — データベース監視の入力
[[inputs.postgresql]]
address = "postgres://telegraf:password@localhost:5432/myapp?sslmode=disable"
databases = ["myapp"]
[inputs.postgresql.tags]
service = "postgres"
[[inputs.mysql]]
servers = ["telegraf:password@tcp(localhost:3306)/"]
metric_version = 2
gather_table_schema = true
gather_process_list = true
gather_slave_status = true
[inputs.mysql.tags]
service = "mysql"
[[inputs.redis]]
servers = ["tcp://localhost:6379"]
password = "$REDIS_PASSWORD"
[inputs.redis.tags]
service = "redis"
[[inputs.nginx]]
urls = ["http://localhost:8080/nginx_status"]
[inputs.nginx.tags]
service = "nginx"
# /etc/telegraf/telegraf.d/docker.conf — コンテナメトリクス
[[inputs.docker]]
endpoint = "unix:///var/run/docker.sock"
gather_services = false
container_names = []
perdevice = true
total = true
[inputs.docker.tags]
input = "docker"
タスク C: Prometheus の入力/出力
# /etc/telegraf/telegraf.d/prometheus.conf — Prometheus エンドポイントをスクレイピング
[[inputs.prometheus]]
urls = [
"http://app-server:8080/metrics",
"http://payment-service:8080/metrics",
]
metric_version = 2
url_tag = "scrape_url"
# Prometheus がスクレイピングするための Prometheus エンドポイントとしてメトリクスを公開
[[outputs.prometheus_client]]
listen = ":9273"
metric_version = 2
export_timestamp = true
タスク D: メトリクスの処理とフィルタリング
# /etc/telegraf/telegraf.d/processing.conf — メトリクスをフィルタリングおよび変換
[[processors.rename]]
[[processors.rename.replace]]
measurement = "cpu"
dest = "system_cpu"
[[processors.converter]]
[processors.converter.fields]
float = ["usage_idle", "usage_user", "usage_system"]
integer = ["uptime"]
# ノイズの多いメトリクスを削除
[[processors.filter]]
namepass = ["cpu", "mem", "disk", "net", "docker*", "postgresql*"]
fielddrop = ["inodes_*"]
# 送信する前にメトリクスを集約
[[aggregators.basicstats]]
period = "60s"
drop_original = false
stats = ["mean", "max", "min", "count"]
namepass = ["http_response_time"]
# フィールド値に基づいてメトリクスにタグ付け
[[processors.starlark]]
source = '''
def apply(metric):
cpu = metric.fields.get("usage_percent", 0)
if cpu > 90:
metric.tags["cpu_alert"] = "critical"
elif cpu > 70:
metric.tags["cpu_alert"] = "warning"
return metric
'''
タスク E: HTTP とカスタム入力
# /etc/telegraf/telegraf.d/http.conf — HTTP エンドポイントのチェックと API ポーリング
[[inputs.http_response]]
urls = [
"https://api.example.com/health",
"https://web.example.com",
]
response_timeout = "5s"
method = "GET"
follow_redirects = true
response_status_code = 200
[inputs.http_response.tags]
check = "uptime"
[[inputs.http]]
urls = ["http://app-server:8080/api/stats"]
method = "GET"
data_format = "json"
json_name_key = "metric_name"
json_time_key = "timestamp"
json_time_format = "unix"
[inputs.http.tags]
source = "app-api"
# メトリクス用のカスタムスクリプトを実行
[[inputs.exec]]
commands = ["/opt/scripts/check_queue_depth.sh"]
timeout = "5s"
data_format = "influx"
interval = "30s"
タスク F: Docker デプロイメント
# docker-compose.yml — InfluxDB を使用した Telegraf
services:
telegraf:
image: telegraf:1.29
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
- ./telegraf.d:/etc/telegraf/telegraf.d:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
environment:
- HOST_PROC=/host/proc
- HOST_SYS=/host/sys
- INFLUX_TOKEN=${INFLUX_TOKEN}
user: telegraf:$(stat -c '%g' /var/run/docker.sock)
influxdb:
image: influxdb:2.7
ports:
- "8086:8086"
volumes:
- influxdb_data:/var/lib/influxdb2
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=admin
- DOCKER_INFLUXDB_INIT_PASSWORD=changeme123
- DOCKER_INFLUXDB_INIT_ORG=myorg
- DOCKER_INFLUXDB_INIT_BUCKET=infrastructure
volumes:
influxdb_data:
ベストプラクティス
- モジュール式の構成には
telegraf.d/ディレクトリを使用します — 入力カテゴリごとに 1 つのファイル - 出力先の停止を処理するのに十分な高さに
metric_buffer_limitを設定します - カーディナリティとストレージコストを削減するために
namepass/namedropフィルタを使用します - デプロイする前にプラグイン構成を確認するために
--testフラグを指定して Telegraf を実行します - 複数のプロセッサをチェーンする代わりに、複雑な変換には Starlark プロセッサを使用します
- 収集の問題を検出するために
[[inputs.internal]]で Telegraf の内部メトリクスを監視します
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Telegraf
Overview
Set up Telegraf to collect, process, and forward metrics from systems, databases, and applications. Covers input/output plugin configuration, metric filtering, aggregation processors, and deployment patterns.
Instructions
Task A: Basic System Metrics Collection
# /etc/telegraf/telegraf.conf — Collect system metrics and send to InfluxDB
[global_tags]
environment = "production"
region = "us-east-1"
[agent]
interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
flush_interval = "10s"
hostname = ""
omit_hostname = false
[[outputs.influxdb_v2]]
urls = ["http://influxdb:8086"]
token = "$INFLUX_TOKEN"
organization = "myorg"
bucket = "infrastructure"
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
[[inputs.mem]]
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.net]]
interfaces = ["eth0", "ens5"]
[[inputs.system]]
[[inputs.processes]]
[[inputs.kernel]]
Task B: Application and Database Inputs
# /etc/telegraf/telegraf.d/databases.conf — Database monitoring inputs
[[inputs.postgresql]]
address = "postgres://telegraf:password@localhost:5432/myapp?sslmode=disable"
databases = ["myapp"]
[inputs.postgresql.tags]
service = "postgres"
[[inputs.mysql]]
servers = ["telegraf:password@tcp(localhost:3306)/"]
metric_version = 2
gather_table_schema = true
gather_process_list = true
gather_slave_status = true
[inputs.mysql.tags]
service = "mysql"
[[inputs.redis]]
servers = ["tcp://localhost:6379"]
password = "$REDIS_PASSWORD"
[inputs.redis.tags]
service = "redis"
[[inputs.nginx]]
urls = ["http://localhost:8080/nginx_status"]
[inputs.nginx.tags]
service = "nginx"
# /etc/telegraf/telegraf.d/docker.conf — Container metrics
[[inputs.docker]]
endpoint = "unix:///var/run/docker.sock"
gather_services = false
container_names = []
perdevice = true
total = true
[inputs.docker.tags]
input = "docker"
Task C: Prometheus Input/Output
# /etc/telegraf/telegraf.d/prometheus.conf — Scrape Prometheus endpoints
[[inputs.prometheus]]
urls = [
"http://app-server:8080/metrics",
"http://payment-service:8080/metrics",
]
metric_version = 2
url_tag = "scrape_url"
# Expose metrics as Prometheus endpoint for Prometheus to scrape
[[outputs.prometheus_client]]
listen = ":9273"
metric_version = 2
export_timestamp = true
Task D: Metric Processing and Filtering
# /etc/telegraf/telegraf.d/processing.conf — Filter and transform metrics
[[processors.rename]]
[[processors.rename.replace]]
measurement = "cpu"
dest = "system_cpu"
[[processors.converter]]
[processors.converter.fields]
float = ["usage_idle", "usage_user", "usage_system"]
integer = ["uptime"]
# Drop noisy metrics
[[processors.filter]]
namepass = ["cpu", "mem", "disk", "net", "docker*", "postgresql*"]
fielddrop = ["inodes_*"]
# Aggregate metrics before sending
[[aggregators.basicstats]]
period = "60s"
drop_original = false
stats = ["mean", "max", "min", "count"]
namepass = ["http_response_time"]
# Tag metrics based on field values
[[processors.starlark]]
source = '''
def apply(metric):
cpu = metric.fields.get("usage_percent", 0)
if cpu > 90:
metric.tags["cpu_alert"] = "critical"
elif cpu > 70:
metric.tags["cpu_alert"] = "warning"
return metric
'''
Task E: HTTP and Custom Inputs
# /etc/telegraf/telegraf.d/http.conf — HTTP endpoint checks and API polling
[[inputs.http_response]]
urls = [
"https://api.example.com/health",
"https://web.example.com",
]
response_timeout = "5s"
method = "GET"
follow_redirects = true
response_status_code = 200
[inputs.http_response.tags]
check = "uptime"
[[inputs.http]]
urls = ["http://app-server:8080/api/stats"]
method = "GET"
data_format = "json"
json_name_key = "metric_name"
json_time_key = "timestamp"
json_time_format = "unix"
[inputs.http.tags]
source = "app-api"
# Execute custom scripts for metrics
[[inputs.exec]]
commands = ["/opt/scripts/check_queue_depth.sh"]
timeout = "5s"
data_format = "influx"
interval = "30s"
Task F: Docker Deployment
# docker-compose.yml — Telegraf with InfluxDB
services:
telegraf:
image: telegraf:1.29
volumes:
- ./telegraf.conf:/etc/telegraf/telegraf.conf:ro
- ./telegraf.d:/etc/telegraf/telegraf.d:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
environment:
- HOST_PROC=/host/proc
- HOST_SYS=/host/sys
- INFLUX_TOKEN=${INFLUX_TOKEN}
user: telegraf:$(stat -c '%g' /var/run/docker.sock)
influxdb:
image: influxdb:2.7
ports:
- "8086:8086"
volumes:
- influxdb_data:/var/lib/influxdb2
environment:
- DOCKER_INFLUXDB_INIT_MODE=setup
- DOCKER_INFLUXDB_INIT_USERNAME=admin
- DOCKER_INFLUXDB_INIT_PASSWORD=changeme123
- DOCKER_INFLUXDB_INIT_ORG=myorg
- DOCKER_INFLUXDB_INIT_BUCKET=infrastructure
volumes:
influxdb_data:
Best Practices
- Use
telegraf.d/directory for modular configs — one file per input category - Set
metric_buffer_limithigh enough to handle output destination outages - Use
namepass/namedropfilters to reduce cardinality and storage costs - Run Telegraf with
--testflag to verify plugin configuration before deploying - Use Starlark processor for complex transformations instead of chaining multiple processors
- Monitor Telegraf's internal metrics with
[[inputs.internal]]to detect collection issues