aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docker/prometheus/prometheus.yml1
-rw-r--r--docker/seaweedfs-compose.yml3
-rw-r--r--weed/server/filer_ui/filer.html12
-rw-r--r--weed/server/volume_grpc_client_to_master.go6
-rw-r--r--weed/stats/metrics.go9
-rw-r--r--weed/topology/node.go9
6 files changed, 32 insertions, 8 deletions
diff --git a/docker/prometheus/prometheus.yml b/docker/prometheus/prometheus.yml
index 34f669d56..2f0ead441 100644
--- a/docker/prometheus/prometheus.yml
+++ b/docker/prometheus/prometheus.yml
@@ -8,6 +8,7 @@ scrape_configs:
static_configs:
- targets:
- 'prometheus:9090'
+ - 'master:9324'
- 'volume:9325'
- 'filer:9326'
- 's3:9327' \ No newline at end of file
diff --git a/docker/seaweedfs-compose.yml b/docker/seaweedfs-compose.yml
index 706f10180..cce1c39ef 100644
--- a/docker/seaweedfs-compose.yml
+++ b/docker/seaweedfs-compose.yml
@@ -6,7 +6,8 @@ services:
ports:
- 9333:9333
- 19333:19333
- command: "master -ip=master -ip.bind=0.0.0.0"
+ - 9324:9324
+ command: "master -ip=master -ip.bind=0.0.0.0 -metricsPort=9324"
volume:
image: chrislusf/seaweedfs # use a remote image
ports:
diff --git a/weed/server/filer_ui/filer.html b/weed/server/filer_ui/filer.html
index 785f82887..f9c35440e 100644
--- a/weed/server/filer_ui/filer.html
+++ b/weed/server/filer_ui/filer.html
@@ -225,6 +225,10 @@
handleFiles(files);
}
+ function reloadPage() {
+ window.location.reload(true);
+ }
+
var uploadList = {};
function handleFiles(files) {
@@ -277,7 +281,7 @@
}
if (allFinish) {
console.log('All Finish');
- window.location.reload();
+ reloadPage();
}
}
@@ -318,7 +322,7 @@
xhr.open('POST', url, false);
xhr.setRequestHeader('Content-Type', '');
xhr.send();
- window.location.reload();
+ reloadPage();
}
function handleRename(originName, basePath) {
@@ -333,7 +337,7 @@
xhr.open('POST', url, false);
xhr.setRequestHeader('Content-Type', '');
xhr.send();
- window.location.reload();
+ reloadPage();
}
function handleDelete(path) {
@@ -348,7 +352,7 @@
var xhr = new XMLHttpRequest();
xhr.open('DELETE', url, false);
xhr.send();
- window.location.reload();
+ reloadPage();
}
</script>
</html>
diff --git a/weed/server/volume_grpc_client_to_master.go b/weed/server/volume_grpc_client_to_master.go
index d4f3b2853..078b78eb2 100644
--- a/weed/server/volume_grpc_client_to_master.go
+++ b/weed/server/volume_grpc_client_to_master.go
@@ -119,15 +119,15 @@ func (vs *VolumeServer) doHeartbeat(masterAddress pb.ServerAddress, grpcDialOpti
return
}
if len(in.DuplicatedUuids) > 0 {
- var duplictedDir []string
+ var duplicateDir []string
for _, loc := range vs.store.Locations {
for _, uuid := range in.DuplicatedUuids {
if uuid == loc.DirectoryUuid {
- duplictedDir = append(duplictedDir, loc.Directory)
+ duplicateDir = append(duplicateDir, loc.Directory)
}
}
}
- glog.Errorf("Shut down Volume Server due to duplicated volume directories: %v", duplictedDir)
+ glog.Errorf("Shut down Volume Server due to duplicate volume directories: %v", duplicateDir)
os.Exit(1)
}
if in.GetVolumeSizeLimit() != 0 && vs.store.GetVolumeSizeLimit() != in.GetVolumeSizeLimit() {
diff --git a/weed/stats/metrics.go b/weed/stats/metrics.go
index 8381999c2..943aafff9 100644
--- a/weed/stats/metrics.go
+++ b/weed/stats/metrics.go
@@ -44,6 +44,14 @@ var (
Help: "Counter of master received heartbeat.",
}, []string{"type"})
+ MasterReplicaPlacementMismatch = prometheus.NewGaugeVec(
+ prometheus.GaugeOpts{
+ Namespace: "SeaweedFS",
+ Subsystem: "master",
+ Name: "replica_placement_mismatch",
+ Help: "replica placement mismatch",
+ }, []string{"collection", "id"})
+
MasterLeaderChangeCounter = prometheus.NewCounterVec(
prometheus.CounterOpts{
Namespace: "SeaweedFS",
@@ -165,6 +173,7 @@ func init() {
Gather.MustRegister(MasterRaftIsleader)
Gather.MustRegister(MasterReceivedHeartbeatCounter)
Gather.MustRegister(MasterLeaderChangeCounter)
+ Gather.MustRegister(MasterReplicaPlacementMismatch)
Gather.MustRegister(FilerRequestCounter)
Gather.MustRegister(FilerRequestHistogram)
diff --git a/weed/topology/node.go b/weed/topology/node.go
index 4772cb411..c5956177a 100644
--- a/weed/topology/node.go
+++ b/weed/topology/node.go
@@ -3,6 +3,7 @@ package topology
import (
"errors"
"github.com/chrislusf/seaweedfs/weed/glog"
+ "github.com/chrislusf/seaweedfs/weed/stats"
"github.com/chrislusf/seaweedfs/weed/storage/erasure_coding"
"github.com/chrislusf/seaweedfs/weed/storage/needle"
"github.com/chrislusf/seaweedfs/weed/storage/types"
@@ -246,6 +247,14 @@ func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSi
} else if float64(v.Size) > float64(volumeSizeLimit)*growThreshold {
n.GetTopology().chanCrowdedVolumes <- v
}
+ copyCount := v.ReplicaPlacement.GetCopyCount()
+ if copyCount > 1 {
+ if copyCount > len(n.GetTopology().Lookup(v.Collection, v.Id)) {
+ stats.MasterReplicaPlacementMismatch.WithLabelValues(v.Collection, v.Id.String()).Set(1)
+ } else {
+ stats.MasterReplicaPlacementMismatch.WithLabelValues(v.Collection, v.Id.String()).Set(0)
+ }
+ }
}
}
} else {