Telegraf에서 InfluxDB 2.0에 데이터 넣기
Grafana+InfluxDBv2+telegraf로 실내 온도 시각화
Arch Linux에서 Telegraf 설치
yay -S telegraf
Ubuntu 21.04에서 Telegraf 설치
sudo apt install telegraf
시작
sudo systemctl start telegraf
설정 파일 편집
UDP 8092에 들어온 데이터를 InfluxDB로 보냅니다.
/etc/telegraf/telegraf.conf
(省略)
[[outputs.influxdb_v2]]
urls = ["http://127.0.0.1:8086"]
token = "1zIYs1taCm3pWQOBUNk0ssYccOF7YgJcdGyJDbiFYTBf7hcPvyl5nGyt71rNVkYtg2rB
ceUwQ1r5Xzm7Mabcde=="
organization = "ekzemplaro"
bucket = "tochigi"
(省略)
[[inputs.socket_listener]]
service_address = "udp://:8092"
(省略)
서버 재부팅
sudo systemctl restart telegraf
데이터 전송
echo 'aaa temperature=30.5,humidity=50.4' | ncat -4 -u -w 1 localhost 8092
InfluxDB Data Explorer에서 데이터 확인
값을 변경하여 데이터를 보냅니다.
echo 'aaa temperature=40.6,humidity=60.5' | ncat -4 -u -w 1 localhost 8092
sleep 10
echo 'aaa temperature=50.7,humidity=70.2' | ncat -4 -u -w 1 localhost 8092
sleep 10
echo 'aaa temperature=30.5,humidity=50.4' | ncat -4 -u -w 1 localhost 8092
InfluxDB에서 데이터를 보면
Past 5m로 하면 최근 5분의 데이터를 볼 수 있습니다.
Python에서 UDP 8092로 보내는 예입니다.
to_influxdb.py
#! /usr/bin/python
#
# to_influxdb.py
#
# Jul/10/2021
#
# --------------------------------------------------------------------
import socket
#
UDP_IP = "localhost"
#
UDP_PORT = 8092
MESSAGE = "aaa temperature=12.3,humidity=45.6"
print ("UDP target IP:" + UDP_IP)
print ("UDP target port:" + str(UDP_PORT))
print ("message: " + MESSAGE)
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # UDP
sock.sendto(MESSAGE.encode('utf-8'), (UDP_IP, UDP_PORT))
# --------------------------------------------------------------------
Node.js에서 UDP 8092로 보내는 예입니다.
udpclient.js
#! /usr/bin/node
// ---------------------------------------------------------------
//
// udpclient.js
//
// Jul/11/2021
// ---------------------------------------------------------------
// UDP Sample Client
// UDP 接続先
const host = "localhost"
const c_port = 8092
var dgram = require("dgram")
var client = dgram.createSocket("udp4")
// サーバに送信するメッセージ
const message = new Buffer.from("aaa temperature=32.16,humidity=65.43")
// サーバからメッセージ受信したときの処理
client.on("message", function(msg, rinfo) {
console.log("recieved: " + msg.toString("hex"))
client.close()
})
// メッセージ送信でエラーが起きた時の処理
client.on("err", function(err) {
console.log("client error: \n" + err.stack);
console.close()
})
// Socket をクローズした時の処理
client.on("close", function() {
console.log("closed.")
})
// メッセージ送信
send(message, host, c_port);
function send(message, host, port) {
client.send(message, 0, message.length, port, host, function(err, bytes) {
console.log("*** sent ***")
})
}
// ---------------------------------------------------------------
참고 페이지
Sample UDP Server and Client on node.js
Reference
이 문제에 관하여(Telegraf에서 InfluxDB 2.0에 데이터 넣기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ekzemplaro/items/1156e8371aea84604d13텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)