mirror of
https://github.com/0x1d/drift-keeper.git
synced 2025-12-18 03:36:40 +01:00
Multi-Cloud Deployment (#1)
* Introduce instances list to scale bots and add config templating * Use env var for wallet address if not provided as path param * Expose SOL price as metric * Update docs * Add auto-swap * Add Panopticon * implement backoff stategy in autoswap * Add retry logic for withdraw and swap * bump drift-sdk, update ctl.sh and docs * Update filler bot, add tx metrics * Add user-metrics * Update build and dashboard
This commit is contained in:
@@ -3,24 +3,35 @@ const { createMetrics } = require('./metrics');
|
||||
const { loadWalletBalance, loadUSDCBalance, loadSolanaMarketData, extractWalletBalance, extractUSDCBalance, extractSOLPrice } = require('./solana');
|
||||
|
||||
const WALLET_ADDRESS = process.env.WALLET_ADDRESS;
|
||||
const [registry, usdcBalanceMetric, solBalanceMetric, solUsdcBalanceMetric] = createMetrics();
|
||||
const [registry, usdcBalanceMetric, solBalanceMetric, solUsdcBalanceMetric, solPriceMetric] = createMetrics();
|
||||
const app = express();
|
||||
|
||||
app.get('/metrics', async (req, res) => {
|
||||
const trimWalletAddress = (walletAddress) => {
|
||||
return `${walletAddress.slice(0,4)}...${walletAddress.slice(walletAddress.length-4, walletAddress.length)}`;
|
||||
}
|
||||
|
||||
app.get('/metrics/:addr?', async (req, res) => {
|
||||
const walletAddress = req.params.addr || WALLET_ADDRESS;
|
||||
console.log(`Gathering metrics for ${walletAddress}`);
|
||||
res.setHeader('Content-Type', registry.contentType);
|
||||
|
||||
registry.resetMetrics();
|
||||
|
||||
let [solBalance, usdcBalance, marketData] = await Promise.all([
|
||||
loadWalletBalance(WALLET_ADDRESS),
|
||||
loadUSDCBalance(WALLET_ADDRESS),
|
||||
loadWalletBalance(walletAddress),
|
||||
loadUSDCBalance(walletAddress),
|
||||
loadSolanaMarketData()]);
|
||||
|
||||
solBalanceMetric.set({ wallet: WALLET_ADDRESS}, extractWalletBalance(solBalance));
|
||||
usdcBalanceMetric.set({ wallet: WALLET_ADDRESS}, extractUSDCBalance(usdcBalance));
|
||||
solUsdcBalanceMetric.set({ wallet: WALLET_ADDRESS}, extractWalletBalance(solBalance) * extractSOLPrice(marketData));
|
||||
|
||||
let label = { wallet: walletAddress, walletShort: trimWalletAddress(walletAddress) };
|
||||
|
||||
solBalanceMetric.set(label, extractWalletBalance(solBalance));
|
||||
usdcBalanceMetric.set(label, extractUSDCBalance(usdcBalance));
|
||||
solUsdcBalanceMetric.set(label, extractWalletBalance(solBalance) * extractSOLPrice(marketData));
|
||||
solPriceMetric.set(extractSOLPrice(marketData));
|
||||
|
||||
res.send(await registry.metrics());
|
||||
});
|
||||
|
||||
app.listen(3000, () => {
|
||||
console.log("Server is running on port 3000");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user