Add MongoDB/mongod service monitoring and description
This commit is contained in:
parent
a33b019d83
commit
07886ec317
@ -439,6 +439,7 @@ impl ServiceCollector {
|
|||||||
"postgresql" | "postgres" => self.get_postgres_connections().await.map(|s| vec![s]),
|
"postgresql" | "postgres" => self.get_postgres_connections().await.map(|s| vec![s]),
|
||||||
"mysql" | "mariadb" => self.get_mysql_connections().await.map(|s| vec![s]),
|
"mysql" | "mariadb" => self.get_mysql_connections().await.map(|s| vec![s]),
|
||||||
"redis" | "redis-immich" => self.get_redis_info().await.map(|s| vec![s]),
|
"redis" | "redis-immich" => self.get_redis_info().await.map(|s| vec![s]),
|
||||||
|
"mongodb" | "mongod" => self.get_mongodb_info().await.map(|s| vec![s]),
|
||||||
"gitea" => self.get_gitea_info().await.map(|s| vec![s]),
|
"gitea" => self.get_gitea_info().await.map(|s| vec![s]),
|
||||||
"immich-server" | "immich" => self.get_immich_info().await.map(|s| vec![s]),
|
"immich-server" | "immich" => self.get_immich_info().await.map(|s| vec![s]),
|
||||||
"vaultwarden" => self.get_vaultwarden_info().await.map(|s| vec![s]),
|
"vaultwarden" => self.get_vaultwarden_info().await.map(|s| vec![s]),
|
||||||
@ -1042,6 +1043,45 @@ impl ServiceCollector {
|
|||||||
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn get_mongodb_info(&self) -> Option<String> {
|
||||||
|
// Check MongoDB connections on port 27017
|
||||||
|
let output = Command::new("/run/current-system/sw/bin/ss")
|
||||||
|
.args(["-tn", "state", "established", "dport", "= :27017"])
|
||||||
|
.stdout(Stdio::piped())
|
||||||
|
.stderr(Stdio::piped())
|
||||||
|
.output()
|
||||||
|
.await
|
||||||
|
.ok()?;
|
||||||
|
|
||||||
|
if output.status.success() {
|
||||||
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
||||||
|
let connection_count = stdout.lines().count().saturating_sub(1);
|
||||||
|
if connection_count > 0 {
|
||||||
|
return Some(format!("{} connections", connection_count));
|
||||||
|
} else {
|
||||||
|
return Some("No connections".to_string());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fallback: check data directory size
|
||||||
|
let output = Command::new("sudo")
|
||||||
|
.args(["/run/current-system/sw/bin/du", "-sh", "/var/lib/mongodb"])
|
||||||
|
.stdout(Stdio::piped())
|
||||||
|
.stderr(Stdio::piped())
|
||||||
|
.output()
|
||||||
|
.await
|
||||||
|
.ok()?;
|
||||||
|
|
||||||
|
if output.status.success() {
|
||||||
|
let stdout = String::from_utf8_lossy(&output.stdout);
|
||||||
|
if let Some(size) = stdout.split_whitespace().next() {
|
||||||
|
return Some(format!("Data: {}", size));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
None
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
|
|||||||
@ -232,6 +232,7 @@ impl AutoDiscovery {
|
|||||||
"mariadb",
|
"mariadb",
|
||||||
"redis",
|
"redis",
|
||||||
"mongodb",
|
"mongodb",
|
||||||
|
"mongod",
|
||||||
// Backup and storage
|
// Backup and storage
|
||||||
"borg",
|
"borg",
|
||||||
"rclone",
|
"rclone",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user