#javascript #node.js #api #prometheus #grafana
Вопрос:
Я создал приложение, которое выполняет вызовы API, например, для чего-то вроде Github. Я использую Prometheus для сбора этих показателей в качестве показателей и использую Grafana для их отображения. Прямо сейчас я использую setInterval со всеми запросами, поэтому он вызывает его сам каждые 2 часа, как мне его изменить, чтобы обновляться только при вызове /metrics? Вот пример вызова API.
const websiteIssuesCall = () => {
octokit.request('/repos/{owner}/{repo}/issues', {
owner: 'corona-warn-app',
repo: 'cwa-website',
per_page: '100'
}).then(r => {
let totalCounter = 0;
let prCounter = 0;
for (const item of r.data) { // get count all issues including pull requests
if (item.state === "open") totalCounter ;
}
for (const item of r.data) { // get count only pull requests
if ('pull_request' in item) prCounter ;
}
console.log("OPEN ISSUES: " (totalCounter - prCounter));
websiteIssues = totalCounter - prCounter;
websiteIssuesProm.set(websiteIssues);
})
}
websiteIssuesCall();
setInterval(websiteIssuesCall,3600000);
const websiteIssuesProm = new prometheus.Gauge({
name: 'website_issues_value',
help: 'open website issues'
});
const websitePullRequestsProm = new prometheus.Gauge({
name: 'website_pull_requests_value',
help: 'website pull requests'
});
app.get('/metrics', (req, res) => {
res.set('Content-Type', prometheus.register.contentType)
res.end(prometheus.register.metrics())
})