mirror of
				https://github.com/ClusterCockpit/cc-metric-collector.git
				synced 2025-11-04 02:35:07 +01:00 
			
		
		
		
	Merge develop branch into main (#106)
* Add cpu_used (all-cpu_idle) to CpustatCollector * Update to line-protocol/v2 * Update runonce.yml with Golang 1.20 * Update fsnotify in LIKWID Collector * Use not a pointer to line-protocol.Encoder * Simplify Makefile * Use only as many arguments as required * Allow sum function to handle non float types * Allow values to be a slice of type float64, float32, int, int64, int32, bool * Use generic function to simplify code * Add missing case for type []int32 * Use generic function to compute minimum * Use generic function to compute maximum * Use generic function to compute average * Add error value to sumAnyType * Use generic function to compute median * For older versions of go slices is not part of the installation * Remove old entries from go.sum * Use simpler sort function * Compute metrics ib_total and ib_total_pkts * Add aggregated metrics. Add missing units * Update likwidMetric.go Fixes a potential bug when `fsnotify.NewWatcher()` fails with an error * Completly avoid memory allocations in infinibandMetric read() * Fixed initialization: Initalization and measurements should run in the same thread --------- Co-authored-by: Holger Obermaier <40787752+ho-ob@users.noreply.github.com>
This commit is contained in:
		@@ -31,6 +31,7 @@ type GpfsCollector struct {
 | 
			
		||||
		Mmpmon            string   `json:"mmpmon_path,omitempty"`
 | 
			
		||||
		ExcludeFilesystem []string `json:"exclude_filesystem,omitempty"`
 | 
			
		||||
		SendBandwidths    bool     `json:"send_bandwidths"`
 | 
			
		||||
		SendTotalValues   bool     `json:"send_total_values"`
 | 
			
		||||
	}
 | 
			
		||||
	skipFS        map[string]struct{}
 | 
			
		||||
	lastTimestamp time.Time // Store time stamp of last tick to derive bandwidths
 | 
			
		||||
@@ -216,13 +217,33 @@ func (m *GpfsCollector) Read(interval time.Duration, output chan lp.CCMetric) {
 | 
			
		||||
				fmt.Sprintf("Read(): Failed to convert bytes read '%s' to int64: %v", key_value["_br_"], err))
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if y, err := lp.New("gpfs_bytes_read", m.tags, m.meta, map[string]interface{}{"value": bytesRead}, timestamp); err == nil {
 | 
			
		||||
		if y, err :=
 | 
			
		||||
			lp.New(
 | 
			
		||||
				"gpfs_bytes_read",
 | 
			
		||||
				m.tags,
 | 
			
		||||
				m.meta,
 | 
			
		||||
				map[string]interface{}{
 | 
			
		||||
					"value": bytesRead,
 | 
			
		||||
				},
 | 
			
		||||
				timestamp,
 | 
			
		||||
			); err == nil {
 | 
			
		||||
			y.AddMeta("unit", "bytes")
 | 
			
		||||
			output <- y
 | 
			
		||||
		}
 | 
			
		||||
		if m.config.SendBandwidths {
 | 
			
		||||
			if lastBytesRead := m.lastState[filesystem].bytesRead; lastBytesRead >= 0 {
 | 
			
		||||
				bwRead := float64(bytesRead-lastBytesRead) / timeDiff
 | 
			
		||||
				if y, err := lp.New("gpfs_bw_read", m.tags, m.meta, map[string]interface{}{"value": bwRead}, timestamp); err == nil {
 | 
			
		||||
				if y, err :=
 | 
			
		||||
					lp.New(
 | 
			
		||||
						"gpfs_bw_read",
 | 
			
		||||
						m.tags,
 | 
			
		||||
						m.meta,
 | 
			
		||||
						map[string]interface{}{
 | 
			
		||||
							"value": bwRead,
 | 
			
		||||
						},
 | 
			
		||||
						timestamp,
 | 
			
		||||
					); err == nil {
 | 
			
		||||
					y.AddMeta("unit", "bytes/sec")
 | 
			
		||||
					output <- y
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
@@ -236,13 +257,33 @@ func (m *GpfsCollector) Read(interval time.Duration, output chan lp.CCMetric) {
 | 
			
		||||
				fmt.Sprintf("Read(): Failed to convert bytes written '%s' to int64: %v", key_value["_bw_"], err))
 | 
			
		||||
			continue
 | 
			
		||||
		}
 | 
			
		||||
		if y, err := lp.New("gpfs_bytes_written", m.tags, m.meta, map[string]interface{}{"value": bytesWritten}, timestamp); err == nil {
 | 
			
		||||
		if y, err :=
 | 
			
		||||
			lp.New(
 | 
			
		||||
				"gpfs_bytes_written",
 | 
			
		||||
				m.tags,
 | 
			
		||||
				m.meta,
 | 
			
		||||
				map[string]interface{}{
 | 
			
		||||
					"value": bytesWritten,
 | 
			
		||||
				},
 | 
			
		||||
				timestamp,
 | 
			
		||||
			); err == nil {
 | 
			
		||||
			y.AddMeta("unit", "bytes")
 | 
			
		||||
			output <- y
 | 
			
		||||
		}
 | 
			
		||||
		if m.config.SendBandwidths {
 | 
			
		||||
			if lastBytesWritten := m.lastState[filesystem].bytesRead; lastBytesWritten >= 0 {
 | 
			
		||||
				bwWrite := float64(bytesWritten-lastBytesWritten) / timeDiff
 | 
			
		||||
				if y, err := lp.New("gpfs_bw_write", m.tags, m.meta, map[string]interface{}{"value": bwWrite}, timestamp); err == nil {
 | 
			
		||||
				if y, err :=
 | 
			
		||||
					lp.New(
 | 
			
		||||
						"gpfs_bw_write",
 | 
			
		||||
						m.tags,
 | 
			
		||||
						m.meta,
 | 
			
		||||
						map[string]interface{}{
 | 
			
		||||
							"value": bwWrite,
 | 
			
		||||
						},
 | 
			
		||||
						timestamp,
 | 
			
		||||
					); err == nil {
 | 
			
		||||
					y.AddMeta("unit", "bytes/sec")
 | 
			
		||||
					output <- y
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
@@ -326,6 +367,47 @@ func (m *GpfsCollector) Read(interval time.Duration, output chan lp.CCMetric) {
 | 
			
		||||
		if y, err := lp.New("gpfs_num_inode_updates", m.tags, m.meta, map[string]interface{}{"value": numInodeUpdates}, timestamp); err == nil {
 | 
			
		||||
			output <- y
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Total values
 | 
			
		||||
		if m.config.SendTotalValues {
 | 
			
		||||
			bytesTotal := bytesRead + bytesWritten
 | 
			
		||||
			if y, err :=
 | 
			
		||||
				lp.New("gpfs_bytes_total",
 | 
			
		||||
					m.tags,
 | 
			
		||||
					m.meta,
 | 
			
		||||
					map[string]interface{}{
 | 
			
		||||
						"value": bytesTotal,
 | 
			
		||||
					},
 | 
			
		||||
					timestamp,
 | 
			
		||||
				); err == nil {
 | 
			
		||||
				y.AddMeta("unit", "bytes")
 | 
			
		||||
				output <- y
 | 
			
		||||
			}
 | 
			
		||||
			iops := numReads + numWrites
 | 
			
		||||
			if y, err :=
 | 
			
		||||
				lp.New("gpfs_iops",
 | 
			
		||||
					m.tags,
 | 
			
		||||
					m.meta,
 | 
			
		||||
					map[string]interface{}{
 | 
			
		||||
						"value": iops,
 | 
			
		||||
					},
 | 
			
		||||
					timestamp,
 | 
			
		||||
				); err == nil {
 | 
			
		||||
				output <- y
 | 
			
		||||
			}
 | 
			
		||||
			metaops := numInodeUpdates + numCloses + numOpens + numReaddirs
 | 
			
		||||
			if y, err :=
 | 
			
		||||
				lp.New("gpfs_metaops",
 | 
			
		||||
					m.tags,
 | 
			
		||||
					m.meta,
 | 
			
		||||
					map[string]interface{}{
 | 
			
		||||
						"value": metaops,
 | 
			
		||||
					},
 | 
			
		||||
					timestamp,
 | 
			
		||||
				); err == nil {
 | 
			
		||||
				output <- y
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user