diff --git a/index.js b/index.js new file mode 100644 index 0000000..61adca5 --- /dev/null +++ b/index.js @@ -0,0 +1,26 @@ +const express = require('express') +const { ping } = require('bedrock-protocol') +require('dotenv').config() + +const app = express() + +app.listen(3000) + +if(!process.env.HOSTNAME) throw new Error("HOSTNAME not set") + +const template = (status)=> `# HELP minecraft_bedrock_check Information about liveness of target bedrock server +# TYPE minecraft_bedrock_check gauge +minecraft_bedrock_check{server="${process.env.HOSTNAME}"} ${status} +` + +app.get('/metrics',async (req, res) => { + try { + const hostname = process.env.HOSTNAME + await ping({host: hostname, port: 19132, connectTimeout: process.env.TIMEOUT ?? 4000}) + res.contentType("text/plain; charset=utf-8") + res.send(template("1")) + } catch (e) { + res.contentType("text/plain; charset=utf-8") + res.send(template("0")) + } +}) \ No newline at end of file