Guest User

infra@5ch telegraf+influxdb+grafana

a guest
May 6th, 2020
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.40 KB | None | 0 0
  1. 前提の話ですが、rasberry piを使用する場合、そのまま利用するとmicroSDにリソース情報を書き込むため寿命を縮めます。
  2. 事前にSSDやHDDなどの外付けに保存するようご注意ください。
  3. それぞれのconfを書き換えても良いですが、手っ取り早く /var を外付けに保存していることを前提に書いています。
  4.  
  5. ```
  6. $ sudo apt install apt-transport-https
  7. $ curl https://repos.influxdata.com/influxdb.key | sudo apt-key add -
  8. $ curl https://packages.grafana.com/gpg.key | sudo apt-key add -
  9. $ source /etc/lsb-release
  10. $ sudo curl “deb https://repos.influxdata.com/${DISTRIB_ID,,} ${DISTRIB_CODENAME} stable” | sudo tee /etc/apt/sources.list.d/influxdb.list
  11. $ sudo add-apt-repository “deb https://packages.grafana.com/oss/deb stable main”
  12. $ sudo apt update && sudo apt install influxdb telegraf grafana
  13. $ sudo systemctl enable grafana-server
  14. ```
  15.  
  16. grafanaだけサービスがdisableでしたのでインストール直後にサービスをenableに変更しています。
  17.  
  18. `/etc/telegraf/telegraf.conf` のショート版設定内容です
  19. 編集前にバックアップいただき、どういう値が取れるかも参考にいただいた方が良いと思います。
  20.  
  21. `sudo cp /etc/telegraf/telegraf.conf /etc/telegraf/telegraf.conf.bak`
  22.  
  23. 以下は普通に `sudo vim /etc/telegraf/telegraf.conf` です。
  24.  
  25. ```
  26. [global_tags]
  27. [agent]
  28. interval = "60s"
  29. round_interval = true
  30. metric_batch_size = 1000
  31. metric_buffer_limit = 10000
  32. collection_jitter = "0s"
  33. flush_interval = "60s"
  34. flush_jitter = "0s"
  35. precision = ""
  36. hostname = ""
  37. omit_hostname = false
  38. [[outputs.influxdb]]
  39. [[inputs.cpu]]
  40. percpu = true
  41. totalcpu = true
  42. collect_cpu_time = false
  43. report_active = false
  44. [[inputs.disk]]
  45. mount_points = ["/","/var","/var/swap"]
  46. ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
  47. [[inputs.io]]
  48. [[inputs.diskio]]
  49. [[inputs.kernel]]
  50. [[inputs.mem]]
  51. [[inputs.processes]]
  52. [[inputs.swap]]
  53. [[inputs.system]]
  54. [[inputs.net]]
  55. interfaces = ["eth0","wlan0"]
  56. [[inputs.netstat]]
  57. [[inputs.systemd_units]]
  58. unittype = "service"
  59. [[inputs.wireless]]
  60. host_proc = "/proc"
  61.  
  62. # ここからはカスタムデータ
  63. # CPU温度をinfluxdbに投入する
  64. [[inputs.exec]]
  65. commands = [ "sh /usr/local/bin/therm.sh" ]
  66. name_override = "cpu_frequency"
  67. data_format = "value"
  68. data_type = "float"
  69.  
  70. # boincのCSVを作成するコマンドとcsvをinfluxdbに投入する
  71. [[inputs.exec]]
  72. commands = [ "sh /usr/local/bin/boinc-task.sh" ]
  73. [[inputs.file]]
  74. files = ["/var/tmp/boinc-task.csv"]
  75. name_override = "boinc_task_state"
  76. data_format = "csv"
  77. csv_header_row_count = 1
  78. csv_skip_rows = 0
  79. csv_delimiter = ","
  80. csv_trim_space = false
  81. csv_tag_columns = ["name"]
  82. ```
  83.  
  84. /usr/local/binに配置したファイルの中身です。
  85.  
  86. cat /usr/local/bin/therm.sh
  87. ```
  88. #!/bin/sh
  89. echo "scale=3; `cat /sys/class/thermal/thermal_zone0/temp`/1000" | /usr/bin/bc
  90. ```
  91.  
  92. cat /usr/local/bin/boinc-task.sh
  93. ```
  94. #!/bin/sh
  95. /usr/bin/boinccmd --get_tasks > /var/tmp/tasks.txt
  96. grep -v "[0-9].*)" /var/tmp/tasks.txt | grep -v "=" | sed -e "s/^\ \ \ //g" | grep -e "^name" -e "^ready" -e "^state" -e "^scheduler" -e "^active_task_state" | sed -e "s/^\(name.*$\)/\1,/g" | sed -e "s/^\(ready.*$\)/\1,/g" | sed -e "s/^\(state.*$\)/\1,/g" | sed -e "s/^\(scheduler.*$\)/\1,/g" | sed -e "s/^\(active.*$\)/\1\\[EOF\]/g" | xargs | sed -e "s/\[EOF\] /\n/g" | sed -e "s/\[EOF\]//g" | sed -e "s/^name:\ //g"| sed -e "s/,\ ready\ to\ report:\ /,/g" | sed -e "s/,\ scheduler\ state:\ /,/g" | sed -e "s/,\ state:\ /,/g" | sed -e "s/,\ active_task_state:\ /,/g"> /var/tmp/pre_insert-boinc-task.csv
  97. echo “name,ready to report,state,schedule state,active_task_state” > /var/tmp/boinc-task.csv
  98. cat /var/tmp/pre_insert-boinc-task.csv >> /var/tmp/boinc-task.csv
  99. ```
  100. ※ コードが汚いので誰かリファクタリングお願いします(ぉぃ
  101.  
  102. telegrafの設定が終わったらサービスをreloadです
  103.  
  104. `sudo systemctl reload telegraf`
  105.  
  106. grafanaはサービスが停止しているのでサービス起動から実施で
  107.  
  108. `sudo systemctl start grafana-server`
  109.  
  110. grafanaは設定ファイルがなく、WebGUIから操作します。
  111. http://localhost or Private IP:3000/ でアクセスします。
  112.  
  113. ログイン画面が表示されますので以下のユーザでログインし、パスワード変更します。
  114.  
  115. ユーザ名 / パスワード
  116. admin / admin
  117.  
  118. ログインしたらサイドメニューに + ボタンがあるので押すとDashboardのimport画面になります。
  119. テンプレートにするdashboardのIDを入力するか、生のjsonをimportします。
  120.  
  121. おすすめのdashboad IDは5955で、以下にjsonファイル一緒にまとめます。
  122. また5955をcustomしたdashboardも記載しますが、custom版はboincのタスク進捗状況やCPU温度を表示するようカスタマイズされていますので参考にご覧ください。
  123.  
  124. - original: Telegraf - system metrics
  125. https://grafana.com/api/dashboards/5955/revisions/1/download
  126.  
  127. - original: Telegraf - system metrics(json)
  128. https://grafana.com/api/dashboards/5955/revisions/1/download
  129.  
  130. - custom: Telegraf - system metrics
  131. https://pastebin.com/hTUHPtQD
  132.  
  133. オリジナル版を使用する場合は表示されたダッシュボードでほとんど N/AやNoneだと思いますので、各項目を編集できるため編集します。
  134. SQLみたいにselect文が書かれているのですが、このselect文がinfluxdbから取得しているselect文になっています。
  135. カスタム版はboincのタスク進捗状況やCPU温度がN/Aやアイテムがカスタムされているためデータが取れていないはずです。
  136.  
  137. 変更前
  138.  
  139. ```
  140. WHERE ("host" =~ /^$server$/)
  141. ```
  142.  
  143. 変更後
  144.  
  145. ```
  146. WHERE ("host" =~ /^$server$/)
  147. ```
  148.  
  149. おかしいのはWHERE句の$server$の前にある ^ が不要で、これがあることでN/AやNone表示になっています。
  150. うまく取得できればリアルタイムで表示されます。
  151.  
  152. telegrafとinfluxdbとgrafanaはうまく活用すると株価、外貨の変動チェックなどにも利用できます(w
  153. Good luck.
  154.  
  155. 参考にしたURL
  156. ttps://docs.influxdata.com/telegraf/v1.14/introduction/installation/
  157. ttps://grafana.com/docs/grafana/latest/installation/
  158. ttps://goozenlab.com/blog/2019/08/telegraf-pi-install/
Add Comment
Please, Sign In to add comment