★はじめに
sarの情報をMackerelに飛ばしたいなぁとおもったけど
ちょうどいいやり方が見つからないので自分で考えた
★参考
sadfを使ってjson形式でデータを取得する
https://miyakawataku.hatenablog.com/entry/20140202/1391330618
jsonデータを読み込む
https://qiita.com/kikuchiTakuya/items/53990fca06fb9ba1d8a7
pythonつかってカスタムメトリックをとばす
https://qiita.com/yhidetoshi/items/f0b20353714e3f1bd2f4
python上でコマンド実行
https://qiita.com/tdrk/items/9b23ad6a58ac4032bb3b
sarの項目の説明
https://tech-lab.sios.jp/archives/15817
★できました!
個人的に気を付けたポイントは↓↓(改善の余地がありすぎて泣ける…)
・sarの情報をjsonでとってくるためにsadfをつかったところ。
・それをpythonつかってうまいことjsonからデータ抜いてきたところ。
・うまいことutilの情報だけ抜くにあたっては泥臭くpythonを実行してどうやってとってくるかを確認した
・実行環境がCentOS7だったからかデフォルトで用意されていたpythonはpython2だったのでpython3の書き方にならないように気を付けた。
# !/usr/bin/python
import subprocess
import json
import os
import time
import sys
from random import randint
from collections import defaultdict
def mkr_prepare():
if (os.environ.get('MACKEREL_AGENT_PLUGIN_META') == '1'):
metrics = [
{
'name':'util',
'label':'util'
}
]
meta['graphs']['sysstat.disk'] = {
'label': 'sysstat-disk',
'unit': 'float',
'metrics': metrics
}
print(json.dumps(meta))
sys.exit(0)
if __name__ == '__main__':
mkr_prepare()
try:
res = subprocess.check_output(['sadf','-T','-j','--','-d','1','1'])
res_json = json.loads(res)
except:
print "Error."
util_percent = res_json['sysstat']['hosts'][0]['statistics'][0]['disk'][0]['util-percent']
print('\t'.join(['sysstat.disk.util', str(util_percent), str(time.time())]))
★試し実行
# python getDiskInfo.py
★config更新
# vi /etc/mackerel-agent/mackerel-agent.conf
★結果がコチラ
★おわりに
次はもうちょっと気の利いたマカレル監視のアイデアを投稿できるようにしておこうと思いました。。。