UNPKG

@maticnetwork/matic-cli

Version:

Testing toolkit to setup, manage and operate Polygon networks

107 lines (83 loc) 3.42 kB
// noinspection JSCheckFunctionSignatures,JSUnresolvedVariable import { loadDevnetConfig, splitToArray } from '../common/config-utils' import { timer } from '../common/time-utils' const { runScpCommand, runSshCommand, maxRetries } = require('../common/remote-worker') const { installDocker } = require('./start.js') const yaml = require('js-yaml') const fs = require('fs') export async function setDatadogAPIKey(value, doc) { if (value !== undefined) { doc.exporters.datadog.api.key = value } fs.writeFile('./otel-config-dd.yaml', yaml.dump(doc), (err) => { if (err) { console.log('❌ Error while writing datadog YAML configs: \n', err) process.exit(1) } }) await timer(1000) } export async function setupDatadog() { let doc require('dotenv').config({ path: `${process.cwd()}/.env` }) if (process.env.TF_VAR_DOCKERIZED === 'yes') { console.log('📍Not supported for datadog at the moment') return } else { doc = await loadDevnetConfig('remote') } if (doc.devnetBorHosts.length > 0) { console.log('📍Monitoring the nodes', doc.devnetBorHosts[0]) } else { console.log('📍No nodes to monitor, please check your configs! Exiting...') process.exit(1) } const borUsers = splitToArray(doc.devnetBorUsers.toString()) let envName for (let i = 0; i < doc.devnetBorHosts.length; i++) { const host = doc.devnetBorHosts[i] const user = borUsers[i] console.log('📍Monitoring the node', host) const apiKey = process.env.DD_API_KEY envName = process.env.TF_VAR_VM_NAME if (envName === undefined) { const x = parseInt((Math.random() * 1000000).toString()) envName = `devnet-${x}` } console.log('📍Setting up datadog for', envName) let command = `DD_API_KEY=${apiKey} DD_SITE="datadoghq.com" DD_HOST_TAGS="env:${envName}" bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"` await runSshCommand(`${user}@${host}`, command, maxRetries) console.log(`📍Datadog installed on ${host}`) await installDocker(`${user}@${host}`, user) console.log('📍Docker installed') const datadogConfig = await yaml.load( fs.readFileSync('./otel-config-dd.yaml', 'utf8'), undefined ) await setDatadogAPIKey(apiKey, datadogConfig) let src = './otel-config-dd.yaml' let dest = `${user}@${host}:~/otel-config-dd.yaml` await runScpCommand(src, dest, maxRetries) src = './openmetrics-conf.yaml' dest = `${user}@${host}:~/conf.yaml` await runScpCommand(src, dest, maxRetries) command = 'sudo mv ~/conf.yaml /etc/datadog-agent/conf.d/openmetrics.d/conf.yaml' await runSshCommand(`${user}@${host}`, command, maxRetries) command = 'sudo docker run -d --net=host -v ~/otel-config-dd.yaml:/otel-local-config.yaml otel/opentelemetry-collector-contrib --config otel-local-config.yaml' await runSshCommand(`${user}@${host}`, command, maxRetries) console.log(`📍OpenCollector started on ${host}`) command = 'sudo service datadog-agent restart' await runSshCommand(`${user}@${host}`, command, maxRetries) // revert dd api key // eslint-disable-next-line no-undef, no-template-curly-in-string await setDatadogAPIKey('${DD_API_KEY}', datadogConfig) } console.log('📍Datadog devnet env : ', envName) console.log('📍Datadog setup complete') }