Beszel Application Review (third final installation) #120
Replies: 4 comments
-
I appreciate the info and suggestions! There will be some improvements to alerts in the future, including webhook delivery and the ability to change the time threshold before the alert triggers. Changing or adding recipient emails should be doable as well. I plan to add tags or groups for systems at some point, so maybe I can integrate that with alerts somehow. In the meantime, see below for bulk adding alerts with the API. You can share existing systems with other users on the PocketBase systems page. There's no group sharing, so it can be tedious if you have lots of users, but in that circumstance I recommend using the API (example below). I agree that some kind of SNMP support would be useful, but I don't have any direct experience with it myself, so I'm not sure where to even start with that. I can look further into it down the road a bit after higher priority features have been implemented. As far as http / tcp monitors, I do recommend Uptime Kuma. I use it and have contributed to it, and it does the job pretty well. I won't completely shut off the possibility of adding a basic implementation to Beszel, but it's not something I'm planning to do in the very near future. REST API examplesFor bulk operations, the REST API is useful. Here are examples for tasks you mentioned. They use the official PocketBase JS SDK with Bun / TypeScript. Add users to systemsimport PocketBase from 'pocketbase'
const pb = new PocketBase('http://localhost:8090')
const systemNames = ['localhost', 'kagemusha']
const userEmails = ['[email protected]', '[email protected]']
// authenticate as admin
await pb.admins.authWithPassword(process.env.EMAIL!, process.env.PASSWORD!)
// get user ids
const userIds = await pb
.collection('users')
.getFullList({
fields: 'id',
filter: `email='${userEmails.join(`'||email='`)}'`,
})
.then((records) => records.map(({ id }) => id))
// get id and current users for systems
const systemsData = await pb.collection('systems').getFullList({
fields: 'id,users',
filter: `name='${systemNames.join(`'||name='`)}'`,
})
// loop through systems and add users to them
for (const system of systemsData) {
const updatedUsers = Array.from(new Set([...system.users, ...userIds]))
await pb.collection('systems').update(system.id, { users: updatedUsers })
} Add alerts for all systems (can be narrowed down with more filters)import PocketBase from 'pocketbase'
const pb = new PocketBase('http://localhost:8090')
const userId = '04zda3gvpbc5l6o'
// authenticate as admin
await pb.admins.authWithPassword(process.env.EMAIL!, process.env.PASSWORD!)
// get all systems accessible to the user
const systems = await pb.collection('systems').getFullList({
fields: 'id',
filter: `users.id ?= '${userId}'`,
})
// get current alerts for the user
const currentAlerts = await pb.collection('alerts').getFullList({
fields: 'name,system',
filter: `user='${userId}'`,
})
// loop through systems and create alerts if they don't exist
for (const system of systems) {
// create status alert
if (!currentAlerts.find((alert) => alert.name === 'Status' && alert.system === system.id)) {
await pb.collection('alerts').create({
user: userId,
system: system.id,
name: 'Status',
})
}
// create cpu alert
if (!currentAlerts.find((alert) => alert.name === 'CPU' && alert.system === system.id)) {
await pb.collection('alerts').create({
user: userId,
system: system.id,
name: 'CPU',
value: 60,
})
}
} |
Beta Was this translation helpful? Give feedback.
-
@delta-whiplash @henrygd sorry for not related question, but where did you get the dashboard like your screenshot? |
Beta Was this translation helpful? Give feedback.
-
@ndaidong The Beszel application is at / while PocketBase is at /_/. If your PocketBase URL is http://0.0.0.0:8090/_/, go to http://0.0.0.0:8090 instead. If you can't login, try creating a user with the admin role in the users table through PocketBase. Otherwise delete your |
Beta Was this translation helpful? Give feedback.
-
@henrygd ah I've got it. Thank you for your great tool. This is exactly what I need for a multi-server resource monitor. I will repalce my current [Grafana + Prometheus + Node_Exporter] setup with Beszel. |
Beta Was this translation helpful? Give feedback.
-
Today I installed Beszel hub on a dedicated baremetal server to take advantage of its monitoring capabilities.
Overall, the installation process was relatively smooth, and I was able to recreate the agents without major issues.
However, I did encounter some minor difficulties with the administrator experience. I would like to suggest a few features that would improve the usability and efficiency of the application.
Firstly, I would like to propose the ability to set global alerts for similar machines. For instance, I have multiple servers with similar configurations, and it would be helpful to define alerts that apply to all of them at once. This could be achieved by creating groups of similar machines and allowing administrators to define alerts for these groups.
Additionally, I would appreciate the ability to delegate machines to specific users or user groups. This would enable more fine-grained control over who has access to which machines and alerts.
Another feature that I believe would be beneficial is the ability to customize the email template for alerts. This would allow me to personalize the alerts for my users and provide them with more relevant information.
Furthermore, I found that the alert system works well, but I did experience some difficulty in understanding how to set up the email recipient for alerts. I eventually realized that the email address was simply the one associated with the user who created the alert, which makes sense.
When I attempted to delegate management of my machines from my administrator user to my standard user, I realized that it would be extremely useful to have bulk editing capabilities. This would allow me to manage multiple servers at once, which would be a significant time-saver.
Lastly, I would like to suggest the integration of SNMP (Simple Network Management Protocol) support in future updates. This would provide even more monitoring capabilities and expand the application's usefulness.
In conclusion, I appreciate the Beszel application's ability to simplify monitoring and reduce complications. I believe that with a few additional features and improvements, it could become an even more powerful tool for system administrators. Thank you for creating this valuable application, and I look forward to seeing future updates!
Just wanted to share my experience with you :)
PS : Is there any plan for https/tcp sensors (to monitor website or a tcp port avaiability ) ? or should I install uptime-kuma next to beszel?
Beta Was this translation helpful? Give feedback.
All reactions