localhost:9100/metrics 에서 검색.
apt install -y python3-pip
python3 -m pip install prometheus_client
vim main.py
import http.server
import time
from prometheus_client import Histogram, start_http_server
histogram = Histogram(
'response_time_histogram',
'Response time for a request',
buckets=[0.00028, 0.00030, 0.00032, 0.00034])
class Handler(http.server.BaseHTTPRequestHandler):
def do_GET(self):
start =time.time()
self.send_response(200)
self.wfile.write(b"Histogram Test")
histogram.observe(time.time() - start)
if __name__ == "__main__":
start_http_server(8081)
server = http.server.HTTPServer(('localhost',8080), Handler)
print('Exporter running on 8081')
print('Server running on 8080')
server.serve_forever()
python3 main.py
watch -n 0.1 'curl -s http://localhost:8081 | grep response'
apt install -y nodejs npm
cd ~
mkdir agent-node
cd agent-node
npm init -y
npm i express prom-client
vim server.js
const express = require('express');
const client = require('prom-client');
const app = express();
const register = new client.Registry();
const summary = new client.Summary({
name: 'response_time_summary',
help: 'Response time for a request',
percentiles: [0.5, 0.9, 0.99],
register: [register],
});
app.use((req, res, next) => {
req.startTime = Date.now();
next();
});
app.get('/', (req, res) => {
res.send('Summary Test');
summary.observe((Date.now() - req.startTime) / 1000);
});
app.get('/metrics', async (req, res) => {
res.end(await register.metrics());
});
port = 8080;
app.listen(port, () => {
console.log(`Running on ${port}`);
});
node server.js
다른 창에서
watch -n 0.1 'curl -s http://localhost:8080'
또 다른창에서
curl -s http://localhost:8080/metrics
# HELP response_time_summary Response time for a request
# TYPE response_time_summary summary
response_time_summary{quantile="0.5"} 0.000346183500385505
response_time_summary{quantile="0.9"} 0.0018920993227990966
response_time_summary{quantile="0.99"} 0.002954221218961626
response_time_summary_sum 0.4840000000000004
response_time_summary_count 1307
0.5 초, 0.9초 0.99초이상 소요된 응답 갯수 : summary_count
총 응답의 합 : summary_sum