めも;書きかけ
前提
- バージョン v2c
- Community abc-abc
snmp のインストール
net-snmp のインストール
# apt install snmp
mib ファイルのインストール
/etc/apt/sources.list
に non-free
があることを確認してから snmp-mibs-downloader をインストール。
# apt -y install snmp-mibs-downloader
# download-mibs
これで /etc/snmp-mibs-downloader/snmp-mibs-downloader.conf
に定義されている mib ファイルがインストールされます。
/etc/snmp-mibs-downloader
の下に他の定義ファイルもありますので、必要に応じて追加可能です。
Net-SNMP のページから追加 mib ファイルをダウンロード
Net-SNMP のページに mib ファイルがありますので Net-SNMP Distributed MIBs からダウンロード。
# cd /usr/share/snmp
# mkdir netsnmp-mibs && cd netsnmp-mibs
# wget -r -N -nH -nd -A txt -np -l 2 http://www.net-snmp.org/docs/mibs/
これらの mib ファイルを読み込むように設定
download-mibs
でインストールされたディレクトリは追加されていますが /usr/share/snmp/netsnmp-mibs
がないので追加します。
mib ファイルを入れたディレクトリを mibdirs の行に 「:」 で繋いで書きます。
行を分けるときは mibdirs の後の +を忘れると最後の行しか有効になりません注意。
mibs all
mibdirs /usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf
mibdirs +/usr/share/snmp/netsnmp-mibs
mibdirs +/usr/share/snmp/Aruba-mibs
mibdirs +/usr/share/snmp/FortiGate-mibs
# デフォルトのバージョンと、コミュニティー名 (いちいちコマンドラインで指定しなくて良くなる)
defVersion v2c
defCommunity abc-abc
strictCommentTerm false
grafana, telegraf, influxdb のインストール
リポジトリと、その PGP 署名キーの追加
Grafana
apt install -y apt-transport-https
apt install -y software-properties-common wget
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list
telegraf, influxdb
wget -q -O /usr/share/keyrings/influxdata.key https://repos.influxdata.com/influxdata-archive_compat.key
source /etc/os-release
echo "deb [signed-by=/usr/share/keyrings/influxdata.key] https://repos.influxdata.com/debian stable main" | tee /etc/apt/sources.list.d/influxdb.list
grafana telegraf influxdb のインストール
apt update
apt install grafana telegraf influxdb2
バージョン確認
# grafana -v
Incorrect Usage: flag provided but not defined: -homepath
...(略)
VERSION:
10.0.1
...(略)
# telegraf --version
Telegraf 1.27.1 (git: HEAD@a830df8f)
# influx version
Influx CLI dev (git: none) build_date: 2023-04-28T14:24:14Z
取りあえず無事にインストール完了
telegraf のデフォルトの config ファイルを生成する
% telegraf config > /etc/telegraf/telegraf.conf
% telegraf config --input-filter cpu:mem:net:swap --output-filter influxdb_v2 > /etc/telegraf/telegraf.conf
基本的には config は、これで生成するより Telegraf の Web 画面から作成するのが良いように思える。
複数の機器を監視する場合 /etc/telegraf/telegraf.conf
に全て書くことも出来るが、/etc/telegraf/telegraf.conf
を空にして /etc/telegraf/telegraf.d/
の下に機器ごとにファイルを作成するとよい。
ただ、ファイル毎に独立している訳ではなく cat で繋げて読み込まれるようなものなので、無理に分割する必要は無い。
/etc/telegraf/telegraf.conf 起動時に指定されているファイル。無いとエラーになる。
/etc/telegraf/telegraf.d/*.conf あると追加で読み込まれるファイル。拡張子は .conf。
[agent]
## デフォルトの収集間隔
interval = "60s"
## 収集間隔の丸め
## 例えば、interval="10s" とした場合、:00、:10、:20 に収集します。
## 0 秒, 0分から interval の計算をします。
round_interval = true
## Telegraf は、最大で metric_batch_size メトリックのバッチでメトリックを出力に送信します。
## Telegraf が出力プラグインに送信する書き込みのサイズの指定です。
metric_batch_size = 1000
## 出力あたりの未書き込みメトリックの最大数。この値を大きくすると、
## 最大メモリ使用量が増えるという犠牲を払ってメトリックをドロップすることなく、
## 出力のダウンタイムを長くすることができます。
metric_buffer_limit = 10000
## コレクションのジッターは、ランダムな量でコレクションをジッターするために使用されます。
## 各プラグインは、収集する前にジッター内でランダムな時間スリープします。
## これは、多くのプラグインが sysfs のようなものをクエリするのを避けるために使用できます。
## 同時に、システムに測定可能な影響を与える可能性があります。
collection_jitter = "0s"
## すべての出力のデフォルトのフラッシング間隔。最大 flush_interval は、
## flush_interval + flush_jitter になります
flush_interval = "60 秒"
## ランダムな量だけフラッシュ間隔を揺らします。これは主に、多数の
## Telegraf インスタンスを実行しているユーザーの大きな書き込みスパイクを回避するためです。
## つまり、5 秒のジッターと 10 秒の間隔は、フラッシュが 10 ~ 15 秒ごとに発生することを意味します
flush_jitter = "0s"
## デフォルトまたは「0s」に設定されている場合、精度は収集間隔と同じ
## タイムスタンプの順序に設定され、最大値は 1 秒です。
## 例えば, interval = "10s" の場合、精度は "1s" になります。
## interval = "250ms" の場合、精度は "1ms" になります。
## 精度はサービス入力には使用されません。適切な精度でタイムスタンプを
## 設定するのは、個々のサービス入力次第です。
## 有効な時間単位は、「ns」、「us」(または「µs」)、「ms」、「s」です。
precision = ""
## デバッグレベルのログを記録するか。
debug = true
## エラー レベルのメッセージのみをログに記録するか。
quiet = false
## ログ ターゲットはログの宛先を制御し、「file」、「stderr」、
## または Windows では「eventlog」のいずれかになります。
## 「file」に設定すると、出力ファイルは「logfile」設定によって決定されます。
# logtarget = "file"
## "file" ログターゲットを使用する場合にログに記録されるファイルの名前。
## 空の文字列に設定すると、ログは stderr に書き込まれます。
# logfile = ""
## ログファイルは、指定された時間間隔の後にローテーションされます。
## 0 に設定すると、時間ベースのローテーションは実行されません。
## ログは書き込まれたときにのみローテーションされます。
## ログ アクティビティがない場合、ローテーションが遅れる可能性があります。
# logfile_rotation_interval = "0d"
## 指定したサイズよりも大きくなると、ログファイルはローテーションされます。
## 0 に設定すると、サイズ ベースのローテーションは実行されません。
logfile_rotation_max_size = "100MB"
## 保持するローテーション アーカイブの最大数。古いログは削除されます。
## -1 に設定すると、アーカイブは削除されません。
logfile_rotation_max_archives = 30
## ログ記録時に使用するタイムゾーンを選択するか、現地時間に「local」と入力します。
## 例: アメリカ/シカゴ
# log_with_timezone = ""
## デフォルトのホスト名をオーバーライドします。空の場合は os.Hostname() を使用します
hostname = ""
## true に設定すると、telegraf エージェントに「host」タグを設定しません。
omit_hostname = false
各社のプライベート mib の入手先
- Cisco の mib は github からもダウンロードできます。機種毎の mib は supportlists で、パスを確認し https://cisco.github.io/cisco-mibs/supportlists/[product]/[product]supportlist.html を
wget -O- <URL> | sed -ne 's/.*"\([^"]*.my\)".*/\1/p' | xargs -n 1 wget
で取ってくることができます。
- Fortigate は Fortigate の WebUI からダウンロード
- PaloAlto の TECH DOCS
- Aruba AP/Switch は Aruba サポートPortal (ユーザ登録が必要)
- NEC IX ルータ、そのほか L2/L3 Switch, QX (Wi-Fi AP) などは製品ページのダウンロードから
- Allied Telesis (CentreCOM) は、各機種のファームのダウンロードページから
- Apresia (日立関連企業)
- YAMAHA
- Alaxala ファームと一緒に CD で供給?
Kapacitor を telegraf と influxdb の間に挟むとデータの前処理ができるらしい。