From 60dffaa9ffe32ded4ecebe775f5b45ffd0b410bc Mon Sep 17 00:00:00 2001 From: Matthias Rampke Date: Sat, 26 Sep 2015 20:07:20 +0200 Subject: [PATCH 1/5] Fix mdadm collector. In the move to the procfs flag, I accidentally changed the filename. --- collector/mdadm.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/collector/mdadm.go b/collector/mdadm.go index 5b1c08e7..ac2d9de6 100644 --- a/collector/mdadm.go +++ b/collector/mdadm.go @@ -102,7 +102,7 @@ func evalBuildline(buildline string) (int64, error) { func parseMdstat(mdStatusFilePath string) ([]mdStatus, error) { content, err := ioutil.ReadFile(mdStatusFilePath) if err != nil { - return []mdStatus{}, fmt.Errorf("error parsing mdstatus: %s", err) + return []mdStatus{}, fmt.Errorf("error parsing mdstat: %s", err) } mdStatusFile := string(content) @@ -140,13 +140,13 @@ func parseMdstat(mdStatusFilePath string) ([]mdStatus, error) { isActive := (mainLine[2] == "active") // activity status of said md-device if len(lines) <= i+3 { - return mdStates, fmt.Errorf("error parsing mdstatus: entry for %s has fewer lines than expected", currentMD) + return mdStates, fmt.Errorf("error parsing mdstat: entry for %s has fewer lines than expected", currentMD) } active, total, size, err := evalStatusline(lines[i+1]) // parse statusline, always present if err != nil { - return mdStates, fmt.Errorf("error parsing mdstatus: %s", err) + return mdStates, fmt.Errorf("error parsing mdstat: %s", err) } // Now get the number of synced blocks. @@ -165,7 +165,7 @@ func parseMdstat(mdStatusFilePath string) ([]mdStatus, error) { if strings.Contains(lines[j], "recovery") || strings.Contains(lines[j], "resync") { syncedBlocks, err = evalBuildline(lines[j]) if err != nil { - return mdStates, fmt.Errorf("error parsing mdstatus: %s", err) + return mdStates, fmt.Errorf("error parsing mdstat: %s", err) } } else { syncedBlocks = size @@ -221,7 +221,7 @@ var ( ) func (c *mdadmCollector) Update(ch chan<- prometheus.Metric) (err error) { - statusfile := procFilePath("mdstatus") + statusfile := procFilePath("mdstat") // take care we don't crash on non-existent statusfiles _, err = os.Stat(statusfile) if os.IsNotExist(err) { From 24c9db9600adeb390f6c1b669d2fe6c7d8f78573 Mon Sep 17 00:00:00 2001 From: Matthias Rampke Date: Sat, 26 Sep 2015 20:15:42 +0200 Subject: [PATCH 2/5] Suppress log noise from textfile collector test. --- collector/textfile_test.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/collector/textfile_test.go b/collector/textfile_test.go index d2938b73..a27ce0f2 100644 --- a/collector/textfile_test.go +++ b/collector/textfile_test.go @@ -14,6 +14,7 @@ package collector import ( + "flag" "io/ioutil" "sort" "strings" @@ -46,6 +47,13 @@ func TestParseTextFiles(t *testing.T) { path: test.path, } + // Suppress a log message about `nonexistent_path` not existing, this is + // expected and clutters the test output. + err := flag.Set("log.level", "fatal") + if err != nil { + t.Fatal(err) + } + mfs := c.parseTextFiles() textMFs := make([]string, 0, len(mfs)) for _, mf := range mfs { From 85eb47197fb7fda72d5ae333125883cf21c81f67 Mon Sep 17 00:00:00 2001 From: Matthias Rampke Date: Sat, 26 Sep 2015 19:38:31 +0200 Subject: [PATCH 3/5] Add a flag for the sysfs location. Analogous to `collector.procfs`, but for `/sys`. Add tests for both. --- collector/bonding_linux.go | 6 +-- collector/{procpath.go => paths.go} | 5 ++ collector/paths_test.go | 77 +++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 5 deletions(-) rename collector/{procpath.go => paths.go} (85%) create mode 100644 collector/paths_test.go diff --git a/collector/bonding_linux.go b/collector/bonding_linux.go index 8720d89a..a9bbcb26 100644 --- a/collector/bonding_linux.go +++ b/collector/bonding_linux.go @@ -25,10 +25,6 @@ import ( "github.com/prometheus/client_golang/prometheus" ) -const ( - sysfsNet = "/sys/class/net" -) - type bondingCollector struct { slaves, active *prometheus.GaugeVec } @@ -62,7 +58,7 @@ func NewBondingCollector() (Collector, error) { // Update reads and exposes bonding states, implements Collector interface. Caution: This works only on linux. func (c *bondingCollector) Update(ch chan<- prometheus.Metric) (err error) { - bondingStats, err := readBondingStats(sysfsNet) + bondingStats, err := readBondingStats(sysFilePath("class/net")) if err != nil { return err } diff --git a/collector/procpath.go b/collector/paths.go similarity index 85% rename from collector/procpath.go rename to collector/paths.go index ed3d372e..f97e2147 100644 --- a/collector/procpath.go +++ b/collector/paths.go @@ -23,8 +23,13 @@ import ( var ( // The path of the proc filesystem. procPath = flag.String("collector.procfs", procfs.DefaultMountPoint, "procfs mountpoint.") + sysPath = flag.String("collector.sysfs", "/sys", "sysfs mountpoint.") ) func procFilePath(name string) string { return path.Join(*procPath, name) } + +func sysFilePath(name string) string { + return path.Join(*sysPath, name) +} diff --git a/collector/paths_test.go b/collector/paths_test.go new file mode 100644 index 00000000..a4f41662 --- /dev/null +++ b/collector/paths_test.go @@ -0,0 +1,77 @@ +// Copyright 2015 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package collector + +import ( + "flag" + "testing" + + "github.com/prometheus/procfs" +) + +func TestDefaultProcPath(t *testing.T) { + if err := flag.Set("collector.procfs", procfs.DefaultMountPoint); err != nil { + t.Fatal(err) + } + + if got, want := procFilePath("somefile"), "/proc/somefile"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } + + if got, want := procFilePath("some/file"), "/proc/some/file"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } +} + +func TestCustomProcPath(t *testing.T) { + if err := flag.Set("collector.procfs", "./../some/./place/"); err != nil { + t.Fatal(err) + } + + if got, want := procFilePath("somefile"), "../some/place/somefile"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } + + if got, want := procFilePath("some/file"), "../some/place/some/file"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } +} + +func TestDefaultSysPath(t *testing.T) { + if err := flag.Set("collector.sysfs", "/sys"); err != nil { + t.Fatal(err) + } + + if got, want := sysFilePath("somefile"), "/sys/somefile"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } + + if got, want := sysFilePath("some/file"), "/sys/some/file"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } +} + +func TestCustomSysPath(t *testing.T) { + if err := flag.Set("collector.sysfs", "./../some/./place/"); err != nil { + t.Fatal(err) + } + + if got, want := sysFilePath("somefile"), "../some/place/somefile"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } + + if got, want := sysFilePath("some/file"), "../some/place/some/file"; got != want { + t.Errorf("Expected: %s, Got: %s", want, got) + } +} From 788ac9a8596c513490842d305c0acb41bb5de436 Mon Sep 17 00:00:00 2001 From: Matthias Rampke Date: Sat, 26 Sep 2015 19:55:35 +0200 Subject: [PATCH 4/5] Rearrange fixtures to match "real" proc and sys. And add some missing fixtures for default collectors, even if they're not read by tests yet. --- collector/bonding_linux_test.go | 2 +- collector/diskstats_linux_test.go | 2 +- collector/filefd_linux_test.go | 2 +- collector/fixtures/{net => }/ip_vs_result.txt | 0 collector/fixtures/{ => proc}/diskstats | 0 collector/fixtures/{ => proc}/interrupts | 0 collector/fixtures/proc/loadavg | 1 + collector/fixtures/{ => proc}/mdstat | 0 collector/fixtures/{ => proc}/meminfo | 0 collector/fixtures/proc/mounts | 30 +++++++++++++++++++ collector/fixtures/{net-dev => proc/net/dev} | 0 collector/fixtures/{ => proc}/net/ip_vs | 0 collector/fixtures/{ => proc}/net/ip_vs_stats | 0 collector/fixtures/{ => proc/net}/netstat | 0 collector/fixtures/proc/net/snmp | 12 ++++++++ collector/fixtures/{ => proc/net}/sockstat | 0 collector/fixtures/{ => proc/net}/tcpstat | 0 collector/fixtures/proc/stat | 16 ++++++++++ collector/fixtures/{ => proc/sys/fs}/file-nr | 0 .../class/net}/bond0/bonding/slaves | 0 .../class/net}/bonding_masters | 0 .../class/net}/dmz/bonding/slaves | 0 .../class/net}/dmz/slave_eth0/operstate | 0 .../class/net}/dmz/slave_eth4/operstate | 0 .../class/net}/int/bonding/slaves | 0 .../class/net}/int/slave_eth1/operstate | 0 .../class/net}/int/slave_eth5/operstate | 0 collector/interrupts_linux_test.go | 2 +- collector/ipvs_test.go | 6 ++-- collector/mdadm_test.go | 2 +- collector/meminfo_linux_test.go | 2 +- collector/netdev_linux_test.go | 2 +- collector/netstat_linux_test.go | 2 +- collector/sockstat_linux_test.go | 2 +- collector/tcpstat_linux_test.go | 2 +- 35 files changed, 72 insertions(+), 13 deletions(-) rename collector/fixtures/{net => }/ip_vs_result.txt (100%) rename collector/fixtures/{ => proc}/diskstats (100%) rename collector/fixtures/{ => proc}/interrupts (100%) create mode 100644 collector/fixtures/proc/loadavg rename collector/fixtures/{ => proc}/mdstat (100%) rename collector/fixtures/{ => proc}/meminfo (100%) create mode 100644 collector/fixtures/proc/mounts rename collector/fixtures/{net-dev => proc/net/dev} (100%) rename collector/fixtures/{ => proc}/net/ip_vs (100%) rename collector/fixtures/{ => proc}/net/ip_vs_stats (100%) rename collector/fixtures/{ => proc/net}/netstat (100%) create mode 100644 collector/fixtures/proc/net/snmp rename collector/fixtures/{ => proc/net}/sockstat (100%) rename collector/fixtures/{ => proc/net}/tcpstat (100%) create mode 100644 collector/fixtures/proc/stat rename collector/fixtures/{ => proc/sys/fs}/file-nr (100%) rename collector/fixtures/{bonding => sys/class/net}/bond0/bonding/slaves (100%) rename collector/fixtures/{bonding => sys/class/net}/bonding_masters (100%) rename collector/fixtures/{bonding => sys/class/net}/dmz/bonding/slaves (100%) rename collector/fixtures/{bonding => sys/class/net}/dmz/slave_eth0/operstate (100%) rename collector/fixtures/{bonding => sys/class/net}/dmz/slave_eth4/operstate (100%) rename collector/fixtures/{bonding => sys/class/net}/int/bonding/slaves (100%) rename collector/fixtures/{bonding => sys/class/net}/int/slave_eth1/operstate (100%) rename collector/fixtures/{bonding => sys/class/net}/int/slave_eth5/operstate (100%) diff --git a/collector/bonding_linux_test.go b/collector/bonding_linux_test.go index de3d3230..564cf01e 100644 --- a/collector/bonding_linux_test.go +++ b/collector/bonding_linux_test.go @@ -18,7 +18,7 @@ import ( ) func TestBonding(t *testing.T) { - bondingStats, err := readBondingStats("fixtures/bonding") + bondingStats, err := readBondingStats("fixtures/sys/class/net") if err != nil { t.Fatal(err) } diff --git a/collector/diskstats_linux_test.go b/collector/diskstats_linux_test.go index 50f8eddf..405bf281 100644 --- a/collector/diskstats_linux_test.go +++ b/collector/diskstats_linux_test.go @@ -19,7 +19,7 @@ import ( ) func TestDiskStats(t *testing.T) { - file, err := os.Open("fixtures/diskstats") + file, err := os.Open("fixtures/proc/diskstats") if err != nil { t.Fatal(err) } diff --git a/collector/filefd_linux_test.go b/collector/filefd_linux_test.go index 4ab4412e..11781eb7 100644 --- a/collector/filefd_linux_test.go +++ b/collector/filefd_linux_test.go @@ -19,7 +19,7 @@ import ( ) func TestFileFDStats(t *testing.T) { - file, err := os.Open("fixtures/file-nr") + file, err := os.Open("fixtures/proc/sys/fs/file-nr") if err != nil { t.Fatal(err) } diff --git a/collector/fixtures/net/ip_vs_result.txt b/collector/fixtures/ip_vs_result.txt similarity index 100% rename from collector/fixtures/net/ip_vs_result.txt rename to collector/fixtures/ip_vs_result.txt diff --git a/collector/fixtures/diskstats b/collector/fixtures/proc/diskstats similarity index 100% rename from collector/fixtures/diskstats rename to collector/fixtures/proc/diskstats diff --git a/collector/fixtures/interrupts b/collector/fixtures/proc/interrupts similarity index 100% rename from collector/fixtures/interrupts rename to collector/fixtures/proc/interrupts diff --git a/collector/fixtures/proc/loadavg b/collector/fixtures/proc/loadavg new file mode 100644 index 00000000..8897b7ce --- /dev/null +++ b/collector/fixtures/proc/loadavg @@ -0,0 +1 @@ +0.21 0.37 0.39 1/719 19737 diff --git a/collector/fixtures/mdstat b/collector/fixtures/proc/mdstat similarity index 100% rename from collector/fixtures/mdstat rename to collector/fixtures/proc/mdstat diff --git a/collector/fixtures/meminfo b/collector/fixtures/proc/meminfo similarity index 100% rename from collector/fixtures/meminfo rename to collector/fixtures/proc/meminfo diff --git a/collector/fixtures/proc/mounts b/collector/fixtures/proc/mounts new file mode 100644 index 00000000..97d5f6fc --- /dev/null +++ b/collector/fixtures/proc/mounts @@ -0,0 +1,30 @@ +rootfs / rootfs rw 0 0 +sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0 +proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 +udev /dev devtmpfs rw,relatime,size=10240k,nr_inodes=1008585,mode=755 0 0 +devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 +tmpfs /run tmpfs rw,nosuid,relatime,size=1617716k,mode=755 0 0 +/dev/dm-2 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0 +securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0 +tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0 +tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0 +tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0 +cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd 0 0 +pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0 +cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0 +cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0 +cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0 +cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0 +cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0 +cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0 +cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0 +systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=22,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0 +mqueue /dev/mqueue mqueue rw,relatime 0 0 +debugfs /sys/kernel/debug debugfs rw,relatime 0 0 +hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0 +fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0 +/dev/sda3 /boot ext2 rw,relatime 0 0 +rpc_pipefs /run/rpc_pipefs rpc_pipefs rw,relatime 0 0 +binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0 +tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=808860k,mode=700,uid=1000,gid=1000 0 0 +gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0 diff --git a/collector/fixtures/net-dev b/collector/fixtures/proc/net/dev similarity index 100% rename from collector/fixtures/net-dev rename to collector/fixtures/proc/net/dev diff --git a/collector/fixtures/net/ip_vs b/collector/fixtures/proc/net/ip_vs similarity index 100% rename from collector/fixtures/net/ip_vs rename to collector/fixtures/proc/net/ip_vs diff --git a/collector/fixtures/net/ip_vs_stats b/collector/fixtures/proc/net/ip_vs_stats similarity index 100% rename from collector/fixtures/net/ip_vs_stats rename to collector/fixtures/proc/net/ip_vs_stats diff --git a/collector/fixtures/netstat b/collector/fixtures/proc/net/netstat similarity index 100% rename from collector/fixtures/netstat rename to collector/fixtures/proc/net/netstat diff --git a/collector/fixtures/proc/net/snmp b/collector/fixtures/proc/net/snmp new file mode 100644 index 00000000..80a92b47 --- /dev/null +++ b/collector/fixtures/proc/net/snmp @@ -0,0 +1,12 @@ +Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagrams InUnknownProtos InDiscards InDelivers OutRequests OutDiscards OutNoRoutes ReasmTimeout ReasmReqds ReasmOKs ReasmFails FragOKs FragFails FragCreates +Ip: 1 64 57740232 0 25 397750 0 0 57340175 55365537 0 54 0 0 0 0 0 0 0 +Icmp: InMsgs InErrors InCsumErrors InDestUnreachs InTimeExcds InParmProbs InSrcQuenchs InRedirects InEchos InEchoReps InTimestamps InTimestampReps InAddrMasks InAddrMaskReps OutMsgs OutErrors OutDestUnreachs OutTimeExcds OutParmProbs OutSrcQuenchs OutRedirects OutEchos OutEchoReps OutTimestamps OutTimestampReps OutAddrMasks OutAddrMaskReps +Icmp: 104 0 0 104 0 0 0 0 0 0 0 0 0 0 120 0 120 0 0 0 0 0 0 0 0 0 0 +IcmpMsg: InType3 OutType3 +IcmpMsg: 104 120 +Tcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts InCsumErrors +Tcp: 1 200 120000 -1 3556 230 341 161 0 57252008 54915039 227 5 1003 0 +Udp: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors +Udp: 88542 120 0 53028 0 0 0 +UdpLite: InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors InCsumErrors +UdpLite: 0 0 0 0 0 0 0 diff --git a/collector/fixtures/sockstat b/collector/fixtures/proc/net/sockstat similarity index 100% rename from collector/fixtures/sockstat rename to collector/fixtures/proc/net/sockstat diff --git a/collector/fixtures/tcpstat b/collector/fixtures/proc/net/tcpstat similarity index 100% rename from collector/fixtures/tcpstat rename to collector/fixtures/proc/net/tcpstat diff --git a/collector/fixtures/proc/stat b/collector/fixtures/proc/stat new file mode 100644 index 00000000..dabb96f7 --- /dev/null +++ b/collector/fixtures/proc/stat @@ -0,0 +1,16 @@ +cpu 301854 612 111922 8979004 3552 2 3944 0 0 0 +cpu0 44490 19 21045 1087069 220 1 3410 0 0 0 +cpu1 47869 23 16474 1110787 591 0 46 0 0 0 +cpu2 46504 36 15916 1112321 441 0 326 0 0 0 +cpu3 47054 102 15683 1113230 533 0 60 0 0 0 +cpu4 28413 25 10776 1140321 217 0 8 0 0 0 +cpu5 29271 101 11586 1136270 672 0 30 0 0 0 +cpu6 29152 36 10276 1139721 319 0 29 0 0 0 +cpu7 29098 268 10164 1139282 555 0 31 0 0 0 +intr 8885917 17 0 0 0 0 0 0 0 1 79281 0 0 0 0 0 0 0 231237 0 0 0 0 250586 103 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 223424 190745 13 906 1283803 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +ctxt 38014093 +btime 1418183276 +processes 26442 +procs_running 2 +procs_blocked 0 +softirq 5057579 250191 1481983 1647 211099 186066 0 1783454 622196 12499 508444 diff --git a/collector/fixtures/file-nr b/collector/fixtures/proc/sys/fs/file-nr similarity index 100% rename from collector/fixtures/file-nr rename to collector/fixtures/proc/sys/fs/file-nr diff --git a/collector/fixtures/bonding/bond0/bonding/slaves b/collector/fixtures/sys/class/net/bond0/bonding/slaves similarity index 100% rename from collector/fixtures/bonding/bond0/bonding/slaves rename to collector/fixtures/sys/class/net/bond0/bonding/slaves diff --git a/collector/fixtures/bonding/bonding_masters b/collector/fixtures/sys/class/net/bonding_masters similarity index 100% rename from collector/fixtures/bonding/bonding_masters rename to collector/fixtures/sys/class/net/bonding_masters diff --git a/collector/fixtures/bonding/dmz/bonding/slaves b/collector/fixtures/sys/class/net/dmz/bonding/slaves similarity index 100% rename from collector/fixtures/bonding/dmz/bonding/slaves rename to collector/fixtures/sys/class/net/dmz/bonding/slaves diff --git a/collector/fixtures/bonding/dmz/slave_eth0/operstate b/collector/fixtures/sys/class/net/dmz/slave_eth0/operstate similarity index 100% rename from collector/fixtures/bonding/dmz/slave_eth0/operstate rename to collector/fixtures/sys/class/net/dmz/slave_eth0/operstate diff --git a/collector/fixtures/bonding/dmz/slave_eth4/operstate b/collector/fixtures/sys/class/net/dmz/slave_eth4/operstate similarity index 100% rename from collector/fixtures/bonding/dmz/slave_eth4/operstate rename to collector/fixtures/sys/class/net/dmz/slave_eth4/operstate diff --git a/collector/fixtures/bonding/int/bonding/slaves b/collector/fixtures/sys/class/net/int/bonding/slaves similarity index 100% rename from collector/fixtures/bonding/int/bonding/slaves rename to collector/fixtures/sys/class/net/int/bonding/slaves diff --git a/collector/fixtures/bonding/int/slave_eth1/operstate b/collector/fixtures/sys/class/net/int/slave_eth1/operstate similarity index 100% rename from collector/fixtures/bonding/int/slave_eth1/operstate rename to collector/fixtures/sys/class/net/int/slave_eth1/operstate diff --git a/collector/fixtures/bonding/int/slave_eth5/operstate b/collector/fixtures/sys/class/net/int/slave_eth5/operstate similarity index 100% rename from collector/fixtures/bonding/int/slave_eth5/operstate rename to collector/fixtures/sys/class/net/int/slave_eth5/operstate diff --git a/collector/interrupts_linux_test.go b/collector/interrupts_linux_test.go index 2977ee52..f076fe8a 100644 --- a/collector/interrupts_linux_test.go +++ b/collector/interrupts_linux_test.go @@ -19,7 +19,7 @@ import ( ) func TestInterrupts(t *testing.T) { - file, err := os.Open("fixtures/interrupts") + file, err := os.Open("fixtures/proc/interrupts") if err != nil { t.Fatal(err) } diff --git a/collector/ipvs_test.go b/collector/ipvs_test.go index ed1bc6a3..90287839 100644 --- a/collector/ipvs_test.go +++ b/collector/ipvs_test.go @@ -120,7 +120,7 @@ var ( ) func TestIPVSCollector(t *testing.T) { - if err := flag.Set("collector.procfs", "fixtures"); err != nil { + if err := flag.Set("collector.procfs", "fixtures/proc"); err != nil { t.Fatal(err) } collector, err := newIPVSCollector() @@ -182,7 +182,7 @@ func (c miniCollector) Describe(ch chan<- *prometheus.Desc) { } func TestIPVSCollectorResponse(t *testing.T) { - if err := flag.Set("collector.procfs", "fixtures"); err != nil { + if err := flag.Set("collector.procfs", "fixtures/proc"); err != nil { t.Fatal(err) } collector, err := NewIPVSCollector() @@ -194,7 +194,7 @@ func TestIPVSCollectorResponse(t *testing.T) { rw := httptest.NewRecorder() prometheus.Handler().ServeHTTP(rw, &http.Request{}) - metricsFile := "fixtures/net/ip_vs_result.txt" + metricsFile := "fixtures/ip_vs_result.txt" wantMetrics, err := ioutil.ReadFile(metricsFile) if err != nil { t.Fatalf("unable to read input test file %s: %s", metricsFile, err) diff --git a/collector/mdadm_test.go b/collector/mdadm_test.go index fa70b3f9..75108b36 100644 --- a/collector/mdadm_test.go +++ b/collector/mdadm_test.go @@ -18,7 +18,7 @@ import ( ) func TestMdadm(t *testing.T) { - mdStates, err := parseMdstat("fixtures/mdstat") + mdStates, err := parseMdstat("fixtures/proc/mdstat") if err != nil { t.Fatalf("parsing of reference-file failed entirely: %s", err) diff --git a/collector/meminfo_linux_test.go b/collector/meminfo_linux_test.go index ccb116db..c42bdf03 100644 --- a/collector/meminfo_linux_test.go +++ b/collector/meminfo_linux_test.go @@ -19,7 +19,7 @@ import ( ) func TestMemInfo(t *testing.T) { - file, err := os.Open("fixtures/meminfo") + file, err := os.Open("fixtures/proc/meminfo") if err != nil { t.Fatal(err) } diff --git a/collector/netdev_linux_test.go b/collector/netdev_linux_test.go index 04d3116f..9f27e433 100644 --- a/collector/netdev_linux_test.go +++ b/collector/netdev_linux_test.go @@ -20,7 +20,7 @@ import ( ) func TestNetDevStats(t *testing.T) { - file, err := os.Open("fixtures/net-dev") + file, err := os.Open("fixtures/proc/net/dev") if err != nil { t.Fatal(err) } diff --git a/collector/netstat_linux_test.go b/collector/netstat_linux_test.go index 8a35882f..c4eaa4c3 100644 --- a/collector/netstat_linux_test.go +++ b/collector/netstat_linux_test.go @@ -18,7 +18,7 @@ import ( "testing" ) -var fileName = "fixtures/netstat" +var fileName = "fixtures/proc/net/netstat" func TestNetStats(t *testing.T) { file, err := os.Open(fileName) diff --git a/collector/sockstat_linux_test.go b/collector/sockstat_linux_test.go index 6f4754b7..989a93b3 100644 --- a/collector/sockstat_linux_test.go +++ b/collector/sockstat_linux_test.go @@ -20,7 +20,7 @@ import ( ) func TestSockStats(t *testing.T) { - file, err := os.Open("fixtures/sockstat") + file, err := os.Open("fixtures/proc/net/sockstat") if err != nil { t.Fatal(err) } diff --git a/collector/tcpstat_linux_test.go b/collector/tcpstat_linux_test.go index 4681a040..da0bc1c6 100644 --- a/collector/tcpstat_linux_test.go +++ b/collector/tcpstat_linux_test.go @@ -19,7 +19,7 @@ import ( ) func TestTCPStat(t *testing.T) { - file, err := os.Open("fixtures/tcpstat") + file, err := os.Open("fixtures/proc/net/tcpstat") if err != nil { t.Fatal(err) } From 7c47338081071dadbfd7583afe580065f877b713 Mon Sep 17 00:00:00 2001 From: Matthias Rampke Date: Sat, 26 Sep 2015 20:54:49 +0200 Subject: [PATCH 5/5] Add an end-to-end test. This test runs a selection of collectors against the fixtures and compares the output to a reference. The uname and filesystem collectors are disabled because they use system calls that cannot be fixtured easily. --- .travis.yml | 2 + collector/fixtures/e2e-output.txt | 1286 +++++++++++++++++++++++++++++ collector/fixtures/megacli | 2 +- collector/mdadm.go | 1 + end-to-end-test.sh | 91 ++ 5 files changed, 1381 insertions(+), 1 deletion(-) create mode 100644 collector/fixtures/e2e-output.txt create mode 100755 end-to-end-test.sh diff --git a/.travis.yml b/.travis.yml index bd168357..d652a46f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,3 +11,5 @@ install: script: - go test -v ./... + - go build + - ./end-to-end-test.sh -v diff --git a/collector/fixtures/e2e-output.txt b/collector/fixtures/e2e-output.txt new file mode 100644 index 00000000..2e6c9c95 --- /dev/null +++ b/collector/fixtures/e2e-output.txt @@ -0,0 +1,1286 @@ +# HELP go_gc_duration_seconds A summary of the GC invocation durations. +# TYPE go_gc_duration_seconds summary +go_gc_duration_seconds{quantile="0"} 0 +go_gc_duration_seconds{quantile="0.25"} 0 +go_gc_duration_seconds{quantile="0.5"} 0 +go_gc_duration_seconds{quantile="0.75"} 0 +go_gc_duration_seconds{quantile="1"} 0 +go_gc_duration_seconds_sum 0 +go_gc_duration_seconds_count 0 +# HELP go_goroutines Number of goroutines that currently exist. +# TYPE go_goroutines gauge +go_goroutines 25 +# HELP http_request_duration_microseconds The HTTP request latencies in microseconds. +# TYPE http_request_duration_microseconds summary +http_request_duration_microseconds{handler="prometheus",quantile="0.5"} NaN +http_request_duration_microseconds{handler="prometheus",quantile="0.9"} NaN +http_request_duration_microseconds{handler="prometheus",quantile="0.99"} NaN +http_request_duration_microseconds_sum{handler="prometheus"} 0 +http_request_duration_microseconds_count{handler="prometheus"} 0 +# HELP http_request_size_bytes The HTTP request sizes in bytes. +# TYPE http_request_size_bytes summary +http_request_size_bytes{handler="prometheus",quantile="0.5"} NaN +http_request_size_bytes{handler="prometheus",quantile="0.9"} NaN +http_request_size_bytes{handler="prometheus",quantile="0.99"} NaN +http_request_size_bytes_sum{handler="prometheus"} 0 +http_request_size_bytes_count{handler="prometheus"} 0 +# HELP http_response_size_bytes The HTTP response sizes in bytes. +# TYPE http_response_size_bytes summary +http_response_size_bytes{handler="prometheus",quantile="0.5"} NaN +http_response_size_bytes{handler="prometheus",quantile="0.9"} NaN +http_response_size_bytes{handler="prometheus",quantile="0.99"} NaN +http_response_size_bytes_sum{handler="prometheus"} 0 +http_response_size_bytes_count{handler="prometheus"} 0 +# HELP node_boot_time Node boot time, in unixtime. +# TYPE node_boot_time gauge +node_boot_time 1.418183276e+09 +# HELP node_context_switches Total number of context switches. +# TYPE node_context_switches counter +node_context_switches 3.8014093e+07 +# HELP node_cpu Seconds the cpus spent in each mode. +# TYPE node_cpu counter +node_cpu{cpu="cpu0",mode="guest"} 0 +node_cpu{cpu="cpu0",mode="idle"} 10870.69 +node_cpu{cpu="cpu0",mode="iowait"} 2.2 +node_cpu{cpu="cpu0",mode="irq"} 0.01 +node_cpu{cpu="cpu0",mode="nice"} 0.19 +node_cpu{cpu="cpu0",mode="softirq"} 34.1 +node_cpu{cpu="cpu0",mode="steal"} 0 +node_cpu{cpu="cpu0",mode="system"} 210.45 +node_cpu{cpu="cpu0",mode="user"} 444.9 +node_cpu{cpu="cpu1",mode="guest"} 0 +node_cpu{cpu="cpu1",mode="idle"} 11107.87 +node_cpu{cpu="cpu1",mode="iowait"} 5.91 +node_cpu{cpu="cpu1",mode="irq"} 0 +node_cpu{cpu="cpu1",mode="nice"} 0.23 +node_cpu{cpu="cpu1",mode="softirq"} 0.46 +node_cpu{cpu="cpu1",mode="steal"} 0 +node_cpu{cpu="cpu1",mode="system"} 164.74 +node_cpu{cpu="cpu1",mode="user"} 478.69 +node_cpu{cpu="cpu2",mode="guest"} 0 +node_cpu{cpu="cpu2",mode="idle"} 11123.21 +node_cpu{cpu="cpu2",mode="iowait"} 4.41 +node_cpu{cpu="cpu2",mode="irq"} 0 +node_cpu{cpu="cpu2",mode="nice"} 0.36 +node_cpu{cpu="cpu2",mode="softirq"} 3.26 +node_cpu{cpu="cpu2",mode="steal"} 0 +node_cpu{cpu="cpu2",mode="system"} 159.16 +node_cpu{cpu="cpu2",mode="user"} 465.04 +node_cpu{cpu="cpu3",mode="guest"} 0 +node_cpu{cpu="cpu3",mode="idle"} 11132.3 +node_cpu{cpu="cpu3",mode="iowait"} 5.33 +node_cpu{cpu="cpu3",mode="irq"} 0 +node_cpu{cpu="cpu3",mode="nice"} 1.02 +node_cpu{cpu="cpu3",mode="softirq"} 0.6 +node_cpu{cpu="cpu3",mode="steal"} 0 +node_cpu{cpu="cpu3",mode="system"} 156.83 +node_cpu{cpu="cpu3",mode="user"} 470.54 +node_cpu{cpu="cpu4",mode="guest"} 0 +node_cpu{cpu="cpu4",mode="idle"} 11403.21 +node_cpu{cpu="cpu4",mode="iowait"} 2.17 +node_cpu{cpu="cpu4",mode="irq"} 0 +node_cpu{cpu="cpu4",mode="nice"} 0.25 +node_cpu{cpu="cpu4",mode="softirq"} 0.08 +node_cpu{cpu="cpu4",mode="steal"} 0 +node_cpu{cpu="cpu4",mode="system"} 107.76 +node_cpu{cpu="cpu4",mode="user"} 284.13 +node_cpu{cpu="cpu5",mode="guest"} 0 +node_cpu{cpu="cpu5",mode="idle"} 11362.7 +node_cpu{cpu="cpu5",mode="iowait"} 6.72 +node_cpu{cpu="cpu5",mode="irq"} 0 +node_cpu{cpu="cpu5",mode="nice"} 1.01 +node_cpu{cpu="cpu5",mode="softirq"} 0.3 +node_cpu{cpu="cpu5",mode="steal"} 0 +node_cpu{cpu="cpu5",mode="system"} 115.86 +node_cpu{cpu="cpu5",mode="user"} 292.71 +node_cpu{cpu="cpu6",mode="guest"} 0 +node_cpu{cpu="cpu6",mode="idle"} 11397.21 +node_cpu{cpu="cpu6",mode="iowait"} 3.19 +node_cpu{cpu="cpu6",mode="irq"} 0 +node_cpu{cpu="cpu6",mode="nice"} 0.36 +node_cpu{cpu="cpu6",mode="softirq"} 0.29 +node_cpu{cpu="cpu6",mode="steal"} 0 +node_cpu{cpu="cpu6",mode="system"} 102.76 +node_cpu{cpu="cpu6",mode="user"} 291.52 +node_cpu{cpu="cpu7",mode="guest"} 0 +node_cpu{cpu="cpu7",mode="idle"} 11392.82 +node_cpu{cpu="cpu7",mode="iowait"} 5.55 +node_cpu{cpu="cpu7",mode="irq"} 0 +node_cpu{cpu="cpu7",mode="nice"} 2.68 +node_cpu{cpu="cpu7",mode="softirq"} 0.31 +node_cpu{cpu="cpu7",mode="steal"} 0 +node_cpu{cpu="cpu7",mode="system"} 101.64 +node_cpu{cpu="cpu7",mode="user"} 290.98 +# HELP node_disk_io_now The number of I/Os currently in progress. +# TYPE node_disk_io_now gauge +node_disk_io_now{device="dm-0"} 0 +node_disk_io_now{device="dm-1"} 0 +node_disk_io_now{device="dm-2"} 0 +node_disk_io_now{device="dm-3"} 0 +node_disk_io_now{device="dm-4"} 0 +node_disk_io_now{device="dm-5"} 0 +node_disk_io_now{device="mmcblk0"} 0 +node_disk_io_now{device="mmcblk0p1"} 0 +node_disk_io_now{device="mmcblk0p2"} 0 +node_disk_io_now{device="sda"} 0 +node_disk_io_now{device="sr0"} 0 +node_disk_io_now{device="vda"} 0 +# HELP node_disk_io_time_ms Milliseconds spent doing I/Os. +# TYPE node_disk_io_time_ms counter +node_disk_io_time_ms{device="dm-0"} 1.1325968e+07 +node_disk_io_time_ms{device="dm-1"} 76 +node_disk_io_time_ms{device="dm-2"} 65400 +node_disk_io_time_ms{device="dm-3"} 16 +node_disk_io_time_ms{device="dm-4"} 24 +node_disk_io_time_ms{device="dm-5"} 58848 +node_disk_io_time_ms{device="mmcblk0"} 136 +node_disk_io_time_ms{device="mmcblk0p1"} 24 +node_disk_io_time_ms{device="mmcblk0p2"} 68 +node_disk_io_time_ms{device="sda"} 9.65388e+06 +node_disk_io_time_ms{device="sr0"} 0 +node_disk_io_time_ms{device="vda"} 4.1614592e+07 +# HELP node_disk_io_time_weighted The weighted # of milliseconds spent doing I/Os. See https://www.kernel.org/doc/Documentation/iostats.txt. +# TYPE node_disk_io_time_weighted counter +node_disk_io_time_weighted{device="dm-0"} 1.206301256e+09 +node_disk_io_time_weighted{device="dm-1"} 84 +node_disk_io_time_weighted{device="dm-2"} 129416 +node_disk_io_time_weighted{device="dm-3"} 104 +node_disk_io_time_weighted{device="dm-4"} 44 +node_disk_io_time_weighted{device="dm-5"} 105632 +node_disk_io_time_weighted{device="mmcblk0"} 156 +node_disk_io_time_weighted{device="mmcblk0p1"} 24 +node_disk_io_time_weighted{device="mmcblk0p2"} 68 +node_disk_io_time_weighted{device="sda"} 8.2621804e+07 +node_disk_io_time_weighted{device="sr0"} 0 +node_disk_io_time_weighted{device="vda"} 2.077872228e+09 +# HELP node_disk_read_time_ms The total number of milliseconds spent by all reads. +# TYPE node_disk_read_time_ms counter +node_disk_read_time_ms{device="dm-0"} 4.6229572e+07 +node_disk_read_time_ms{device="dm-1"} 84 +node_disk_read_time_ms{device="dm-2"} 6536 +node_disk_read_time_ms{device="dm-3"} 104 +node_disk_read_time_ms{device="dm-4"} 28 +node_disk_read_time_ms{device="dm-5"} 924 +node_disk_read_time_ms{device="mmcblk0"} 156 +node_disk_read_time_ms{device="mmcblk0p1"} 24 +node_disk_read_time_ms{device="mmcblk0p2"} 68 +node_disk_read_time_ms{device="sda"} 1.8492372e+07 +node_disk_read_time_ms{device="sr0"} 0 +node_disk_read_time_ms{device="vda"} 8.655768e+06 +# HELP node_disk_reads_completed The total number of reads completed successfully. +# TYPE node_disk_reads_completed counter +node_disk_reads_completed{device="dm-0"} 5.9910002e+07 +node_disk_reads_completed{device="dm-1"} 388 +node_disk_reads_completed{device="dm-2"} 11571 +node_disk_reads_completed{device="dm-3"} 3870 +node_disk_reads_completed{device="dm-4"} 392 +node_disk_reads_completed{device="dm-5"} 3729 +node_disk_reads_completed{device="mmcblk0"} 192 +node_disk_reads_completed{device="mmcblk0p1"} 17 +node_disk_reads_completed{device="mmcblk0p2"} 95 +node_disk_reads_completed{device="sda"} 2.5354637e+07 +node_disk_reads_completed{device="sr0"} 0 +node_disk_reads_completed{device="vda"} 1.775784e+06 +# HELP node_disk_reads_merged The number of reads merged. See https://www.kernel.org/doc/Documentation/iostats.txt. +# TYPE node_disk_reads_merged counter +node_disk_reads_merged{device="dm-0"} 0 +node_disk_reads_merged{device="dm-1"} 0 +node_disk_reads_merged{device="dm-2"} 0 +node_disk_reads_merged{device="dm-3"} 0 +node_disk_reads_merged{device="dm-4"} 0 +node_disk_reads_merged{device="dm-5"} 0 +node_disk_reads_merged{device="mmcblk0"} 3 +node_disk_reads_merged{device="mmcblk0p1"} 3 +node_disk_reads_merged{device="mmcblk0p2"} 0 +node_disk_reads_merged{device="sda"} 3.4367663e+07 +node_disk_reads_merged{device="sr0"} 0 +node_disk_reads_merged{device="vda"} 15386 +# HELP node_disk_sectors_read The total number of sectors read successfully. +# TYPE node_disk_sectors_read counter +node_disk_sectors_read{device="dm-0"} 1.003337218e+09 +node_disk_sectors_read{device="dm-1"} 3104 +node_disk_sectors_read{device="dm-2"} 308350 +node_disk_sectors_read{device="dm-3"} 3870 +node_disk_sectors_read{device="dm-4"} 1034 +node_disk_sectors_read{device="dm-5"} 84279 +node_disk_sectors_read{device="mmcblk0"} 1560 +node_disk_sectors_read{device="mmcblk0p1"} 160 +node_disk_sectors_read{device="mmcblk0p2"} 760 +node_disk_sectors_read{device="sda"} 1.003346126e+09 +node_disk_sectors_read{device="sr0"} 0 +node_disk_sectors_read{device="vda"} 3.2670882e+07 +# HELP node_disk_sectors_written The total number of sectors written successfully. +# TYPE node_disk_sectors_written counter +node_disk_sectors_written{device="dm-0"} 5.0569688e+08 +node_disk_sectors_written{device="dm-1"} 592 +node_disk_sectors_written{device="dm-2"} 5.093416e+06 +node_disk_sectors_written{device="dm-3"} 0 +node_disk_sectors_written{device="dm-4"} 137 +node_disk_sectors_written{device="dm-5"} 1.151688e+06 +node_disk_sectors_written{device="mmcblk0"} 0 +node_disk_sectors_written{device="mmcblk0p1"} 0 +node_disk_sectors_written{device="mmcblk0p2"} 0 +node_disk_sectors_written{device="sda"} 5.05697032e+08 +node_disk_sectors_written{device="sr0"} 0 +node_disk_sectors_written{device="vda"} 2.1363744e+08 +# HELP node_disk_write_time_ms This is the total number of milliseconds spent by all writes. +# TYPE node_disk_write_time_ms counter +node_disk_write_time_ms{device="dm-0"} 1.1585578e+09 +node_disk_write_time_ms{device="dm-1"} 0 +node_disk_write_time_ms{device="dm-2"} 122884 +node_disk_write_time_ms{device="dm-3"} 0 +node_disk_write_time_ms{device="dm-4"} 16 +node_disk_write_time_ms{device="dm-5"} 104684 +node_disk_write_time_ms{device="mmcblk0"} 0 +node_disk_write_time_ms{device="mmcblk0p1"} 0 +node_disk_write_time_ms{device="mmcblk0p2"} 0 +node_disk_write_time_ms{device="sda"} 6.387796e+07 +node_disk_write_time_ms{device="sr0"} 0 +node_disk_write_time_ms{device="vda"} 2.069221364e+09 +# HELP node_disk_writes_completed The total number of writes completed successfully. +# TYPE node_disk_writes_completed counter +node_disk_writes_completed{device="dm-0"} 3.9231014e+07 +node_disk_writes_completed{device="dm-1"} 74 +node_disk_writes_completed{device="dm-2"} 153522 +node_disk_writes_completed{device="dm-3"} 0 +node_disk_writes_completed{device="dm-4"} 38 +node_disk_writes_completed{device="dm-5"} 98918 +node_disk_writes_completed{device="mmcblk0"} 0 +node_disk_writes_completed{device="mmcblk0p1"} 0 +node_disk_writes_completed{device="mmcblk0p2"} 0 +node_disk_writes_completed{device="sda"} 2.8444756e+07 +node_disk_writes_completed{device="sr0"} 0 +node_disk_writes_completed{device="vda"} 6.038856e+06 +# HELP node_disk_writes_merged The number of writes merged. See https://www.kernel.org/doc/Documentation/iostats.txt. +# TYPE node_disk_writes_merged counter +node_disk_writes_merged{device="dm-0"} 0 +node_disk_writes_merged{device="dm-1"} 0 +node_disk_writes_merged{device="dm-2"} 0 +node_disk_writes_merged{device="dm-3"} 0 +node_disk_writes_merged{device="dm-4"} 0 +node_disk_writes_merged{device="dm-5"} 0 +node_disk_writes_merged{device="mmcblk0"} 0 +node_disk_writes_merged{device="mmcblk0p1"} 0 +node_disk_writes_merged{device="mmcblk0p2"} 0 +node_disk_writes_merged{device="sda"} 1.1134226e+07 +node_disk_writes_merged{device="sr0"} 0 +node_disk_writes_merged{device="vda"} 2.0711856e+07 +# HELP node_exporter_scrape_duration_seconds node_exporter: Duration of a scrape job. +# TYPE node_exporter_scrape_duration_seconds summary +node_exporter_scrape_duration_seconds{collector="bonding",result="success",quantile="0.5"} 0.0005968610000000001 +node_exporter_scrape_duration_seconds{collector="bonding",result="success",quantile="0.9"} 0.0005968610000000001 +node_exporter_scrape_duration_seconds{collector="bonding",result="success",quantile="0.99"} 0.0005968610000000001 +node_exporter_scrape_duration_seconds_sum{collector="bonding",result="success"} 0.0005968610000000001 +node_exporter_scrape_duration_seconds_count{collector="bonding",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="diskstats",result="success",quantile="0.5"} 0.003440377 +node_exporter_scrape_duration_seconds{collector="diskstats",result="success",quantile="0.9"} 0.003440377 +node_exporter_scrape_duration_seconds{collector="diskstats",result="success",quantile="0.99"} 0.003440377 +node_exporter_scrape_duration_seconds_sum{collector="diskstats",result="success"} 0.003440377 +node_exporter_scrape_duration_seconds_count{collector="diskstats",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="filefd",result="success",quantile="0.5"} 0.000100198 +node_exporter_scrape_duration_seconds{collector="filefd",result="success",quantile="0.9"} 0.000100198 +node_exporter_scrape_duration_seconds{collector="filefd",result="success",quantile="0.99"} 0.000100198 +node_exporter_scrape_duration_seconds_sum{collector="filefd",result="success"} 0.000100198 +node_exporter_scrape_duration_seconds_count{collector="filefd",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="loadavg",result="success",quantile="0.5"} 0.0006679730000000001 +node_exporter_scrape_duration_seconds{collector="loadavg",result="success",quantile="0.9"} 0.0006679730000000001 +node_exporter_scrape_duration_seconds{collector="loadavg",result="success",quantile="0.99"} 0.0006679730000000001 +node_exporter_scrape_duration_seconds_sum{collector="loadavg",result="success"} 0.0006679730000000001 +node_exporter_scrape_duration_seconds_count{collector="loadavg",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="mdadm",result="success",quantile="0.5"} 0.0033833780000000003 +node_exporter_scrape_duration_seconds{collector="mdadm",result="success",quantile="0.9"} 0.0033833780000000003 +node_exporter_scrape_duration_seconds{collector="mdadm",result="success",quantile="0.99"} 0.0033833780000000003 +node_exporter_scrape_duration_seconds_sum{collector="mdadm",result="success"} 0.0033833780000000003 +node_exporter_scrape_duration_seconds_count{collector="mdadm",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="megacli",result="success",quantile="0.5"} 0.011852677 +node_exporter_scrape_duration_seconds{collector="megacli",result="success",quantile="0.9"} 0.011852677 +node_exporter_scrape_duration_seconds{collector="megacli",result="success",quantile="0.99"} 0.011852677 +node_exporter_scrape_duration_seconds_sum{collector="megacli",result="success"} 0.011852677 +node_exporter_scrape_duration_seconds_count{collector="megacli",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="meminfo",result="success",quantile="0.5"} 0.0020243550000000003 +node_exporter_scrape_duration_seconds{collector="meminfo",result="success",quantile="0.9"} 0.0020243550000000003 +node_exporter_scrape_duration_seconds{collector="meminfo",result="success",quantile="0.99"} 0.0020243550000000003 +node_exporter_scrape_duration_seconds_sum{collector="meminfo",result="success"} 0.0020243550000000003 +node_exporter_scrape_duration_seconds_count{collector="meminfo",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="netdev",result="success",quantile="0.5"} 0.001282011 +node_exporter_scrape_duration_seconds{collector="netdev",result="success",quantile="0.9"} 0.001282011 +node_exporter_scrape_duration_seconds{collector="netdev",result="success",quantile="0.99"} 0.001282011 +node_exporter_scrape_duration_seconds_sum{collector="netdev",result="success"} 0.001282011 +node_exporter_scrape_duration_seconds_count{collector="netdev",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="netstat",result="success",quantile="0.5"} 0.0030494930000000003 +node_exporter_scrape_duration_seconds{collector="netstat",result="success",quantile="0.9"} 0.0030494930000000003 +node_exporter_scrape_duration_seconds{collector="netstat",result="success",quantile="0.99"} 0.0030494930000000003 +node_exporter_scrape_duration_seconds_sum{collector="netstat",result="success"} 0.0030494930000000003 +node_exporter_scrape_duration_seconds_count{collector="netstat",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="sockstat",result="success",quantile="0.5"} 0.00034532300000000003 +node_exporter_scrape_duration_seconds{collector="sockstat",result="success",quantile="0.9"} 0.00034532300000000003 +node_exporter_scrape_duration_seconds{collector="sockstat",result="success",quantile="0.99"} 0.00034532300000000003 +node_exporter_scrape_duration_seconds_sum{collector="sockstat",result="success"} 0.00034532300000000003 +node_exporter_scrape_duration_seconds_count{collector="sockstat",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="stat",result="success",quantile="0.5"} 0.001924806 +node_exporter_scrape_duration_seconds{collector="stat",result="success",quantile="0.9"} 0.001924806 +node_exporter_scrape_duration_seconds{collector="stat",result="success",quantile="0.99"} 0.001924806 +node_exporter_scrape_duration_seconds_sum{collector="stat",result="success"} 0.001924806 +node_exporter_scrape_duration_seconds_count{collector="stat",result="success"} 1 +node_exporter_scrape_duration_seconds{collector="textfile",result="success",quantile="0.5"} 6.960000000000001e-07 +node_exporter_scrape_duration_seconds{collector="textfile",result="success",quantile="0.9"} 6.960000000000001e-07 +node_exporter_scrape_duration_seconds{collector="textfile",result="success",quantile="0.99"} 6.960000000000001e-07 +node_exporter_scrape_duration_seconds_sum{collector="textfile",result="success"} 6.960000000000001e-07 +node_exporter_scrape_duration_seconds_count{collector="textfile",result="success"} 1 +# HELP node_filefd_allocated File descriptor statistics: allocated. +# TYPE node_filefd_allocated gauge +node_filefd_allocated 1024 +# HELP node_filefd_maximum File descriptor statistics: maximum. +# TYPE node_filefd_maximum gauge +node_filefd_maximum 1.631329e+06 +# HELP node_forks Total number of forks. +# TYPE node_forks counter +node_forks 26442 +# HELP node_intr Total number of interrupts serviced. +# TYPE node_intr counter +node_intr 8.885917e+06 +# HELP node_load1 1m load average. +# TYPE node_load1 gauge +node_load1 0.21 +# HELP node_md_blocks Total number of blocks on device. +# TYPE node_md_blocks gauge +node_md_blocks{device="md0"} 248896 +node_md_blocks{device="md127"} 3.12319552e+08 +node_md_blocks{device="md3"} 5.853468288e+09 +node_md_blocks{device="md4"} 4.883648e+06 +node_md_blocks{device="md6"} 1.95310144e+08 +node_md_blocks{device="md7"} 7.813735424e+09 +node_md_blocks{device="md8"} 1.95310144e+08 +# HELP node_md_blocks_synced Number of blocks synced on device. +# TYPE node_md_blocks_synced gauge +node_md_blocks_synced{device="md0"} 248896 +node_md_blocks_synced{device="md127"} 3.12319552e+08 +node_md_blocks_synced{device="md3"} 5.853468288e+09 +node_md_blocks_synced{device="md4"} 4.883648e+06 +node_md_blocks_synced{device="md6"} 1.6775552e+07 +node_md_blocks_synced{device="md7"} 7.813735424e+09 +node_md_blocks_synced{device="md8"} 1.6775552e+07 +# HELP node_md_disks Total number of disks of device. +# TYPE node_md_disks gauge +node_md_disks{device="md0"} 2 +node_md_disks{device="md127"} 2 +node_md_disks{device="md3"} 8 +node_md_disks{device="md4"} 2 +node_md_disks{device="md6"} 2 +node_md_disks{device="md7"} 4 +node_md_disks{device="md8"} 2 +# HELP node_md_disks_active Number of active disks of device. +# TYPE node_md_disks_active gauge +node_md_disks_active{device="md0"} 2 +node_md_disks_active{device="md127"} 2 +node_md_disks_active{device="md3"} 8 +node_md_disks_active{device="md4"} 2 +node_md_disks_active{device="md6"} 1 +node_md_disks_active{device="md7"} 3 +node_md_disks_active{device="md8"} 2 +# HELP node_md_is_active Indicator whether the md-device is active or not. +# TYPE node_md_is_active gauge +node_md_is_active{device="md0"} 1 +node_md_is_active{device="md127"} 1 +node_md_is_active{device="md3"} 1 +node_md_is_active{device="md4"} 0 +node_md_is_active{device="md6"} 1 +node_md_is_active{device="md7"} 1 +node_md_is_active{device="md8"} 1 +# HELP node_megacli_drive_count megacli: drive error and event counters +# TYPE node_megacli_drive_count counter +node_megacli_drive_count{enclosure="32",slot="0",type="Media Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="0",type="Other Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="0",type="Predictive Failure Count"} 0 +node_megacli_drive_count{enclosure="32",slot="1",type="Media Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="1",type="Other Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="1",type="Predictive Failure Count"} 0 +node_megacli_drive_count{enclosure="32",slot="2",type="Media Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="2",type="Other Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="2",type="Predictive Failure Count"} 0 +node_megacli_drive_count{enclosure="32",slot="3",type="Media Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="3",type="Other Error Count"} 0 +node_megacli_drive_count{enclosure="32",slot="3",type="Predictive Failure Count"} 23 +# HELP node_megacli_drive_temperature_celsius megacli: drive temperature +# TYPE node_megacli_drive_temperature_celsius gauge +node_megacli_drive_temperature_celsius{enclosure="32",slot="0"} 37 +node_megacli_drive_temperature_celsius{enclosure="32",slot="2"} 39 +node_megacli_drive_temperature_celsius{enclosure="32",slot="3"} 38 +# HELP node_memory_Active Memory information field Active. +# TYPE node_memory_Active gauge +node_memory_Active 2.287017984e+09 +# HELP node_memory_Active_anon Memory information field Active_anon. +# TYPE node_memory_Active_anon gauge +node_memory_Active_anon 2.068484096e+09 +# HELP node_memory_Active_file Memory information field Active_file. +# TYPE node_memory_Active_file gauge +node_memory_Active_file 2.18533888e+08 +# HELP node_memory_AnonHugePages Memory information field AnonHugePages. +# TYPE node_memory_AnonHugePages gauge +node_memory_AnonHugePages 0 +# HELP node_memory_AnonPages Memory information field AnonPages. +# TYPE node_memory_AnonPages gauge +node_memory_AnonPages 2.298032128e+09 +# HELP node_memory_Bounce Memory information field Bounce. +# TYPE node_memory_Bounce gauge +node_memory_Bounce 0 +# HELP node_memory_Buffers Memory information field Buffers. +# TYPE node_memory_Buffers gauge +node_memory_Buffers 2.256896e+07 +# HELP node_memory_Cached Memory information field Cached. +# TYPE node_memory_Cached gauge +node_memory_Cached 9.53229312e+08 +# HELP node_memory_CommitLimit Memory information field CommitLimit. +# TYPE node_memory_CommitLimit gauge +node_memory_CommitLimit 6.210940928e+09 +# HELP node_memory_Committed_AS Memory information field Committed_AS. +# TYPE node_memory_Committed_AS gauge +node_memory_Committed_AS 8.023486464e+09 +# HELP node_memory_DirectMap2M Memory information field DirectMap2M. +# TYPE node_memory_DirectMap2M gauge +node_memory_DirectMap2M 3.787456512e+09 +# HELP node_memory_DirectMap4k Memory information field DirectMap4k. +# TYPE node_memory_DirectMap4k gauge +node_memory_DirectMap4k 1.9011584e+08 +# HELP node_memory_Dirty Memory information field Dirty. +# TYPE node_memory_Dirty gauge +node_memory_Dirty 1.077248e+06 +# HELP node_memory_HardwareCorrupted Memory information field HardwareCorrupted. +# TYPE node_memory_HardwareCorrupted gauge +node_memory_HardwareCorrupted 0 +# HELP node_memory_HugePages_Free Memory information field HugePages_Free. +# TYPE node_memory_HugePages_Free gauge +node_memory_HugePages_Free 0 +# HELP node_memory_HugePages_Rsvd Memory information field HugePages_Rsvd. +# TYPE node_memory_HugePages_Rsvd gauge +node_memory_HugePages_Rsvd 0 +# HELP node_memory_HugePages_Surp Memory information field HugePages_Surp. +# TYPE node_memory_HugePages_Surp gauge +node_memory_HugePages_Surp 0 +# HELP node_memory_HugePages_Total Memory information field HugePages_Total. +# TYPE node_memory_HugePages_Total gauge +node_memory_HugePages_Total 0 +# HELP node_memory_Hugepagesize Memory information field Hugepagesize. +# TYPE node_memory_Hugepagesize gauge +node_memory_Hugepagesize 2.097152e+06 +# HELP node_memory_Inactive Memory information field Inactive. +# TYPE node_memory_Inactive gauge +node_memory_Inactive 1.053417472e+09 +# HELP node_memory_Inactive_anon Memory information field Inactive_anon. +# TYPE node_memory_Inactive_anon gauge +node_memory_Inactive_anon 9.04245248e+08 +# HELP node_memory_Inactive_file Memory information field Inactive_file. +# TYPE node_memory_Inactive_file gauge +node_memory_Inactive_file 1.49172224e+08 +# HELP node_memory_KernelStack Memory information field KernelStack. +# TYPE node_memory_KernelStack gauge +node_memory_KernelStack 5.9392e+06 +# HELP node_memory_Mapped Memory information field Mapped. +# TYPE node_memory_Mapped gauge +node_memory_Mapped 2.4496128e+08 +# HELP node_memory_MemFree Memory information field MemFree. +# TYPE node_memory_MemFree gauge +node_memory_MemFree 2.30883328e+08 +# HELP node_memory_MemTotal Memory information field MemTotal. +# TYPE node_memory_MemTotal gauge +node_memory_MemTotal 3.831959552e+09 +# HELP node_memory_Mlocked Memory information field Mlocked. +# TYPE node_memory_Mlocked gauge +node_memory_Mlocked 32768 +# HELP node_memory_NFS_Unstable Memory information field NFS_Unstable. +# TYPE node_memory_NFS_Unstable gauge +node_memory_NFS_Unstable 0 +# HELP node_memory_PageTables Memory information field PageTables. +# TYPE node_memory_PageTables gauge +node_memory_PageTables 7.7017088e+07 +# HELP node_memory_SReclaimable Memory information field SReclaimable. +# TYPE node_memory_SReclaimable gauge +node_memory_SReclaimable 4.5846528e+07 +# HELP node_memory_SUnreclaim Memory information field SUnreclaim. +# TYPE node_memory_SUnreclaim gauge +node_memory_SUnreclaim 5.545984e+07 +# HELP node_memory_Shmem Memory information field Shmem. +# TYPE node_memory_Shmem gauge +node_memory_Shmem 6.0809216e+08 +# HELP node_memory_Slab Memory information field Slab. +# TYPE node_memory_Slab gauge +node_memory_Slab 1.01306368e+08 +# HELP node_memory_SwapCached Memory information field SwapCached. +# TYPE node_memory_SwapCached gauge +node_memory_SwapCached 1.97124096e+08 +# HELP node_memory_SwapFree Memory information field SwapFree. +# TYPE node_memory_SwapFree gauge +node_memory_SwapFree 3.23108864e+09 +# HELP node_memory_SwapTotal Memory information field SwapTotal. +# TYPE node_memory_SwapTotal gauge +node_memory_SwapTotal 4.2949632e+09 +# HELP node_memory_Unevictable Memory information field Unevictable. +# TYPE node_memory_Unevictable gauge +node_memory_Unevictable 32768 +# HELP node_memory_VmallocChunk Memory information field VmallocChunk. +# TYPE node_memory_VmallocChunk gauge +node_memory_VmallocChunk 3.5183963009024e+13 +# HELP node_memory_VmallocTotal Memory information field VmallocTotal. +# TYPE node_memory_VmallocTotal gauge +node_memory_VmallocTotal 3.5184372087808e+13 +# HELP node_memory_VmallocUsed Memory information field VmallocUsed. +# TYPE node_memory_VmallocUsed gauge +node_memory_VmallocUsed 3.6130816e+08 +# HELP node_memory_Writeback Memory information field Writeback. +# TYPE node_memory_Writeback gauge +node_memory_Writeback 0 +# HELP node_memory_WritebackTmp Memory information field WritebackTmp. +# TYPE node_memory_WritebackTmp gauge +node_memory_WritebackTmp 0 +# HELP node_net_bonding_slaves Number of configured slaves per bonding interface. +# TYPE node_net_bonding_slaves gauge +node_net_bonding_slaves{master="bond0"} 0 +node_net_bonding_slaves{master="dmz"} 2 +node_net_bonding_slaves{master="int"} 2 +# HELP node_net_bonding_slaves_active Number of active slaves per bonding interface. +# TYPE node_net_bonding_slaves_active gauge +node_net_bonding_slaves_active{master="bond0"} 0 +node_net_bonding_slaves_active{master="dmz"} 2 +node_net_bonding_slaves_active{master="int"} 1 +# HELP node_netstat_IcmpMsg_InType3 Protocol IcmpMsg statistic InType3. +# TYPE node_netstat_IcmpMsg_InType3 gauge +node_netstat_IcmpMsg_InType3 104 +# HELP node_netstat_IcmpMsg_OutType3 Protocol IcmpMsg statistic OutType3. +# TYPE node_netstat_IcmpMsg_OutType3 gauge +node_netstat_IcmpMsg_OutType3 120 +# HELP node_netstat_Icmp_InAddrMaskReps Protocol Icmp statistic InAddrMaskReps. +# TYPE node_netstat_Icmp_InAddrMaskReps gauge +node_netstat_Icmp_InAddrMaskReps 0 +# HELP node_netstat_Icmp_InAddrMasks Protocol Icmp statistic InAddrMasks. +# TYPE node_netstat_Icmp_InAddrMasks gauge +node_netstat_Icmp_InAddrMasks 0 +# HELP node_netstat_Icmp_InCsumErrors Protocol Icmp statistic InCsumErrors. +# TYPE node_netstat_Icmp_InCsumErrors gauge +node_netstat_Icmp_InCsumErrors 0 +# HELP node_netstat_Icmp_InDestUnreachs Protocol Icmp statistic InDestUnreachs. +# TYPE node_netstat_Icmp_InDestUnreachs gauge +node_netstat_Icmp_InDestUnreachs 104 +# HELP node_netstat_Icmp_InEchoReps Protocol Icmp statistic InEchoReps. +# TYPE node_netstat_Icmp_InEchoReps gauge +node_netstat_Icmp_InEchoReps 0 +# HELP node_netstat_Icmp_InEchos Protocol Icmp statistic InEchos. +# TYPE node_netstat_Icmp_InEchos gauge +node_netstat_Icmp_InEchos 0 +# HELP node_netstat_Icmp_InErrors Protocol Icmp statistic InErrors. +# TYPE node_netstat_Icmp_InErrors gauge +node_netstat_Icmp_InErrors 0 +# HELP node_netstat_Icmp_InMsgs Protocol Icmp statistic InMsgs. +# TYPE node_netstat_Icmp_InMsgs gauge +node_netstat_Icmp_InMsgs 104 +# HELP node_netstat_Icmp_InParmProbs Protocol Icmp statistic InParmProbs. +# TYPE node_netstat_Icmp_InParmProbs gauge +node_netstat_Icmp_InParmProbs 0 +# HELP node_netstat_Icmp_InRedirects Protocol Icmp statistic InRedirects. +# TYPE node_netstat_Icmp_InRedirects gauge +node_netstat_Icmp_InRedirects 0 +# HELP node_netstat_Icmp_InSrcQuenchs Protocol Icmp statistic InSrcQuenchs. +# TYPE node_netstat_Icmp_InSrcQuenchs gauge +node_netstat_Icmp_InSrcQuenchs 0 +# HELP node_netstat_Icmp_InTimeExcds Protocol Icmp statistic InTimeExcds. +# TYPE node_netstat_Icmp_InTimeExcds gauge +node_netstat_Icmp_InTimeExcds 0 +# HELP node_netstat_Icmp_InTimestampReps Protocol Icmp statistic InTimestampReps. +# TYPE node_netstat_Icmp_InTimestampReps gauge +node_netstat_Icmp_InTimestampReps 0 +# HELP node_netstat_Icmp_InTimestamps Protocol Icmp statistic InTimestamps. +# TYPE node_netstat_Icmp_InTimestamps gauge +node_netstat_Icmp_InTimestamps 0 +# HELP node_netstat_Icmp_OutAddrMaskReps Protocol Icmp statistic OutAddrMaskReps. +# TYPE node_netstat_Icmp_OutAddrMaskReps gauge +node_netstat_Icmp_OutAddrMaskReps 0 +# HELP node_netstat_Icmp_OutAddrMasks Protocol Icmp statistic OutAddrMasks. +# TYPE node_netstat_Icmp_OutAddrMasks gauge +node_netstat_Icmp_OutAddrMasks 0 +# HELP node_netstat_Icmp_OutDestUnreachs Protocol Icmp statistic OutDestUnreachs. +# TYPE node_netstat_Icmp_OutDestUnreachs gauge +node_netstat_Icmp_OutDestUnreachs 120 +# HELP node_netstat_Icmp_OutEchoReps Protocol Icmp statistic OutEchoReps. +# TYPE node_netstat_Icmp_OutEchoReps gauge +node_netstat_Icmp_OutEchoReps 0 +# HELP node_netstat_Icmp_OutEchos Protocol Icmp statistic OutEchos. +# TYPE node_netstat_Icmp_OutEchos gauge +node_netstat_Icmp_OutEchos 0 +# HELP node_netstat_Icmp_OutErrors Protocol Icmp statistic OutErrors. +# TYPE node_netstat_Icmp_OutErrors gauge +node_netstat_Icmp_OutErrors 0 +# HELP node_netstat_Icmp_OutMsgs Protocol Icmp statistic OutMsgs. +# TYPE node_netstat_Icmp_OutMsgs gauge +node_netstat_Icmp_OutMsgs 120 +# HELP node_netstat_Icmp_OutParmProbs Protocol Icmp statistic OutParmProbs. +# TYPE node_netstat_Icmp_OutParmProbs gauge +node_netstat_Icmp_OutParmProbs 0 +# HELP node_netstat_Icmp_OutRedirects Protocol Icmp statistic OutRedirects. +# TYPE node_netstat_Icmp_OutRedirects gauge +node_netstat_Icmp_OutRedirects 0 +# HELP node_netstat_Icmp_OutSrcQuenchs Protocol Icmp statistic OutSrcQuenchs. +# TYPE node_netstat_Icmp_OutSrcQuenchs gauge +node_netstat_Icmp_OutSrcQuenchs 0 +# HELP node_netstat_Icmp_OutTimeExcds Protocol Icmp statistic OutTimeExcds. +# TYPE node_netstat_Icmp_OutTimeExcds gauge +node_netstat_Icmp_OutTimeExcds 0 +# HELP node_netstat_Icmp_OutTimestampReps Protocol Icmp statistic OutTimestampReps. +# TYPE node_netstat_Icmp_OutTimestampReps gauge +node_netstat_Icmp_OutTimestampReps 0 +# HELP node_netstat_Icmp_OutTimestamps Protocol Icmp statistic OutTimestamps. +# TYPE node_netstat_Icmp_OutTimestamps gauge +node_netstat_Icmp_OutTimestamps 0 +# HELP node_netstat_IpExt_InBcastOctets Protocol IpExt statistic InBcastOctets. +# TYPE node_netstat_IpExt_InBcastOctets gauge +node_netstat_IpExt_InBcastOctets 0 +# HELP node_netstat_IpExt_InBcastPkts Protocol IpExt statistic InBcastPkts. +# TYPE node_netstat_IpExt_InBcastPkts gauge +node_netstat_IpExt_InBcastPkts 0 +# HELP node_netstat_IpExt_InMcastOctets Protocol IpExt statistic InMcastOctets. +# TYPE node_netstat_IpExt_InMcastOctets gauge +node_netstat_IpExt_InMcastOctets 0 +# HELP node_netstat_IpExt_InMcastPkts Protocol IpExt statistic InMcastPkts. +# TYPE node_netstat_IpExt_InMcastPkts gauge +node_netstat_IpExt_InMcastPkts 0 +# HELP node_netstat_IpExt_InNoRoutes Protocol IpExt statistic InNoRoutes. +# TYPE node_netstat_IpExt_InNoRoutes gauge +node_netstat_IpExt_InNoRoutes 0 +# HELP node_netstat_IpExt_InOctets Protocol IpExt statistic InOctets. +# TYPE node_netstat_IpExt_InOctets gauge +node_netstat_IpExt_InOctets 6.28639697e+09 +# HELP node_netstat_IpExt_InTruncatedPkts Protocol IpExt statistic InTruncatedPkts. +# TYPE node_netstat_IpExt_InTruncatedPkts gauge +node_netstat_IpExt_InTruncatedPkts 0 +# HELP node_netstat_IpExt_OutBcastOctets Protocol IpExt statistic OutBcastOctets. +# TYPE node_netstat_IpExt_OutBcastOctets gauge +node_netstat_IpExt_OutBcastOctets 0 +# HELP node_netstat_IpExt_OutBcastPkts Protocol IpExt statistic OutBcastPkts. +# TYPE node_netstat_IpExt_OutBcastPkts gauge +node_netstat_IpExt_OutBcastPkts 0 +# HELP node_netstat_IpExt_OutMcastOctets Protocol IpExt statistic OutMcastOctets. +# TYPE node_netstat_IpExt_OutMcastOctets gauge +node_netstat_IpExt_OutMcastOctets 0 +# HELP node_netstat_IpExt_OutMcastPkts Protocol IpExt statistic OutMcastPkts. +# TYPE node_netstat_IpExt_OutMcastPkts gauge +node_netstat_IpExt_OutMcastPkts 0 +# HELP node_netstat_IpExt_OutOctets Protocol IpExt statistic OutOctets. +# TYPE node_netstat_IpExt_OutOctets gauge +node_netstat_IpExt_OutOctets 2.786264347e+09 +# HELP node_netstat_Ip_DefaultTTL Protocol Ip statistic DefaultTTL. +# TYPE node_netstat_Ip_DefaultTTL gauge +node_netstat_Ip_DefaultTTL 64 +# HELP node_netstat_Ip_ForwDatagrams Protocol Ip statistic ForwDatagrams. +# TYPE node_netstat_Ip_ForwDatagrams gauge +node_netstat_Ip_ForwDatagrams 397750 +# HELP node_netstat_Ip_Forwarding Protocol Ip statistic Forwarding. +# TYPE node_netstat_Ip_Forwarding gauge +node_netstat_Ip_Forwarding 1 +# HELP node_netstat_Ip_FragCreates Protocol Ip statistic FragCreates. +# TYPE node_netstat_Ip_FragCreates gauge +node_netstat_Ip_FragCreates 0 +# HELP node_netstat_Ip_FragFails Protocol Ip statistic FragFails. +# TYPE node_netstat_Ip_FragFails gauge +node_netstat_Ip_FragFails 0 +# HELP node_netstat_Ip_FragOKs Protocol Ip statistic FragOKs. +# TYPE node_netstat_Ip_FragOKs gauge +node_netstat_Ip_FragOKs 0 +# HELP node_netstat_Ip_InAddrErrors Protocol Ip statistic InAddrErrors. +# TYPE node_netstat_Ip_InAddrErrors gauge +node_netstat_Ip_InAddrErrors 25 +# HELP node_netstat_Ip_InDelivers Protocol Ip statistic InDelivers. +# TYPE node_netstat_Ip_InDelivers gauge +node_netstat_Ip_InDelivers 5.7340175e+07 +# HELP node_netstat_Ip_InDiscards Protocol Ip statistic InDiscards. +# TYPE node_netstat_Ip_InDiscards gauge +node_netstat_Ip_InDiscards 0 +# HELP node_netstat_Ip_InHdrErrors Protocol Ip statistic InHdrErrors. +# TYPE node_netstat_Ip_InHdrErrors gauge +node_netstat_Ip_InHdrErrors 0 +# HELP node_netstat_Ip_InReceives Protocol Ip statistic InReceives. +# TYPE node_netstat_Ip_InReceives gauge +node_netstat_Ip_InReceives 5.7740232e+07 +# HELP node_netstat_Ip_InUnknownProtos Protocol Ip statistic InUnknownProtos. +# TYPE node_netstat_Ip_InUnknownProtos gauge +node_netstat_Ip_InUnknownProtos 0 +# HELP node_netstat_Ip_OutDiscards Protocol Ip statistic OutDiscards. +# TYPE node_netstat_Ip_OutDiscards gauge +node_netstat_Ip_OutDiscards 0 +# HELP node_netstat_Ip_OutNoRoutes Protocol Ip statistic OutNoRoutes. +# TYPE node_netstat_Ip_OutNoRoutes gauge +node_netstat_Ip_OutNoRoutes 54 +# HELP node_netstat_Ip_OutRequests Protocol Ip statistic OutRequests. +# TYPE node_netstat_Ip_OutRequests gauge +node_netstat_Ip_OutRequests 5.5365537e+07 +# HELP node_netstat_Ip_ReasmFails Protocol Ip statistic ReasmFails. +# TYPE node_netstat_Ip_ReasmFails gauge +node_netstat_Ip_ReasmFails 0 +# HELP node_netstat_Ip_ReasmOKs Protocol Ip statistic ReasmOKs. +# TYPE node_netstat_Ip_ReasmOKs gauge +node_netstat_Ip_ReasmOKs 0 +# HELP node_netstat_Ip_ReasmReqds Protocol Ip statistic ReasmReqds. +# TYPE node_netstat_Ip_ReasmReqds gauge +node_netstat_Ip_ReasmReqds 0 +# HELP node_netstat_Ip_ReasmTimeout Protocol Ip statistic ReasmTimeout. +# TYPE node_netstat_Ip_ReasmTimeout gauge +node_netstat_Ip_ReasmTimeout 0 +# HELP node_netstat_TcpExt_ArpFilter Protocol TcpExt statistic ArpFilter. +# TYPE node_netstat_TcpExt_ArpFilter gauge +node_netstat_TcpExt_ArpFilter 0 +# HELP node_netstat_TcpExt_DelayedACKLocked Protocol TcpExt statistic DelayedACKLocked. +# TYPE node_netstat_TcpExt_DelayedACKLocked gauge +node_netstat_TcpExt_DelayedACKLocked 17 +# HELP node_netstat_TcpExt_DelayedACKLost Protocol TcpExt statistic DelayedACKLost. +# TYPE node_netstat_TcpExt_DelayedACKLost gauge +node_netstat_TcpExt_DelayedACKLost 9 +# HELP node_netstat_TcpExt_DelayedACKs Protocol TcpExt statistic DelayedACKs. +# TYPE node_netstat_TcpExt_DelayedACKs gauge +node_netstat_TcpExt_DelayedACKs 102471 +# HELP node_netstat_TcpExt_EmbryonicRsts Protocol TcpExt statistic EmbryonicRsts. +# TYPE node_netstat_TcpExt_EmbryonicRsts gauge +node_netstat_TcpExt_EmbryonicRsts 0 +# HELP node_netstat_TcpExt_IPReversePathFilter Protocol TcpExt statistic IPReversePathFilter. +# TYPE node_netstat_TcpExt_IPReversePathFilter gauge +node_netstat_TcpExt_IPReversePathFilter 0 +# HELP node_netstat_TcpExt_ListenDrops Protocol TcpExt statistic ListenDrops. +# TYPE node_netstat_TcpExt_ListenDrops gauge +node_netstat_TcpExt_ListenDrops 0 +# HELP node_netstat_TcpExt_ListenOverflows Protocol TcpExt statistic ListenOverflows. +# TYPE node_netstat_TcpExt_ListenOverflows gauge +node_netstat_TcpExt_ListenOverflows 0 +# HELP node_netstat_TcpExt_LockDroppedIcmps Protocol TcpExt statistic LockDroppedIcmps. +# TYPE node_netstat_TcpExt_LockDroppedIcmps gauge +node_netstat_TcpExt_LockDroppedIcmps 0 +# HELP node_netstat_TcpExt_OfoPruned Protocol TcpExt statistic OfoPruned. +# TYPE node_netstat_TcpExt_OfoPruned gauge +node_netstat_TcpExt_OfoPruned 0 +# HELP node_netstat_TcpExt_OutOfWindowIcmps Protocol TcpExt statistic OutOfWindowIcmps. +# TYPE node_netstat_TcpExt_OutOfWindowIcmps gauge +node_netstat_TcpExt_OutOfWindowIcmps 0 +# HELP node_netstat_TcpExt_PAWSActive Protocol TcpExt statistic PAWSActive. +# TYPE node_netstat_TcpExt_PAWSActive gauge +node_netstat_TcpExt_PAWSActive 0 +# HELP node_netstat_TcpExt_PAWSEstab Protocol TcpExt statistic PAWSEstab. +# TYPE node_netstat_TcpExt_PAWSEstab gauge +node_netstat_TcpExt_PAWSEstab 6 +# HELP node_netstat_TcpExt_PAWSPassive Protocol TcpExt statistic PAWSPassive. +# TYPE node_netstat_TcpExt_PAWSPassive gauge +node_netstat_TcpExt_PAWSPassive 0 +# HELP node_netstat_TcpExt_PruneCalled Protocol TcpExt statistic PruneCalled. +# TYPE node_netstat_TcpExt_PruneCalled gauge +node_netstat_TcpExt_PruneCalled 0 +# HELP node_netstat_TcpExt_RcvPruned Protocol TcpExt statistic RcvPruned. +# TYPE node_netstat_TcpExt_RcvPruned gauge +node_netstat_TcpExt_RcvPruned 0 +# HELP node_netstat_TcpExt_SyncookiesFailed Protocol TcpExt statistic SyncookiesFailed. +# TYPE node_netstat_TcpExt_SyncookiesFailed gauge +node_netstat_TcpExt_SyncookiesFailed 2 +# HELP node_netstat_TcpExt_SyncookiesRecv Protocol TcpExt statistic SyncookiesRecv. +# TYPE node_netstat_TcpExt_SyncookiesRecv gauge +node_netstat_TcpExt_SyncookiesRecv 0 +# HELP node_netstat_TcpExt_SyncookiesSent Protocol TcpExt statistic SyncookiesSent. +# TYPE node_netstat_TcpExt_SyncookiesSent gauge +node_netstat_TcpExt_SyncookiesSent 0 +# HELP node_netstat_TcpExt_TCPAbortFailed Protocol TcpExt statistic TCPAbortFailed. +# TYPE node_netstat_TcpExt_TCPAbortFailed gauge +node_netstat_TcpExt_TCPAbortFailed 0 +# HELP node_netstat_TcpExt_TCPAbortOnClose Protocol TcpExt statistic TCPAbortOnClose. +# TYPE node_netstat_TcpExt_TCPAbortOnClose gauge +node_netstat_TcpExt_TCPAbortOnClose 4 +# HELP node_netstat_TcpExt_TCPAbortOnData Protocol TcpExt statistic TCPAbortOnData. +# TYPE node_netstat_TcpExt_TCPAbortOnData gauge +node_netstat_TcpExt_TCPAbortOnData 41 +# HELP node_netstat_TcpExt_TCPAbortOnLinger Protocol TcpExt statistic TCPAbortOnLinger. +# TYPE node_netstat_TcpExt_TCPAbortOnLinger gauge +node_netstat_TcpExt_TCPAbortOnLinger 0 +# HELP node_netstat_TcpExt_TCPAbortOnMemory Protocol TcpExt statistic TCPAbortOnMemory. +# TYPE node_netstat_TcpExt_TCPAbortOnMemory gauge +node_netstat_TcpExt_TCPAbortOnMemory 0 +# HELP node_netstat_TcpExt_TCPAbortOnTimeout Protocol TcpExt statistic TCPAbortOnTimeout. +# TYPE node_netstat_TcpExt_TCPAbortOnTimeout gauge +node_netstat_TcpExt_TCPAbortOnTimeout 0 +# HELP node_netstat_TcpExt_TCPBacklogDrop Protocol TcpExt statistic TCPBacklogDrop. +# TYPE node_netstat_TcpExt_TCPBacklogDrop gauge +node_netstat_TcpExt_TCPBacklogDrop 0 +# HELP node_netstat_TcpExt_TCPChallengeACK Protocol TcpExt statistic TCPChallengeACK. +# TYPE node_netstat_TcpExt_TCPChallengeACK gauge +node_netstat_TcpExt_TCPChallengeACK 2 +# HELP node_netstat_TcpExt_TCPDSACKIgnoredNoUndo Protocol TcpExt statistic TCPDSACKIgnoredNoUndo. +# TYPE node_netstat_TcpExt_TCPDSACKIgnoredNoUndo gauge +node_netstat_TcpExt_TCPDSACKIgnoredNoUndo 1 +# HELP node_netstat_TcpExt_TCPDSACKIgnoredOld Protocol TcpExt statistic TCPDSACKIgnoredOld. +# TYPE node_netstat_TcpExt_TCPDSACKIgnoredOld gauge +node_netstat_TcpExt_TCPDSACKIgnoredOld 0 +# HELP node_netstat_TcpExt_TCPDSACKOfoRecv Protocol TcpExt statistic TCPDSACKOfoRecv. +# TYPE node_netstat_TcpExt_TCPDSACKOfoRecv gauge +node_netstat_TcpExt_TCPDSACKOfoRecv 0 +# HELP node_netstat_TcpExt_TCPDSACKOfoSent Protocol TcpExt statistic TCPDSACKOfoSent. +# TYPE node_netstat_TcpExt_TCPDSACKOfoSent gauge +node_netstat_TcpExt_TCPDSACKOfoSent 0 +# HELP node_netstat_TcpExt_TCPDSACKOldSent Protocol TcpExt statistic TCPDSACKOldSent. +# TYPE node_netstat_TcpExt_TCPDSACKOldSent gauge +node_netstat_TcpExt_TCPDSACKOldSent 9 +# HELP node_netstat_TcpExt_TCPDSACKRecv Protocol TcpExt statistic TCPDSACKRecv. +# TYPE node_netstat_TcpExt_TCPDSACKRecv gauge +node_netstat_TcpExt_TCPDSACKRecv 5 +# HELP node_netstat_TcpExt_TCPDSACKUndo Protocol TcpExt statistic TCPDSACKUndo. +# TYPE node_netstat_TcpExt_TCPDSACKUndo gauge +node_netstat_TcpExt_TCPDSACKUndo 0 +# HELP node_netstat_TcpExt_TCPDeferAcceptDrop Protocol TcpExt statistic TCPDeferAcceptDrop. +# TYPE node_netstat_TcpExt_TCPDeferAcceptDrop gauge +node_netstat_TcpExt_TCPDeferAcceptDrop 0 +# HELP node_netstat_TcpExt_TCPDirectCopyFromBacklog Protocol TcpExt statistic TCPDirectCopyFromBacklog. +# TYPE node_netstat_TcpExt_TCPDirectCopyFromBacklog gauge +node_netstat_TcpExt_TCPDirectCopyFromBacklog 0 +# HELP node_netstat_TcpExt_TCPDirectCopyFromPrequeue Protocol TcpExt statistic TCPDirectCopyFromPrequeue. +# TYPE node_netstat_TcpExt_TCPDirectCopyFromPrequeue gauge +node_netstat_TcpExt_TCPDirectCopyFromPrequeue 168808 +# HELP node_netstat_TcpExt_TCPFACKReorder Protocol TcpExt statistic TCPFACKReorder. +# TYPE node_netstat_TcpExt_TCPFACKReorder gauge +node_netstat_TcpExt_TCPFACKReorder 0 +# HELP node_netstat_TcpExt_TCPFastRetrans Protocol TcpExt statistic TCPFastRetrans. +# TYPE node_netstat_TcpExt_TCPFastRetrans gauge +node_netstat_TcpExt_TCPFastRetrans 1 +# HELP node_netstat_TcpExt_TCPForwardRetrans Protocol TcpExt statistic TCPForwardRetrans. +# TYPE node_netstat_TcpExt_TCPForwardRetrans gauge +node_netstat_TcpExt_TCPForwardRetrans 0 +# HELP node_netstat_TcpExt_TCPFullUndo Protocol TcpExt statistic TCPFullUndo. +# TYPE node_netstat_TcpExt_TCPFullUndo gauge +node_netstat_TcpExt_TCPFullUndo 0 +# HELP node_netstat_TcpExt_TCPHPAcks Protocol TcpExt statistic TCPHPAcks. +# TYPE node_netstat_TcpExt_TCPHPAcks gauge +node_netstat_TcpExt_TCPHPAcks 3.744565e+06 +# HELP node_netstat_TcpExt_TCPHPHits Protocol TcpExt statistic TCPHPHits. +# TYPE node_netstat_TcpExt_TCPHPHits gauge +node_netstat_TcpExt_TCPHPHits 4.471289e+06 +# HELP node_netstat_TcpExt_TCPHPHitsToUser Protocol TcpExt statistic TCPHPHitsToUser. +# TYPE node_netstat_TcpExt_TCPHPHitsToUser gauge +node_netstat_TcpExt_TCPHPHitsToUser 26 +# HELP node_netstat_TcpExt_TCPLoss Protocol TcpExt statistic TCPLoss. +# TYPE node_netstat_TcpExt_TCPLoss gauge +node_netstat_TcpExt_TCPLoss 0 +# HELP node_netstat_TcpExt_TCPLossFailures Protocol TcpExt statistic TCPLossFailures. +# TYPE node_netstat_TcpExt_TCPLossFailures gauge +node_netstat_TcpExt_TCPLossFailures 0 +# HELP node_netstat_TcpExt_TCPLossUndo Protocol TcpExt statistic TCPLossUndo. +# TYPE node_netstat_TcpExt_TCPLossUndo gauge +node_netstat_TcpExt_TCPLossUndo 48 +# HELP node_netstat_TcpExt_TCPLostRetransmit Protocol TcpExt statistic TCPLostRetransmit. +# TYPE node_netstat_TcpExt_TCPLostRetransmit gauge +node_netstat_TcpExt_TCPLostRetransmit 0 +# HELP node_netstat_TcpExt_TCPMD5NotFound Protocol TcpExt statistic TCPMD5NotFound. +# TYPE node_netstat_TcpExt_TCPMD5NotFound gauge +node_netstat_TcpExt_TCPMD5NotFound 0 +# HELP node_netstat_TcpExt_TCPMD5Unexpected Protocol TcpExt statistic TCPMD5Unexpected. +# TYPE node_netstat_TcpExt_TCPMD5Unexpected gauge +node_netstat_TcpExt_TCPMD5Unexpected 0 +# HELP node_netstat_TcpExt_TCPMemoryPressures Protocol TcpExt statistic TCPMemoryPressures. +# TYPE node_netstat_TcpExt_TCPMemoryPressures gauge +node_netstat_TcpExt_TCPMemoryPressures 0 +# HELP node_netstat_TcpExt_TCPMinTTLDrop Protocol TcpExt statistic TCPMinTTLDrop. +# TYPE node_netstat_TcpExt_TCPMinTTLDrop gauge +node_netstat_TcpExt_TCPMinTTLDrop 0 +# HELP node_netstat_TcpExt_TCPPartialUndo Protocol TcpExt statistic TCPPartialUndo. +# TYPE node_netstat_TcpExt_TCPPartialUndo gauge +node_netstat_TcpExt_TCPPartialUndo 0 +# HELP node_netstat_TcpExt_TCPPrequeueDropped Protocol TcpExt statistic TCPPrequeueDropped. +# TYPE node_netstat_TcpExt_TCPPrequeueDropped gauge +node_netstat_TcpExt_TCPPrequeueDropped 0 +# HELP node_netstat_TcpExt_TCPPrequeued Protocol TcpExt statistic TCPPrequeued. +# TYPE node_netstat_TcpExt_TCPPrequeued gauge +node_netstat_TcpExt_TCPPrequeued 80568 +# HELP node_netstat_TcpExt_TCPPureAcks Protocol TcpExt statistic TCPPureAcks. +# TYPE node_netstat_TcpExt_TCPPureAcks gauge +node_netstat_TcpExt_TCPPureAcks 1.43394e+06 +# HELP node_netstat_TcpExt_TCPRcvCollapsed Protocol TcpExt statistic TCPRcvCollapsed. +# TYPE node_netstat_TcpExt_TCPRcvCollapsed gauge +node_netstat_TcpExt_TCPRcvCollapsed 0 +# HELP node_netstat_TcpExt_TCPRenoFailures Protocol TcpExt statistic TCPRenoFailures. +# TYPE node_netstat_TcpExt_TCPRenoFailures gauge +node_netstat_TcpExt_TCPRenoFailures 0 +# HELP node_netstat_TcpExt_TCPRenoRecovery Protocol TcpExt statistic TCPRenoRecovery. +# TYPE node_netstat_TcpExt_TCPRenoRecovery gauge +node_netstat_TcpExt_TCPRenoRecovery 0 +# HELP node_netstat_TcpExt_TCPRenoRecoveryFail Protocol TcpExt statistic TCPRenoRecoveryFail. +# TYPE node_netstat_TcpExt_TCPRenoRecoveryFail gauge +node_netstat_TcpExt_TCPRenoRecoveryFail 0 +# HELP node_netstat_TcpExt_TCPRenoReorder Protocol TcpExt statistic TCPRenoReorder. +# TYPE node_netstat_TcpExt_TCPRenoReorder gauge +node_netstat_TcpExt_TCPRenoReorder 0 +# HELP node_netstat_TcpExt_TCPReqQFullDoCookies Protocol TcpExt statistic TCPReqQFullDoCookies. +# TYPE node_netstat_TcpExt_TCPReqQFullDoCookies gauge +node_netstat_TcpExt_TCPReqQFullDoCookies 0 +# HELP node_netstat_TcpExt_TCPReqQFullDrop Protocol TcpExt statistic TCPReqQFullDrop. +# TYPE node_netstat_TcpExt_TCPReqQFullDrop gauge +node_netstat_TcpExt_TCPReqQFullDrop 0 +# HELP node_netstat_TcpExt_TCPSACKDiscard Protocol TcpExt statistic TCPSACKDiscard. +# TYPE node_netstat_TcpExt_TCPSACKDiscard gauge +node_netstat_TcpExt_TCPSACKDiscard 0 +# HELP node_netstat_TcpExt_TCPSACKReneging Protocol TcpExt statistic TCPSACKReneging. +# TYPE node_netstat_TcpExt_TCPSACKReneging gauge +node_netstat_TcpExt_TCPSACKReneging 0 +# HELP node_netstat_TcpExt_TCPSACKReorder Protocol TcpExt statistic TCPSACKReorder. +# TYPE node_netstat_TcpExt_TCPSACKReorder gauge +node_netstat_TcpExt_TCPSACKReorder 0 +# HELP node_netstat_TcpExt_TCPSYNChallenge Protocol TcpExt statistic TCPSYNChallenge. +# TYPE node_netstat_TcpExt_TCPSYNChallenge gauge +node_netstat_TcpExt_TCPSYNChallenge 2 +# HELP node_netstat_TcpExt_TCPSackFailures Protocol TcpExt statistic TCPSackFailures. +# TYPE node_netstat_TcpExt_TCPSackFailures gauge +node_netstat_TcpExt_TCPSackFailures 1 +# HELP node_netstat_TcpExt_TCPSackMerged Protocol TcpExt statistic TCPSackMerged. +# TYPE node_netstat_TcpExt_TCPSackMerged gauge +node_netstat_TcpExt_TCPSackMerged 2 +# HELP node_netstat_TcpExt_TCPSackRecovery Protocol TcpExt statistic TCPSackRecovery. +# TYPE node_netstat_TcpExt_TCPSackRecovery gauge +node_netstat_TcpExt_TCPSackRecovery 1 +# HELP node_netstat_TcpExt_TCPSackRecoveryFail Protocol TcpExt statistic TCPSackRecoveryFail. +# TYPE node_netstat_TcpExt_TCPSackRecoveryFail gauge +node_netstat_TcpExt_TCPSackRecoveryFail 0 +# HELP node_netstat_TcpExt_TCPSackShiftFallback Protocol TcpExt statistic TCPSackShiftFallback. +# TYPE node_netstat_TcpExt_TCPSackShiftFallback gauge +node_netstat_TcpExt_TCPSackShiftFallback 5 +# HELP node_netstat_TcpExt_TCPSackShifted Protocol TcpExt statistic TCPSackShifted. +# TYPE node_netstat_TcpExt_TCPSackShifted gauge +node_netstat_TcpExt_TCPSackShifted 0 +# HELP node_netstat_TcpExt_TCPSchedulerFailed Protocol TcpExt statistic TCPSchedulerFailed. +# TYPE node_netstat_TcpExt_TCPSchedulerFailed gauge +node_netstat_TcpExt_TCPSchedulerFailed 0 +# HELP node_netstat_TcpExt_TCPSlowStartRetrans Protocol TcpExt statistic TCPSlowStartRetrans. +# TYPE node_netstat_TcpExt_TCPSlowStartRetrans gauge +node_netstat_TcpExt_TCPSlowStartRetrans 1 +# HELP node_netstat_TcpExt_TCPSpuriousRTOs Protocol TcpExt statistic TCPSpuriousRTOs. +# TYPE node_netstat_TcpExt_TCPSpuriousRTOs gauge +node_netstat_TcpExt_TCPSpuriousRTOs 0 +# HELP node_netstat_TcpExt_TCPTSReorder Protocol TcpExt statistic TCPTSReorder. +# TYPE node_netstat_TcpExt_TCPTSReorder gauge +node_netstat_TcpExt_TCPTSReorder 0 +# HELP node_netstat_TcpExt_TCPTimeWaitOverflow Protocol TcpExt statistic TCPTimeWaitOverflow. +# TYPE node_netstat_TcpExt_TCPTimeWaitOverflow gauge +node_netstat_TcpExt_TCPTimeWaitOverflow 0 +# HELP node_netstat_TcpExt_TCPTimeouts Protocol TcpExt statistic TCPTimeouts. +# TYPE node_netstat_TcpExt_TCPTimeouts gauge +node_netstat_TcpExt_TCPTimeouts 115 +# HELP node_netstat_TcpExt_TW Protocol TcpExt statistic TW. +# TYPE node_netstat_TcpExt_TW gauge +node_netstat_TcpExt_TW 388812 +# HELP node_netstat_TcpExt_TWKilled Protocol TcpExt statistic TWKilled. +# TYPE node_netstat_TcpExt_TWKilled gauge +node_netstat_TcpExt_TWKilled 0 +# HELP node_netstat_TcpExt_TWRecycled Protocol TcpExt statistic TWRecycled. +# TYPE node_netstat_TcpExt_TWRecycled gauge +node_netstat_TcpExt_TWRecycled 0 +# HELP node_netstat_Tcp_ActiveOpens Protocol Tcp statistic ActiveOpens. +# TYPE node_netstat_Tcp_ActiveOpens gauge +node_netstat_Tcp_ActiveOpens 3556 +# HELP node_netstat_Tcp_AttemptFails Protocol Tcp statistic AttemptFails. +# TYPE node_netstat_Tcp_AttemptFails gauge +node_netstat_Tcp_AttemptFails 341 +# HELP node_netstat_Tcp_CurrEstab Protocol Tcp statistic CurrEstab. +# TYPE node_netstat_Tcp_CurrEstab gauge +node_netstat_Tcp_CurrEstab 0 +# HELP node_netstat_Tcp_EstabResets Protocol Tcp statistic EstabResets. +# TYPE node_netstat_Tcp_EstabResets gauge +node_netstat_Tcp_EstabResets 161 +# HELP node_netstat_Tcp_InCsumErrors Protocol Tcp statistic InCsumErrors. +# TYPE node_netstat_Tcp_InCsumErrors gauge +node_netstat_Tcp_InCsumErrors 0 +# HELP node_netstat_Tcp_InErrs Protocol Tcp statistic InErrs. +# TYPE node_netstat_Tcp_InErrs gauge +node_netstat_Tcp_InErrs 5 +# HELP node_netstat_Tcp_InSegs Protocol Tcp statistic InSegs. +# TYPE node_netstat_Tcp_InSegs gauge +node_netstat_Tcp_InSegs 5.7252008e+07 +# HELP node_netstat_Tcp_MaxConn Protocol Tcp statistic MaxConn. +# TYPE node_netstat_Tcp_MaxConn gauge +node_netstat_Tcp_MaxConn -1 +# HELP node_netstat_Tcp_OutRsts Protocol Tcp statistic OutRsts. +# TYPE node_netstat_Tcp_OutRsts gauge +node_netstat_Tcp_OutRsts 1003 +# HELP node_netstat_Tcp_OutSegs Protocol Tcp statistic OutSegs. +# TYPE node_netstat_Tcp_OutSegs gauge +node_netstat_Tcp_OutSegs 5.4915039e+07 +# HELP node_netstat_Tcp_PassiveOpens Protocol Tcp statistic PassiveOpens. +# TYPE node_netstat_Tcp_PassiveOpens gauge +node_netstat_Tcp_PassiveOpens 230 +# HELP node_netstat_Tcp_RetransSegs Protocol Tcp statistic RetransSegs. +# TYPE node_netstat_Tcp_RetransSegs gauge +node_netstat_Tcp_RetransSegs 227 +# HELP node_netstat_Tcp_RtoAlgorithm Protocol Tcp statistic RtoAlgorithm. +# TYPE node_netstat_Tcp_RtoAlgorithm gauge +node_netstat_Tcp_RtoAlgorithm 1 +# HELP node_netstat_Tcp_RtoMax Protocol Tcp statistic RtoMax. +# TYPE node_netstat_Tcp_RtoMax gauge +node_netstat_Tcp_RtoMax 120000 +# HELP node_netstat_Tcp_RtoMin Protocol Tcp statistic RtoMin. +# TYPE node_netstat_Tcp_RtoMin gauge +node_netstat_Tcp_RtoMin 200 +# HELP node_netstat_UdpLite_InCsumErrors Protocol UdpLite statistic InCsumErrors. +# TYPE node_netstat_UdpLite_InCsumErrors gauge +node_netstat_UdpLite_InCsumErrors 0 +# HELP node_netstat_UdpLite_InDatagrams Protocol UdpLite statistic InDatagrams. +# TYPE node_netstat_UdpLite_InDatagrams gauge +node_netstat_UdpLite_InDatagrams 0 +# HELP node_netstat_UdpLite_InErrors Protocol UdpLite statistic InErrors. +# TYPE node_netstat_UdpLite_InErrors gauge +node_netstat_UdpLite_InErrors 0 +# HELP node_netstat_UdpLite_NoPorts Protocol UdpLite statistic NoPorts. +# TYPE node_netstat_UdpLite_NoPorts gauge +node_netstat_UdpLite_NoPorts 0 +# HELP node_netstat_UdpLite_OutDatagrams Protocol UdpLite statistic OutDatagrams. +# TYPE node_netstat_UdpLite_OutDatagrams gauge +node_netstat_UdpLite_OutDatagrams 0 +# HELP node_netstat_UdpLite_RcvbufErrors Protocol UdpLite statistic RcvbufErrors. +# TYPE node_netstat_UdpLite_RcvbufErrors gauge +node_netstat_UdpLite_RcvbufErrors 0 +# HELP node_netstat_UdpLite_SndbufErrors Protocol UdpLite statistic SndbufErrors. +# TYPE node_netstat_UdpLite_SndbufErrors gauge +node_netstat_UdpLite_SndbufErrors 0 +# HELP node_netstat_Udp_InCsumErrors Protocol Udp statistic InCsumErrors. +# TYPE node_netstat_Udp_InCsumErrors gauge +node_netstat_Udp_InCsumErrors 0 +# HELP node_netstat_Udp_InDatagrams Protocol Udp statistic InDatagrams. +# TYPE node_netstat_Udp_InDatagrams gauge +node_netstat_Udp_InDatagrams 88542 +# HELP node_netstat_Udp_InErrors Protocol Udp statistic InErrors. +# TYPE node_netstat_Udp_InErrors gauge +node_netstat_Udp_InErrors 0 +# HELP node_netstat_Udp_NoPorts Protocol Udp statistic NoPorts. +# TYPE node_netstat_Udp_NoPorts gauge +node_netstat_Udp_NoPorts 120 +# HELP node_netstat_Udp_OutDatagrams Protocol Udp statistic OutDatagrams. +# TYPE node_netstat_Udp_OutDatagrams gauge +node_netstat_Udp_OutDatagrams 53028 +# HELP node_netstat_Udp_RcvbufErrors Protocol Udp statistic RcvbufErrors. +# TYPE node_netstat_Udp_RcvbufErrors gauge +node_netstat_Udp_RcvbufErrors 0 +# HELP node_netstat_Udp_SndbufErrors Protocol Udp statistic SndbufErrors. +# TYPE node_netstat_Udp_SndbufErrors gauge +node_netstat_Udp_SndbufErrors 0 +# HELP node_network_receive_bytes Network device statistic receive_bytes. +# TYPE node_network_receive_bytes gauge +node_network_receive_bytes{device="docker0"} 6.4910168e+07 +node_network_receive_bytes{device="eth0"} 6.8210035552e+10 +node_network_receive_bytes{device="lo"} 4.35303245e+08 +node_network_receive_bytes{device="lxcbr0"} 0 +node_network_receive_bytes{device="tun0"} 1888 +node_network_receive_bytes{device="veth4B09XN"} 648 +node_network_receive_bytes{device="wlan0"} 1.0437182923e+10 +# HELP node_network_receive_compressed Network device statistic receive_compressed. +# TYPE node_network_receive_compressed gauge +node_network_receive_compressed{device="docker0"} 0 +node_network_receive_compressed{device="eth0"} 0 +node_network_receive_compressed{device="lo"} 0 +node_network_receive_compressed{device="lxcbr0"} 0 +node_network_receive_compressed{device="tun0"} 0 +node_network_receive_compressed{device="veth4B09XN"} 0 +node_network_receive_compressed{device="wlan0"} 0 +# HELP node_network_receive_drop Network device statistic receive_drop. +# TYPE node_network_receive_drop gauge +node_network_receive_drop{device="docker0"} 0 +node_network_receive_drop{device="eth0"} 0 +node_network_receive_drop{device="lo"} 0 +node_network_receive_drop{device="lxcbr0"} 0 +node_network_receive_drop{device="tun0"} 0 +node_network_receive_drop{device="veth4B09XN"} 0 +node_network_receive_drop{device="wlan0"} 0 +# HELP node_network_receive_errs Network device statistic receive_errs. +# TYPE node_network_receive_errs gauge +node_network_receive_errs{device="docker0"} 0 +node_network_receive_errs{device="eth0"} 0 +node_network_receive_errs{device="lo"} 0 +node_network_receive_errs{device="lxcbr0"} 0 +node_network_receive_errs{device="tun0"} 0 +node_network_receive_errs{device="veth4B09XN"} 0 +node_network_receive_errs{device="wlan0"} 0 +# HELP node_network_receive_fifo Network device statistic receive_fifo. +# TYPE node_network_receive_fifo gauge +node_network_receive_fifo{device="docker0"} 0 +node_network_receive_fifo{device="eth0"} 0 +node_network_receive_fifo{device="lo"} 0 +node_network_receive_fifo{device="lxcbr0"} 0 +node_network_receive_fifo{device="tun0"} 0 +node_network_receive_fifo{device="veth4B09XN"} 0 +node_network_receive_fifo{device="wlan0"} 0 +# HELP node_network_receive_frame Network device statistic receive_frame. +# TYPE node_network_receive_frame gauge +node_network_receive_frame{device="docker0"} 0 +node_network_receive_frame{device="eth0"} 0 +node_network_receive_frame{device="lo"} 0 +node_network_receive_frame{device="lxcbr0"} 0 +node_network_receive_frame{device="tun0"} 0 +node_network_receive_frame{device="veth4B09XN"} 0 +node_network_receive_frame{device="wlan0"} 0 +# HELP node_network_receive_multicast Network device statistic receive_multicast. +# TYPE node_network_receive_multicast gauge +node_network_receive_multicast{device="docker0"} 0 +node_network_receive_multicast{device="eth0"} 0 +node_network_receive_multicast{device="lo"} 0 +node_network_receive_multicast{device="lxcbr0"} 0 +node_network_receive_multicast{device="tun0"} 0 +node_network_receive_multicast{device="veth4B09XN"} 0 +node_network_receive_multicast{device="wlan0"} 0 +# HELP node_network_receive_packets Network device statistic receive_packets. +# TYPE node_network_receive_packets gauge +node_network_receive_packets{device="docker0"} 1.065585e+06 +node_network_receive_packets{device="eth0"} 5.20993275e+08 +node_network_receive_packets{device="lo"} 1.832522e+06 +node_network_receive_packets{device="lxcbr0"} 0 +node_network_receive_packets{device="tun0"} 24 +node_network_receive_packets{device="veth4B09XN"} 8 +node_network_receive_packets{device="wlan0"} 1.3899359e+07 +# HELP node_network_transmit_bytes Network device statistic transmit_bytes. +# TYPE node_network_transmit_bytes gauge +node_network_transmit_bytes{device="docker0"} 2.681662018e+09 +node_network_transmit_bytes{device="eth0"} 9.315587528e+09 +node_network_transmit_bytes{device="lo"} 4.35303245e+08 +node_network_transmit_bytes{device="lxcbr0"} 2.630299e+06 +node_network_transmit_bytes{device="tun0"} 67120 +node_network_transmit_bytes{device="veth4B09XN"} 1.943284e+06 +node_network_transmit_bytes{device="wlan0"} 2.85164936e+09 +# HELP node_network_transmit_compressed Network device statistic transmit_compressed. +# TYPE node_network_transmit_compressed gauge +node_network_transmit_compressed{device="docker0"} 0 +node_network_transmit_compressed{device="eth0"} 0 +node_network_transmit_compressed{device="lo"} 0 +node_network_transmit_compressed{device="lxcbr0"} 0 +node_network_transmit_compressed{device="tun0"} 0 +node_network_transmit_compressed{device="veth4B09XN"} 0 +node_network_transmit_compressed{device="wlan0"} 0 +# HELP node_network_transmit_drop Network device statistic transmit_drop. +# TYPE node_network_transmit_drop gauge +node_network_transmit_drop{device="docker0"} 0 +node_network_transmit_drop{device="eth0"} 0 +node_network_transmit_drop{device="lo"} 0 +node_network_transmit_drop{device="lxcbr0"} 0 +node_network_transmit_drop{device="tun0"} 0 +node_network_transmit_drop{device="veth4B09XN"} 0 +node_network_transmit_drop{device="wlan0"} 0 +# HELP node_network_transmit_errs Network device statistic transmit_errs. +# TYPE node_network_transmit_errs gauge +node_network_transmit_errs{device="docker0"} 0 +node_network_transmit_errs{device="eth0"} 0 +node_network_transmit_errs{device="lo"} 0 +node_network_transmit_errs{device="lxcbr0"} 0 +node_network_transmit_errs{device="tun0"} 0 +node_network_transmit_errs{device="veth4B09XN"} 0 +node_network_transmit_errs{device="wlan0"} 0 +# HELP node_network_transmit_fifo Network device statistic transmit_fifo. +# TYPE node_network_transmit_fifo gauge +node_network_transmit_fifo{device="docker0"} 0 +node_network_transmit_fifo{device="eth0"} 0 +node_network_transmit_fifo{device="lo"} 0 +node_network_transmit_fifo{device="lxcbr0"} 0 +node_network_transmit_fifo{device="tun0"} 0 +node_network_transmit_fifo{device="veth4B09XN"} 0 +node_network_transmit_fifo{device="wlan0"} 0 +# HELP node_network_transmit_frame Network device statistic transmit_frame. +# TYPE node_network_transmit_frame gauge +node_network_transmit_frame{device="docker0"} 0 +node_network_transmit_frame{device="eth0"} 0 +node_network_transmit_frame{device="lo"} 0 +node_network_transmit_frame{device="lxcbr0"} 0 +node_network_transmit_frame{device="tun0"} 0 +node_network_transmit_frame{device="veth4B09XN"} 0 +node_network_transmit_frame{device="wlan0"} 0 +# HELP node_network_transmit_multicast Network device statistic transmit_multicast. +# TYPE node_network_transmit_multicast gauge +node_network_transmit_multicast{device="docker0"} 0 +node_network_transmit_multicast{device="eth0"} 0 +node_network_transmit_multicast{device="lo"} 0 +node_network_transmit_multicast{device="lxcbr0"} 0 +node_network_transmit_multicast{device="tun0"} 0 +node_network_transmit_multicast{device="veth4B09XN"} 0 +node_network_transmit_multicast{device="wlan0"} 0 +# HELP node_network_transmit_packets Network device statistic transmit_packets. +# TYPE node_network_transmit_packets gauge +node_network_transmit_packets{device="docker0"} 1.929779e+06 +node_network_transmit_packets{device="eth0"} 4.3451486e+07 +node_network_transmit_packets{device="lo"} 1.832522e+06 +node_network_transmit_packets{device="lxcbr0"} 28339 +node_network_transmit_packets{device="tun0"} 934 +node_network_transmit_packets{device="veth4B09XN"} 10640 +node_network_transmit_packets{device="wlan0"} 1.17262e+07 +# HELP node_procs_blocked Number of processes blocked waiting for I/O to complete. +# TYPE node_procs_blocked gauge +node_procs_blocked 0 +# HELP node_procs_running Number of processes in runnable state. +# TYPE node_procs_running gauge +node_procs_running 2 +# HELP node_sockstat_FRAG_inuse Number of FRAG sockets in state inuse. +# TYPE node_sockstat_FRAG_inuse gauge +node_sockstat_FRAG_inuse 0 +# HELP node_sockstat_FRAG_memory Number of FRAG sockets in state memory. +# TYPE node_sockstat_FRAG_memory gauge +node_sockstat_FRAG_memory 0 +# HELP node_sockstat_RAW_inuse Number of RAW sockets in state inuse. +# TYPE node_sockstat_RAW_inuse gauge +node_sockstat_RAW_inuse 0 +# HELP node_sockstat_TCP_alloc Number of TCP sockets in state alloc. +# TYPE node_sockstat_TCP_alloc gauge +node_sockstat_TCP_alloc 17 +# HELP node_sockstat_TCP_inuse Number of TCP sockets in state inuse. +# TYPE node_sockstat_TCP_inuse gauge +node_sockstat_TCP_inuse 4 +# HELP node_sockstat_TCP_mem Number of TCP sockets in state mem. +# TYPE node_sockstat_TCP_mem gauge +node_sockstat_TCP_mem 1 +# HELP node_sockstat_TCP_mem_bytes Number of TCP sockets in state mem_bytes. +# TYPE node_sockstat_TCP_mem_bytes gauge +node_sockstat_TCP_mem_bytes 4096 +# HELP node_sockstat_TCP_orphan Number of TCP sockets in state orphan. +# TYPE node_sockstat_TCP_orphan gauge +node_sockstat_TCP_orphan 0 +# HELP node_sockstat_TCP_tw Number of TCP sockets in state tw. +# TYPE node_sockstat_TCP_tw gauge +node_sockstat_TCP_tw 4 +# HELP node_sockstat_UDPLITE_inuse Number of UDPLITE sockets in state inuse. +# TYPE node_sockstat_UDPLITE_inuse gauge +node_sockstat_UDPLITE_inuse 0 +# HELP node_sockstat_UDP_inuse Number of UDP sockets in state inuse. +# TYPE node_sockstat_UDP_inuse gauge +node_sockstat_UDP_inuse 0 +# HELP node_sockstat_UDP_mem Number of UDP sockets in state mem. +# TYPE node_sockstat_UDP_mem gauge +node_sockstat_UDP_mem 0 +# HELP node_sockstat_UDP_mem_bytes Number of UDP sockets in state mem_bytes. +# TYPE node_sockstat_UDP_mem_bytes gauge +node_sockstat_UDP_mem_bytes 0 +# HELP node_sockstat_sockets_used Number of sockets sockets in state used. +# TYPE node_sockstat_sockets_used gauge +node_sockstat_sockets_used 229 +# HELP node_textfile_mtime Unixtime mtime of textfiles successfully read. +# TYPE node_textfile_mtime gauge +node_textfile_mtime{file="metrics1.prom"} 1.4432590509394212e+09 +node_textfile_mtime{file="metrics2.prom"} 1.4432590509394212e+09 +# HELP node_textfile_scrape_error 1 if there was an error opening or reading a file, 0 otherwise +# TYPE node_textfile_scrape_error gauge +node_textfile_scrape_error 0 +# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds. +# TYPE process_cpu_seconds_total counter +process_cpu_seconds_total 0.01 +# HELP process_max_fds Maximum number of open file descriptors. +# TYPE process_max_fds gauge +process_max_fds 65536 +# HELP process_open_fds Number of open file descriptors. +# TYPE process_open_fds gauge +process_open_fds 12 +# HELP process_resident_memory_bytes Resident memory size in bytes. +# TYPE process_resident_memory_bytes gauge +process_resident_memory_bytes 9.285632e+06 +# HELP process_start_time_seconds Start time of the process since unix epoch in seconds. +# TYPE process_start_time_seconds gauge +process_start_time_seconds 1.44329552189e+09 +# HELP process_virtual_memory_bytes Virtual memory size in bytes. +# TYPE process_virtual_memory_bytes gauge +process_virtual_memory_bytes 5.24058624e+08 +# HELP testmetric1_1 Metric read from collector/fixtures/textfile/two_metric_files/metrics1.prom +# TYPE testmetric1_1 untyped +testmetric1_1{foo="bar"} 10 +# HELP testmetric1_2 Metric read from collector/fixtures/textfile/two_metric_files/metrics1.prom +# TYPE testmetric1_2 untyped +testmetric1_2{foo="baz"} 20 +# HELP testmetric2_1 Metric read from collector/fixtures/textfile/two_metric_files/metrics2.prom +# TYPE testmetric2_1 untyped +testmetric2_1{foo="bar"} 30 1441205977284 +# HELP testmetric2_2 Metric read from collector/fixtures/textfile/two_metric_files/metrics2.prom +# TYPE testmetric2_2 untyped +testmetric2_2{foo="baz"} 40 1441205977284 diff --git a/collector/fixtures/megacli b/collector/fixtures/megacli index 42135854..e912e36c 100755 --- a/collector/fixtures/megacli +++ b/collector/fixtures/megacli @@ -1,3 +1,3 @@ #!/usr/bin/env bash -cat fixtures/megacli_disks.txt +cat "$(dirname "$0")/megacli_disks.txt" diff --git a/collector/mdadm.go b/collector/mdadm.go index ac2d9de6..dae204d9 100644 --- a/collector/mdadm.go +++ b/collector/mdadm.go @@ -226,6 +226,7 @@ func (c *mdadmCollector) Update(ch chan<- prometheus.Metric) (err error) { _, err = os.Stat(statusfile) if os.IsNotExist(err) { // no such file or directory, nothing to do, just return + log.Debugf("Not collecting mdstat, file does not exist: %s", statusfile) return nil } diff --git a/end-to-end-test.sh b/end-to-end-test.sh new file mode 100755 index 00000000..fdfe4800 --- /dev/null +++ b/end-to-end-test.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +set +euf +o pipefail + +cd "$(dirname $0)" + +port="$((10000 + (RANDOM % 10000)))" +tmpdir=$(mktemp -d /tmp/node_exporter_e2e_test.XXXXXX) + +skip_re="^(go_|node_exporter_|process_|node_textfile_mtime)" + +keep=0; update=0; verbose=0 +while getopts 'hkuv' opt +do + case "$opt" in + k) + keep=1 + ;; + u) + update=1 + ;; + v) + verbose=1 + set -x + ;; + *) + echo "Usage: $0 [-k] [-u] [-v]" + echo " -k: keep temporary files and leave node_exporter running" + echo " -u: update fixture" + echo " -v: verbose output" + exit 1 + ;; + esac +done + + +./node_exporter \ + -collector.procfs="collector/fixtures/proc" \ + -collector.sysfs="collector/fixtures/sys" \ + -collectors.enabled="diskstats,filefd,loadavg,mdadm,meminfo,netdev,netstat,sockstat,stat,textfile,bonding,megacli" \ + -collector.textfile.directory="collector/fixtures/textfile/two_metric_files/" \ + -collector.megacli.command="collector/fixtures/megacli" \ + -web.listen-address "127.0.0.1:${port}" \ + -log.level="debug" > "${tmpdir}/node_exporter.log" 2>&1 & + +echo $! > "${tmpdir}/node_exporter.pid" + +finish() { + if [ ${verbose} -ne 0 ] + then + echo "LOG =====================" + cat "${tmpdir}/node_exporter.log" + echo "=========================" + fi + + if [ ${update} -ne 0 ] + then + cp "${tmpdir}/e2e-output.txt" "collector/fixtures/e2e-output.txt" + fi + + if [ ${keep} -eq 0 ] + then + kill -9 "$(cat ${tmpdir}/node_exporter.pid)" + # This silences the "Killed" message + wait "$(cat ${tmpdir}/node_exporter.pid)" > /dev/null 2>&1 + rm -rf "${tmpdir}" + fi +} + +trap finish EXIT + +get() { + if which curl > /dev/null 2>&1 + then + curl -s -f "$@" + elif which wget > /dev/null 2>&1 + then + wget -O - "$@" + else + echo "Neither curl nor wget found" + exit 1 + fi +} + +sleep 1 + +get "127.0.0.1:${port}/metrics" > "${tmpdir}/e2e-output.txt" + +diff -u \ + <(grep -E -v "${skip_re}" "collector/fixtures/e2e-output.txt") \ + <(grep -E -v "${skip_re}" "${tmpdir}/e2e-output.txt")