Add test monitoring module 91/37491/2
authoryuyang <Gabriel.yuyang@huawei.com>
Fri, 14 Jul 2017 09:27:13 +0000 (17:27 +0800)
committeryuyang <Gabriel.yuyang@huawei.com>
Mon, 17 Jul 2017 02:24:54 +0000 (10:24 +0800)
JIRA: BOTTLENECK-172

Add the monitoring module for Bottlenecks testing. Merging into
the framework will be in another patch since framework is under
refactoration.

Change-Id: I72eb1b6cabac6a9d1d0ef1fb6430f364e8ad76df
Signed-off-by: yuyang <Gabriel.yuyang@huawei.com>
monitor/__init__.py [new file with mode: 0644]
monitor/config/__init__.py [new file with mode: 0644]
monitor/config/collectd.conf [new file with mode: 0644]
monitor/config/prometheus.yaml [new file with mode: 0644]
monitor/monitoring.sh [new file with mode: 0644]

diff --git a/monitor/__init__.py b/monitor/__init__.py
new file mode 100644 (file)
index 0000000..b124dfa
--- /dev/null
@@ -0,0 +1,8 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
diff --git a/monitor/config/__init__.py b/monitor/config/__init__.py
new file mode 100644 (file)
index 0000000..b124dfa
--- /dev/null
@@ -0,0 +1,8 @@
+##############################################################################
+# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
diff --git a/monitor/config/collectd.conf b/monitor/config/collectd.conf
new file mode 100644 (file)
index 0000000..62be9fb
--- /dev/null
@@ -0,0 +1,1511 @@
+#
+# Config file for collectd(1).
+# Please read collectd.conf(5) for a list of options.
+# http://collectd.org/
+#
+
+##############################################################################
+# Global                                                                     #
+#----------------------------------------------------------------------------#
+# Global settings for the daemon.                                            #
+##############################################################################
+
+#Hostname    "localhost"
+#FQDNLookup   true
+#BaseDir     "${prefix}/var/lib/collectd"
+#PIDFile     "${prefix}/var/run/collectd.pid"
+#PluginDir   "${exec_prefix}/lib/collectd"
+#TypesDB     "/usr/share/collectd/types.db"
+
+#----------------------------------------------------------------------------#
+# When enabled, plugins are loaded automatically with the default options    #
+# when an appropriate <Plugin ...> block is encountered.                     #
+# Disabled by default.                                                       #
+#----------------------------------------------------------------------------#
+#AutoLoadPlugin false
+
+#----------------------------------------------------------------------------#
+# When enabled, internal statistics are collected, using "collectd" as the   #
+# plugin name.                                                               #
+# Disabled by default.                                                       #
+#----------------------------------------------------------------------------#
+#CollectInternalStats false
+
+#----------------------------------------------------------------------------#
+# Interval at which to query values. This may be overwritten on a per-plugin #
+# base by using the 'Interval' option of the LoadPlugin block:               #
+#   <LoadPlugin foo>                                                         #
+#       Interval 60                                                          #
+#   </LoadPlugin>                                                            #
+#----------------------------------------------------------------------------#
+#Interval     10
+
+#MaxReadInterval 86400
+#Timeout         2
+#ReadThreads     5
+#WriteThreads    5
+
+# Limit the size of the write queue. Default is no limit. Setting up a limit is
+# recommended for servers handling a high volume of traffic.
+#WriteQueueLimitHigh 1000000
+#WriteQueueLimitLow   800000
+
+##############################################################################
+# Logging                                                                    #
+#----------------------------------------------------------------------------#
+# Plugins which provide logging functions should be loaded first, so log     #
+# messages generated when loading or configuring other plugins can be        #
+# accessed.                                                                  #
+##############################################################################
+
+LoadPlugin syslog
+#LoadPlugin logfile
+#LoadPlugin log_logstash
+
+#<Plugin logfile>
+#       LogLevel info
+#       File STDOUT
+#       Timestamp true
+#       PrintSeverity false
+#</Plugin>
+
+#<Plugin log_logstash>
+#       LogLevel info
+#       File "${prefix}/var/log/collectd.json.log"
+#</Plugin>
+
+#<Plugin syslog>
+#       LogLevel info
+#</Plugin>
+
+##############################################################################
+# LoadPlugin section                                                         #
+#----------------------------------------------------------------------------#
+# Lines beginning with a single `#' belong to plugins which have been built  #
+# but are disabled by default.                                               #
+#                                                                            #
+# Lines begnning with `##' belong to plugins which have not been built due   #
+# to missing dependencies or because they have been deactivated explicitly.  #
+##############################################################################
+
+#LoadPlugin aggregation
+#LoadPlugin amqp
+#LoadPlugin apache
+#LoadPlugin apcups
+##LoadPlugin apple_sensors
+##LoadPlugin aquaero
+#LoadPlugin ascent
+##LoadPlugin barometer
+#LoadPlugin battery
+#LoadPlugin bind
+#LoadPlugin ceph
+#LoadPlugin conntrack
+#LoadPlugin contextswitch
+#LoadPlugin cgroups
+LoadPlugin cpu
+#LoadPlugin cpufreq
+#LoadPlugin csv
+#LoadPlugin curl
+#LoadPlugin curl_json
+#LoadPlugin curl_xml
+#LoadPlugin dbi
+#LoadPlugin df
+#LoadPlugin disk
+#LoadPlugin dns
+#LoadPlugin drbd
+#LoadPlugin email
+#LoadPlugin entropy
+#LoadPlugin ethstat
+#LoadPlugin exec
+#LoadPlugin fhcount
+#LoadPlugin filecount
+#LoadPlugin fscache
+#LoadPlugin gmond
+#LoadPlugin hddtemp
+LoadPlugin interface
+#LoadPlugin ipc
+#LoadPlugin iptables
+#LoadPlugin ipmi
+#LoadPlugin ipvs
+#LoadPlugin irq
+##LoadPlugin java
+LoadPlugin load
+##LoadPlugin lpar
+#LoadPlugin lvm
+#LoadPlugin madwifi
+#LoadPlugin mbmon
+#LoadPlugin md
+#LoadPlugin memcachec
+#LoadPlugin memcached
+LoadPlugin memory
+#LoadPlugin modbus
+#LoadPlugin multimeter
+#LoadPlugin mysql
+##LoadPlugin netapp
+#LoadPlugin netlink
+LoadPlugin network
+#LoadPlugin nfs
+#LoadPlugin nginx
+##LoadPlugin notify_desktop
+#LoadPlugin notify_email
+#LoadPlugin ntpd
+#LoadPlugin numa
+#LoadPlugin nut
+#LoadPlugin olsrd
+#LoadPlugin onewire
+##LoadPlugin openldap
+#LoadPlugin openvpn
+##LoadPlugin oracle
+#LoadPlugin perl
+#LoadPlugin pinba
+#LoadPlugin ping
+#LoadPlugin postgresql
+#LoadPlugin powerdns
+#LoadPlugin processes
+#LoadPlugin protocols
+#LoadPlugin python
+#LoadPlugin redis
+##LoadPlugin routeros
+#LoadPlugin rrdcached
+LoadPlugin rrdtool
+#LoadPlugin sensors
+#LoadPlugin serial
+##LoadPlugin sigrok
+##LoadPlugin smart
+#LoadPlugin snmp
+#LoadPlugin statsd
+#LoadPlugin swap
+#LoadPlugin table
+#LoadPlugin tail
+#LoadPlugin tail_csv
+##LoadPlugin tape
+#LoadPlugin tcpconns
+#LoadPlugin teamspeak2
+#LoadPlugin ted
+#LoadPlugin thermal
+#LoadPlugin tokyotyrant
+#LoadPlugin turbostat
+#LoadPlugin unixsock
+#LoadPlugin uptime
+#LoadPlugin users
+#LoadPlugin uuid
+##LoadPlugin varnish
+##LoadPlugin mic
+#LoadPlugin virt
+#LoadPlugin vmem
+#LoadPlugin vserver
+#LoadPlugin wireless
+#LoadPlugin write_graphite
+LoadPlugin write_http
+##LoadPlugin write_kafka
+#LoadPlugin write_log
+##LoadPlugin write_mongodb
+#LoadPlugin write_redis
+#LoadPlugin write_riemann
+#LoadPlugin write_sensu
+#LoadPlugin write_tsdb
+##LoadPlugin xmms
+#LoadPlugin zfs_arc
+#LoadPlugin zookeeper
+
+##############################################################################
+# Plugin configuration                                                       #
+#----------------------------------------------------------------------------#
+# In this section configuration stubs for each plugin are provided. A desc-  #
+# ription of those options is available in the collectd.conf(5) manual page. #
+##############################################################################
+
+#<Plugin aggregation>
+#  <Aggregation>
+#    #Host "unspecified"
+#    Plugin "cpu"
+#    #PluginInstance "unspecified"
+#    Type "cpu"
+#    #TypeInstance "unspecified"
+#
+#    GroupBy "Host"
+#    GroupBy "TypeInstance"
+#
+#    CalculateNum false
+#    CalculateSum false
+#    CalculateAverage true
+#    CalculateMinimum false
+#    CalculateMaximum false
+#    CalculateStddev false
+#  </Aggregation>
+#</Plugin>
+
+#<Plugin amqp>
+#  <Publish "name">
+#    Host "localhost"
+#    Port "5672"
+#    VHost "/"
+#    User "guest"
+#    Password "guest"
+#    Exchange "amq.fanout"
+#    RoutingKey "collectd"
+#    Persistent false
+#    StoreRates false
+#    ConnectionRetryDelay 0
+#  </Publish>
+#</Plugin>
+
+#<Plugin apache>
+#  <Instance "local">
+#    URL "http://localhost/status?auto"
+#    User "www-user"
+#    Password "secret"
+#    CACert "/etc/ssl/ca.crt"
+#  </Instance>
+#</Plugin>
+
+#<Plugin apcups>
+#       Host "localhost"
+#       Port "3551"
+#       ReportSeconds true
+#</Plugin>
+
+#<Plugin aquaero>
+#       Device ""
+#</Plugin>
+
+#<Plugin ascent>
+#       URL "http://localhost/ascent/status/"
+#       User "www-user"
+#       Password "secret"
+#       CACert "/etc/ssl/ca.crt"
+#</Plugin>
+
+#<Plugin "barometer">
+#   Device            "/dev/i2c-0";
+#   Oversampling      512
+#   PressureOffset    0.0
+#   TemperatureOffset 0.0
+#   Normalization     2
+#   Altitude          238.0
+#   TemperatureSensor "myserver/onewire-F10FCA000800/temperature"
+#</Plugin>
+
+#<Plugin "battery">
+#  ValuesPercentage false
+#  ReportDegraded
+#</Plugin>
+
+#<Plugin "bind">
+#  URL "http://localhost:8053/"
+#  ParseTime       false
+#  OpCodes         true
+#  QTypes          true
+#
+#  ServerStats     true
+#  ZoneMaintStats  true
+#  ResolverStats   false
+#  MemoryStats     true
+#
+#  <View "_default">
+#    QTypes        true
+#    ResolverStats true
+#    CacheRRSets   true
+#
+#    Zone "127.in-addr.arpa/IN"
+#  </View>
+#</Plugin>
+
+#<Plugin ceph>
+#  LongRunAvgLatency false
+#  ConvertSpecialMetricTypes true
+#  <Daemon "osd.0">
+#    SocketPath "/var/run/ceph/ceph-osd.0.asok"
+#  </Daemon>
+#  <Daemon "osd.1">
+#    SocketPath "/var/run/ceph/ceph-osd.1.asok"
+#  </Daemon>
+#  <Daemon "mon.a">
+#    SocketPath "/var/run/ceph/ceph-mon.ceph1.asok"
+#  </Daemon>
+#  <Daemon "mds.a">
+#    SocketPath "/var/run/ceph/ceph-mds.ceph1.asok"
+#  </Daemon>
+#</Plugin>
+
+#<Plugin cgroups>
+#  CGroup "libvirt"
+#  IgnoreSelected false
+#</Plugin>
+
+#<Plugin cpu>
+#  ReportByCpu true
+#  ReportByState true
+#  ValuesPercentage false
+#</Plugin>
+#
+#<Plugin csv>
+#       DataDir "${prefix}/var/lib/collectd/csv"
+#       StoreRates false
+#</Plugin>
+
+#<Plugin curl>
+#  <Page "stock_quotes">
+#    URL "http://finance.google.com/finance?q=NYSE%3AAMD"
+#    User "foo"
+#    Password "bar"
+#    Digest false
+#    VerifyPeer true
+#    VerifyHost true
+#    CACert "/path/to/ca.crt"
+#    Header "X-Custom-Header: foobar"
+#    Post "foo=bar"
+#
+#    MeasureResponseTime false
+#    MeasureResponseCode false
+#    <Match>
+#      Regex "<span +class=\"pr\"[^>]*> *([0-9]*\\.[0-9]+) *</span>"
+#      DSType "GaugeAverage"
+#      Type "stock_value"
+#      Instance "AMD"
+#    </Match>
+#  </Page>
+#</Plugin>
+
+#<Plugin curl_json>
+#  <URL "http://localhost:80/test.json">
+#    Instance "test_http_json"
+#    <Key "testArray/0">
+#      Type "gauge"
+#      # Expect: 1
+#    </Key>
+#    <Key "testArray/1">
+#      Type "gauge"
+#      # Expect: 2
+#    </Key>
+#    <Key "testArrayInbetween/0/blarg">
+#      Type "gauge"
+#      # Expect: 3
+#    </Key>
+#    <Key "testArrayInbetween/1/blub">
+#      Type "gauge"
+#      # Expect: 4
+#    </Key>
+#    <Key "testDirectHit">
+#      Type "gauge"
+#      # Expect: 5
+#    </Key>
+#    <Key "testSubLevelHit/oneMoreLevel">
+#      Type "gauge"
+#      # Expect: 6
+#    </Key>
+#  </URL>
+# put this as test.json on your webserver, the above config demonstraces
+# how to match them.
+# {
+#  "testArray":[1,2],
+#  "testArrayInbetween":[{"blarg":3},{"blub":4}],
+#  "testDirectHit":5,
+#  "testSubLevelHit":{"oneMoreLevel":6}
+# }
+## See: http://wiki.apache.org/couchdb/Runtime_Statistics
+#  <URL "http://localhost:5984/_stats">
+#    Instance "httpd"
+#    <Key "httpd/requests/count">
+#      Type "http_requests"
+#    </Key>
+#
+#    <Key "httpd_request_methods/*/count">
+#      Type "http_request_methods"
+#    </Key>
+#
+#    <Key "httpd_status_codes/*/count">
+#      Type "http_response_codes"
+#    </Key>
+#  </URL>
+## Database status metrics:
+#  <URL "http://localhost:5984/_all_dbs">
+#    Instance "dbs"
+#    <Key "*/doc_count">
+#      Type "gauge"
+#    </Key>
+#    <Key "*/doc_del_count">
+#      Type "counter"
+#    </Key>
+#    <Key "*/disk_size">
+#      Type "bytes"
+#    </Key>
+#  </URL>
+#</Plugin>
+
+#<Plugin curl_xml>
+#  <URL "http://localhost/stats.xml">
+#    Host "my_host"
+#    Instance "some_instance"
+#    User "collectd"
+#    Password "thaiNg0I"
+#    Digest false
+#    VerifyPeer true
+#    VerifyHost true
+#    CACert "/path/to/ca.crt"
+#    Header "X-Custom-Header: foobar"
+#    Post "foo=bar"
+#
+#    <XPath "table[@id=\"magic_level\"]/tr">
+#      Type "magic_level"
+#      #InstancePrefix "prefix-"
+#      InstanceFrom "td[1]"
+#      ValuesFrom "td[2]/span[@class=\"level\"]"
+#    </XPath>
+#  </URL>
+#</Plugin>
+
+#<Plugin dbi>
+#       <Query "num_of_customers">
+#               Statement "SELECT 'customers' AS c_key, COUNT(*) AS c_value FROM customers_tbl"
+#               <Result>
+#                       Type "gauge"
+#                       InstancesFrom "c_key"
+#                       ValuesFrom "c_value"
+#               </Result>
+#       </Query>
+#       <Database "customers_db">
+#               Driver "mysql"
+#               DriverOption "host" "localhost"
+#               DriverOption "username" "collectd"
+#               DriverOption "password" "AeXohy0O"
+#               DriverOption "dbname" "custdb0"
+#               #SelectDB "custdb0"
+#               Query "num_of_customers"
+#               #Query "..."
+#               #Host "..."
+#       </Database>
+#</Plugin>
+
+#<Plugin df>
+#       Device "/dev/hda1"
+#       Device "192.168.0.2:/mnt/nfs"
+#       MountPoint "/home"
+#       FSType "ext3"
+#       IgnoreSelected false
+#       ReportByDevice false
+#       ReportReserved false
+#       ReportInodes false
+#       ValuesAbsolute true
+#       ValuesPercentage false
+#</Plugin>
+
+#<Plugin disk>
+#       Disk "/^[hs]d[a-f][0-9]?$/"
+#       IgnoreSelected false
+#       UseBSDName false
+#       UdevNameAttr "DEVNAME"
+#</Plugin>
+
+#<Plugin dns>
+#       Interface "eth0"
+#       IgnoreSource "192.168.0.1"
+#       SelectNumericQueryTypes true
+#</Plugin>
+
+#<Plugin email>
+#       SocketFile "${prefix}/var/run/collectd-email"
+#       SocketGroup "collectd"
+#       SocketPerms "0770"
+#       MaxConns 5
+#</Plugin>
+
+#<Plugin ethstat>
+#       Interface "eth0"
+#       Map "rx_csum_offload_errors" "if_rx_errors" "checksum_offload"
+#       Map "multicast" "if_multicast"
+#       MappedOnly false
+#</Plugin>
+
+#<Plugin exec>
+#       Exec "user:group" "/path/to/exec"
+#       NotificationExec "user:group" "/path/to/exec"
+#</Plugin>
+
+#<Plugin fhcount>
+#       ValuesAbsolute true
+#       ValuesPercentage false
+#</Plugin>
+
+#<Plugin filecount>
+#       <Directory "/path/to/dir">
+#               Instance "foodir"
+#               Name "*.conf"
+#               MTime "-5m"
+#               Size "+10k"
+#               Recursive true
+#               IncludeHidden false
+#       </Directory>
+#</Plugin>
+
+#<Plugin gmond>
+#  MCReceiveFrom "239.2.11.71" "8649"
+#  <Metric "swap_total">
+#    Type "swap"
+#    TypeInstance "total"
+#    DataSource "value"
+#  </Metric>
+#  <Metric "swap_free">
+#    Type "swap"
+#    TypeInstance "free"
+#    DataSource "value"
+#  </Metric>
+#</Plugin>
+
+#<Plugin hddtemp>
+#  Host "127.0.0.1"
+#  Port "7634"
+#</Plugin>
+
+#<Plugin interface>
+#       Interface "eth0"
+#       IgnoreSelected false
+#</Plugin>
+
+#<Plugin ipmi>
+#       Sensor "some_sensor"
+#       Sensor "another_one"
+#       IgnoreSelected false
+#       NotifySensorAdd false
+#       NotifySensorRemove true
+#       NotifySensorNotPresent false
+#</Plugin>
+
+#<Plugin iptables>
+#       Chain table chain
+#</Plugin>
+
+#<Plugin irq>
+#       Irq 7
+#       Irq 8
+#       Irq 9
+#       IgnoreSelected true
+#</Plugin>
+
+#<Plugin java>
+#       JVMArg "-verbose:jni"
+#       JVMArg "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar"
+#
+#       LoadPlugin "org.collectd.java.Foobar"
+#       <Plugin "org.collectd.java.Foobar">
+#         # To be parsed by the plugin
+#       </Plugin>
+#</Plugin>
+
+#<Plugin load>
+#        ReportRelative true
+#</Plugin>
+
+#<Plugin lpar>
+#       CpuPoolStats   false
+#       ReportBySerial false
+#</Plugin>
+
+#<Plugin madwifi>
+#       Interface "wlan0"
+#       IgnoreSelected false
+#       Source "SysFS"
+#       WatchSet "None"
+#       WatchAdd "node_octets"
+#       WatchAdd "node_rssi"
+#       WatchAdd "is_rx_acl"
+#       WatchAdd "is_scan_active"
+#</Plugin>
+
+#<Plugin mbmon>
+#       Host "127.0.0.1"
+#       Port "411"
+#</Plugin>
+
+#<Plugin md>
+#       Device "/dev/md0"
+#       IgnoreSelected false
+#</Plugin>
+
+#<Plugin memcachec>
+#       <Page "plugin_instance">
+#               Server "localhost"
+#               Key "page_key"
+#               <Match>
+#                       Regex "(\\d+) bytes sent"
+#                       ExcludeRegex "<lines to be excluded>"
+#                       DSType CounterAdd
+#                       Type "ipt_octets"
+#                       Instance "type_instance"
+#               </Match>
+#       </Page>
+#</Plugin>
+
+#<Plugin memcached>
+#       <Instance "local">
+#               Host "127.0.0.1"
+#               Port "11211"
+#       </Instance>
+#</Plugin>
+
+#<Plugin memory>
+#       ValuesAbsolute true
+#       ValuesPercentage false
+#</Plugin>
+
+#<Plugin modbus>
+#       <Data "data_name">
+#               RegisterBase 1234
+#               RegisterCmd ReadHolding
+#               RegisterType float
+#               Type gauge
+#               Instance "..."
+#       </Data>
+#
+#       <Host "name">
+#               Address "addr"
+#               Port "1234"
+#               Interval 60
+#
+#               <Slave 1>
+#                       Instance "foobar" # optional
+#                       Collect "data_name"
+#               </Slave>
+#       </Host>
+#</Plugin>
+
+#<Plugin mysql>
+#       <Database db_name>
+#               Host "database.serv.er"
+#               User "db_user"
+#               Password "secret"
+#               Database "db_name"
+#               MasterStats true
+#               ConnectTimeout 10
+#               InnodbStats true
+#       </Database>
+#
+#       <Database db_name2>
+#               Alias "squeeze"
+#               Host "localhost"
+#               Socket "/var/run/mysql/mysqld.sock"
+#               SlaveStats true
+#               SlaveNotifications true
+#       </Database>
+#</Plugin>
+
+#<Plugin netapp>
+#       <Host "netapp1.example.com">
+#               Protocol      "https"
+#               Address       "10.0.0.1"
+#               Port          443
+#               User          "username"
+#               Password      "aef4Aebe"
+#               Interval      30
+#
+#               <WAFL>
+#                       Interval 30
+#                       GetNameCache   true
+#                       GetDirCache    true
+#                       GetBufferCache true
+#                       GetInodeCache  true
+#               </WAFL>
+#
+#               <Disks>
+#                       Interval 30
+#                       GetBusy true
+#               </Disks>
+#
+#               <VolumePerf>
+#                       Interval 30
+#                       GetIO      "volume0"
+#                       IgnoreSelectedIO      false
+#                       GetOps     "volume0"
+#                       IgnoreSelectedOps     false
+#                       GetLatency "volume0"
+#                       IgnoreSelectedLatency false
+#               </VolumePerf>
+#
+#               <VolumeUsage>
+#                       Interval 30
+#                       GetCapacity "vol0"
+#                       GetCapacity "vol1"
+#                       IgnoreSelectedCapacity false
+#                       GetSnapshot "vol1"
+#                       GetSnapshot "vol3"
+#                       IgnoreSelectedSnapshot false
+#               </VolumeUsage>
+#
+#               <System>
+#                       Interval 30
+#                       GetCPULoad     true
+#                       GetInterfaces  true
+#                       GetDiskOps     true
+#                       GetDiskIO      true
+#               </System>
+#       </Host>
+#</Plugin>
+
+#<Plugin netlink>
+#       Interface "All"
+#       VerboseInterface "All"
+#       QDisc "eth0" "pfifo_fast-1:0"
+#       Class "ppp0" "htb-1:10"
+#       Filter "ppp0" "u32-1:0"
+#       IgnoreSelected false
+#</Plugin>
+
+<Plugin network>
+  Server "192.168.104.2" "25826"
+</Plugin>
+
+#<Plugin network>
+#       # client setup:
+#       Server "ff18::efc0:4a42" "25826"
+#       <Server "239.192.74.66" "25826">
+#               SecurityLevel Encrypt
+#               Username "user"
+#               Password "secret"
+#               Interface "eth0"
+#               ResolveInterval 14400
+#       </Server>
+#       TimeToLive 128
+#
+#       # server setup:
+#       Listen "ff18::efc0:4a42" "25826"
+#       <Listen "239.192.74.66" "25826">
+#               SecurityLevel Sign
+#               AuthFile "/etc/collectd/passwd"
+#               Interface "eth0"
+#       </Listen>
+#       MaxPacketSize 1452
+#
+#       # proxy setup (client and server as above):
+#       Forward true
+#
+#       # statistics about the network plugin itself
+#       ReportStats false
+#
+#       # "garbage collection"
+#       CacheFlush 1800
+#</Plugin>
+
+#<Plugin nginx>
+#       URL "http://localhost/status?auto"
+#       User "www-user"
+#       Password "secret"
+#       CACert "/etc/ssl/ca.crt"
+#</Plugin>
+
+#<Plugin notify_desktop>
+#       OkayTimeout 1000
+#       WarningTimeout 5000
+#       FailureTimeout 0
+#</Plugin>
+
+#<Plugin notify_email>
+#       SMTPServer "localhost"
+#       SMTPPort 25
+#       SMTPUser "my-username"
+#       SMTPPassword "my-password"
+#       From "collectd@main0server.com"
+#       # <WARNING/FAILURE/OK> on <hostname>. beware! do not use not more than two %s in this string!!!
+#       Subject "Aaaaaa!! %s on %s!!!!!"
+#       Recipient "email1@domain1.net"
+#       Recipient "email2@domain2.com"
+#</Plugin>
+
+#<Plugin ntpd>
+#       Host "localhost"
+#       Port 123
+#       ReverseLookups false
+#       IncludeUnitID true
+#</Plugin>
+
+#<Plugin nut>
+#       UPS "upsname@hostname:port"
+#</Plugin>
+
+#<Plugin olsrd>
+#       Host "127.0.0.1"
+#       Port "2006"
+#       CollectLinks "Summary"
+#       CollectRoutes "Summary"
+#       CollectTopology "Summary"
+#</Plugin>
+
+#<Plugin onewire>
+#       Device "-s localhost:4304"
+#       Sensor "F10FCA000800"
+#       IgnoreSelected false
+#</Plugin>
+
+#<Plugin openldap>
+#  <Instance "localhost">
+#    URL "ldap://localhost:389"
+#    StartTLS false
+#    VerifyHost true
+#    CACert "/path/to/ca.crt"
+#    Timeout -1
+#    Version 3
+#  </Instance>
+#</Plugin>
+
+#<Plugin openvpn>
+#       StatusFile "/etc/openvpn/openvpn-status.log"
+#       ImprovedNamingSchema false
+#       CollectCompression true
+#       CollectIndividualUsers true
+#       CollectUserCount false
+#</Plugin>
+
+#<Plugin oracle>
+#  <Query "out_of_stock">
+#    Statement "SELECT category, COUNT(*) AS value FROM products WHERE in_stock = 0 GROUP BY category"
+#    <Result>
+#      Type "gauge"
+#      InstancesFrom "category"
+#      ValuesFrom "value"
+#    </Result>
+#  </Query>
+#  <Database "product_information">
+#    ConnectID "db01"
+#    Username "oracle"
+#    Password "secret"
+#    Query "out_of_stock"
+#  </Database>
+#</Plugin>
+
+#<Plugin perl>
+#       IncludeDir "/my/include/path"
+#       BaseName "Collectd::Plugins"
+#       EnableDebugger ""
+#       LoadPlugin Monitorus
+#       LoadPlugin OpenVZ
+#
+#       <Plugin foo>
+#               Foo "Bar"
+#               Qux "Baz"
+#       </Plugin>
+#</Plugin>
+
+#<Plugin pinba>
+#       Address "::0"
+#       Port "30002"
+#       <View "name">
+#               Host "host name"
+#               Server "server name"
+#               Script "script name"
+#       </View>
+#</Plugin>
+
+#<Plugin ping>
+#       Host "host.foo.bar"
+#       Interval 1.0
+#       Timeout 0.9
+#       TTL 255
+#       SourceAddress "1.2.3.4"
+#       Device "eth0"
+#       MaxMissed -1
+#</Plugin>
+
+#<Plugin postgresql>
+#       <Query magic>
+#               Statement "SELECT magic FROM wizard WHERE host = $1;"
+#               Param hostname
+#               <Result>
+#                       Type gauge
+#                       InstancePrefix "magic"
+#                       ValuesFrom magic
+#               </Result>
+#       </Query>
+#       <Query rt36_tickets>
+#               Statement "SELECT COUNT(type) AS count, type \
+#                                 FROM (SELECT CASE \
+#                                              WHEN resolved = 'epoch' THEN 'open' \
+#                                              ELSE 'resolved' END AS type \
+#                                              FROM tickets) type \
+#                                 GROUP BY type;"
+#               <Result>
+#                       Type counter
+#                       InstancePrefix "rt36_tickets"
+#                       InstancesFrom "type"
+#                       ValuesFrom "count"
+#               </Result>
+#       </Query>
+#       <Writer sqlstore>
+#               # See contrib/postgresql/collectd_insert.sql for details
+#               Statement "SELECT collectd_insert($1, $2, $3, $4, $5, $6, $7, $8, $9);"
+#               StoreRates true
+#       </Writer>
+#       <Database foo>
+#               Host "hostname"
+#               Port "5432"
+#               User "username"
+#               Password "secret"
+#               SSLMode "prefer"
+#               KRBSrvName "kerberos_service_name"
+#               Query magic
+#       </Database>
+#       <Database bar>
+#               Interval 60
+#               Service "service_name"
+#               Query backend # predefined
+#               Query rt36_tickets
+#       </Database>
+#       <Database qux>
+#               Service "collectd_store"
+#               Writer sqlstore
+#               # see collectd.conf(5) for details
+#               CommitInterval 30
+#       </Database>
+#</Plugin>
+
+#<Plugin powerdns>
+#  <Server "server_name">
+#    Collect "latency"
+#    Collect "udp-answers" "udp-queries"
+#    Socket "/var/run/pdns.controlsocket"
+#  </Server>
+#  <Recursor "recursor_name">
+#    Collect "questions"
+#    Collect "cache-hits" "cache-misses"
+#    Socket "/var/run/pdns_recursor.controlsocket"
+#  </Recursor>
+#  LocalSocket "/opt/collectd/var/run/collectd-powerdns"
+#</Plugin>
+
+#<Plugin processes>
+#       Process "name"
+#</Plugin>
+
+#<Plugin protocols>
+#       Value "/^Tcp:/"
+#       IgnoreSelected false
+#</Plugin>
+
+#<Plugin python>
+#       ModulePath "/path/to/your/python/modules"
+#       LogTraces true
+#       Interactive true
+#       Import "spam"
+#
+#       <Module spam>
+#               spam "wonderful" "lovely"
+#       </Module>
+#</Plugin>
+
+#<Plugin redis>
+#   <Node example>
+#      Host "redis.example.com"
+#      Port "6379"
+#      Timeout 2000
+#   </Node>
+#</Plugin>
+
+#<Plugin routeros>
+#       <Router>
+#               Host "router.example.com"
+#               Port "8728"
+#               User "admin"
+#               Password "dozaiTh4"
+#               CollectInterface true
+#               CollectRegistrationTable true
+#               CollectCPULoad true
+#               CollectMemory true
+#               CollectDF true
+#               CollectDisk true
+#       </Router>
+#</Plugin>
+
+#<Plugin rrdcached>
+#       DaemonAddress "unix:/tmp/rrdcached.sock"
+#       DataDir "${prefix}/var/lib/collectd/rrd"
+#       CreateFiles true
+#       CreateFilesAsync false
+#       CollectStatistics true
+#</Plugin>
+
+#<Plugin rrdtool>
+#       DataDir "${prefix}/var/lib/collectd/rrd"
+#       CreateFilesAsync false
+#       CacheTimeout 120
+#       CacheFlush   900
+#       WritesPerSecond 50
+#</Plugin>
+
+#<Plugin sensors>
+#       SensorConfigFile "/etc/sensors.conf"
+#       Sensor "it8712-isa-0290/temperature-temp1"
+#       Sensor "it8712-isa-0290/fanspeed-fan3"
+#       Sensor "it8712-isa-0290/voltage-in8"
+#       IgnoreSelected false
+#</Plugin>
+
+#<Plugin sigrok>
+#  LogLevel 3
+#  <Device "AC Voltage">
+#    Driver "fluke-dmm"
+#    MinimumInterval 10
+#    Conn "/dev/ttyUSB2"
+#  </Device>
+#  <Device "Sound Level">
+#    Driver "cem-dt-885x"
+#    Conn "/dev/ttyUSB1"
+#  </Device>
+#</Plugin>
+
+#<Plugin smart>
+#  Disk "/^[hs]d[a-f][0-9]?$/"
+#  IgnoreSelected false
+#</Plugin>
+
+#<Plugin snmp>
+#   <Data "powerplus_voltge_input">
+#       Type "voltage"
+#       Table false
+#       Instance "input_line1"
+#       Values "SNMPv2-SMI::enterprises.6050.5.4.1.1.2.1"
+#   </Data>
+#   <Data "hr_users">
+#       Type "users"
+#       Table false
+#       Instance ""
+#       Values "HOST-RESOURCES-MIB::hrSystemNumUsers.0"
+#   </Data>
+#   <Data "std_traffic">
+#       Type "if_octets"
+#       Table true
+#       Instance "IF-MIB::ifDescr"
+#       Values "IF-MIB::ifInOctets" "IF-MIB::ifOutOctets"
+#   </Data>
+#
+#   <Host "some.switch.mydomain.org">
+#       Address "192.168.0.2"
+#       Version 1
+#       Community "community_string"
+#       Collect "std_traffic"
+#       Interval 120
+#   </Host>
+#   <Host "some.server.mydomain.org">
+#       Address "192.168.0.42"
+#       Version 2
+#       Community "another_string"
+#       Collect "std_traffic" "hr_users"
+#   </Host>
+#   <Host "some.ups.mydomain.org">
+#       Address "192.168.0.3"
+#       Version 1
+#       Community "more_communities"
+#       Collect "powerplus_voltge_input"
+#       Interval 300
+#   </Host>
+#</Plugin>
+
+#<Plugin statsd>
+#  Host "::"
+#  Port "8125"
+#  DeleteCounters false
+#  DeleteTimers   false
+#  DeleteGauges   false
+#  DeleteSets     false
+#  TimerPercentile 90.0
+#  TimerPercentile 95.0
+#  TimerPercentile 99.0
+#  TimerLower     false
+#  TimerUpper     false
+#  TimerSum       false
+#  TimerCount     false
+#</Plugin>
+
+#<Plugin swap>
+#       ReportByDevice false
+#       ReportBytes true
+#       ValuesAbsolute true
+#       ValuesPercentage false
+#</Plugin>
+
+#<Plugin table>
+#       <Table "/proc/slabinfo">
+#               Instance "slabinfo"
+#               Separator " "
+#               <Result>
+#                       Type gauge
+#                       InstancePrefix "active_objs"
+#                       InstancesFrom 0
+#                       ValuesFrom 1
+#               </Result>
+#               <Result>
+#                       Type gauge
+#                       InstancePrefix "objperslab"
+#                       InstancesFrom 0
+#                       ValuesFrom 4
+#               </Result>
+#       </Table>
+#</Plugin>
+
+#<Plugin tail>
+#  <File "/var/log/exim4/mainlog">
+#    Instance "exim"
+#    Interval 60
+#    <Match>
+#      Regex "S=([1-9][0-9]*)"
+#      DSType "CounterAdd"
+#      Type "ipt_bytes"
+#      Instance "total"
+#    </Match>
+#    <Match>
+#      Regex "\\<R=local_user\\>"
+#      ExcludeRegex "\\<R=local_user\\>.*mail_spool defer"
+#      DSType "CounterInc"
+#      Type "counter"
+#      Instance "local_user"
+#    </Match>
+#  </File>
+#</Plugin>
+
+#<Plugin tail_csv>
+#   <Metric "dropped">
+#       Type "percent"
+#       Instance "dropped"
+#       ValueFrom 1
+#   </Metric>
+#   <Metric "mbps">
+#       Type "bytes"
+#       Instance "wire-realtime"
+#       ValueFrom 2
+#   </Metric>
+#   <Metric "alerts">
+#       Type "alerts_per_second"
+#       ValueFrom 3
+#   </Metric>
+#   <Metric "kpps">
+#       Type "kpackets_wire_per_sec.realtime"
+#       ValueFrom 4
+#   </Metric>
+#   <File "/var/log/snort/snort.stats">
+#       Instance "snort-eth0"
+#       Interval 600
+#       Collect "dropped" "mbps" "alerts" "kpps"
+#       TimeFrom 0
+#   </File>
+#</Plugin>
+
+#<Plugin tcpconns>
+#       ListeningPorts false
+#       AllPortsSummary false
+#       LocalPort "25"
+#       RemotePort "25"
+#</Plugin>
+
+#<Plugin teamspeak2>
+#       Host "127.0.0.1"
+#       Port "51234"
+#       Server "8767"
+#</Plugin>
+
+#<Plugin ted>
+#       Device "/dev/ttyUSB0"
+#       Retries 0
+#</Plugin>
+
+#<Plugin thermal>
+#       ForceUseProcfs false
+#       Device "THRM"
+#       IgnoreSelected false
+#</Plugin>
+
+#<Plugin tokyotyrant>
+#       Host "localhost"
+#       Port "1978"
+#</Plugin>
+
+#<Plugin turbostat>
+##      None of the following option should be set manually
+##      This plugin automatically detect most optimal options
+##      Only set values here if:
+##      - The module ask you to
+##      - You want to disable the collection of some data
+##      - Your (intel) CPU is not supported (yet) by the module
+##      - The module generate a lot of errors 'MSR offset 0x... read failed'
+##      In the last two cases, please open a bug request
+#
+#       TCCActivationTemp "100"
+#       CoreCstates "392"
+#       PackageCstates "396"
+#       SystemManagementInterrupt true
+#       DigitalTemperatureSensor true
+#       PackageThermalManagement true
+#       RunningAveragePowerLimit "7"
+#</Plugin>
+
+#<Plugin unixsock>
+#       SocketFile "/usr/var/run/collectd-unixsock"
+#       SocketGroup "collectd"
+#       SocketPerms "0660"
+#       DeleteSocket false
+#</Plugin>
+
+#<Plugin uuid>
+#       UUIDFile "/etc/uuid"
+#</Plugin>
+
+#<Plugin mic>
+#   ShowCPU true
+#   ShowCPUCores true
+#   ShowMemory true
+#   ShowTemperatures true
+##  Temperature Sensors can be ignored/shown by repeated #Temperature lines, and
+##  then inverted with a IgnoreSelectedTemperature.
+##  Known Temperature sensors: die, devmem, fin, fout, vccp, vddg, vddq
+#   Temperature vddg
+#   IgnoreSelectedTemperature true
+#   ShowPower true
+##  Power Sensors can be ignored/shown by repeated #Power lines, and
+##  then inverted with a IgnoreSelectedTemperature.
+##  Known Temperature sensors: total0, total1, inst, imax, pci3, c2x3, c2x4, vccp, vddg, vddq
+#   Power total1
+#   IgnoreSelectedPower true
+#</Plugin>
+
+#<Plugin varnish>
+#   This tag support an argument if you want to
+#   monitor the local instance just use </Instance>
+#   If you prefer defining another instance you can do
+#   so by using <Instance "myinstance">
+#   <Instance>
+#      CollectBackend true
+#      CollectBan false           # Varnish 3 and above
+#      CollectCache true
+#      CollectConnections true
+#      CollectDirectorDNS false   # Varnish 3 only
+#      CollectESI false
+#      CollectFetch false
+#      CollectHCB false
+#      CollectObjects false
+#      CollectPurge false         # Varnish 2 only
+#      CollectSession false
+#      CollectSHM true
+#      CollectSMA false           # Varnish 2 only
+#      CollectSMS false
+#      CollectSM false            # Varnish 2 only
+#      CollectStruct false
+#      CollectTotals false
+#      CollectUptime false        # Varnish 3 and above
+#      CollectVCL false
+#      CollectVSM false           # Varnish 4 only
+#      CollectWorkers false
+#   </Instance>
+#</Plugin>
+
+#<Plugin virt>
+#       Connection "xen:///"
+#       RefreshInterval 60
+#       Domain "name"
+#       BlockDevice "name:device"
+#       InterfaceDevice "name:device"
+#       IgnoreSelected false
+#       HostnameFormat name
+#       InterfaceFormat name
+#       PluginInstanceFormat name
+#</Plugin>
+
+#<Plugin vmem>
+#       Verbose false
+#</Plugin>
+
+#<Plugin write_graphite>
+#  <Node "example">
+#    Host "localhost"
+#    Port "2003"
+#    Protocol "tcp"
+#    LogSendErrors true
+#    Prefix "collectd"
+#    Postfix "collectd"
+#    StoreRates true
+#    AlwaysAppendDS false
+#    EscapeCharacter "_"
+#  </Node>
+#</Plugin>
+
+<Plugin write_http>
+  <Node "collectd_exporter">
+    URL "http://192.168.104.2:9103/collectd-post"
+    Format "JSON"
+    StoreRates false
+  </Node>
+</Plugin>
+
+#<Plugin write_http>
+#       <Node "example">
+#               URL "http://example.com/collectd-post"
+#               User "collectd"
+#               Password "weCh3ik0"
+#               VerifyPeer true
+#               VerifyHost true
+#               CACert "/etc/ssl/ca.crt"
+#               CAPath "/etc/ssl/certs/"
+#               ClientKey "/etc/ssl/client.pem"
+#               ClientCert "/etc/ssl/client.crt"
+#               ClientKeyPass "secret"
+#               SSLVersion "TLSv1"
+#               Format "Command"
+#               StoreRates false
+#               BufferSize 4096
+#               LowSpeedLimit 0
+#               Timeout 0
+#       </Node>
+#</Plugin>
+
+#<Plugin write_kafka>
+#  Property "metadata.broker.list" "localhost:9092"
+#  <Topic "collectd">
+#    Format JSON
+#  </Topic>
+#</Plugin>
+
+#<Plugin write_mongodb>
+#       <Node "example">
+#               Host "localhost"
+#               Port "27017"
+#               Timeout 1000
+#               StoreRates false
+#               Database "auth_db"
+#               User "auth_user"
+#               Password "auth_passwd"
+#       </Node>
+#</Plugin>
+
+#<Plugin write_redis>
+#       <Node "example">
+#               Host "localhost"
+#               Port "6379"
+#               Timeout 1000
+#       </Node>
+#</Plugin>
+
+#<Plugin write_riemann>
+#       <Node "example">
+#               Host "localhost"
+#               Port 5555
+#               Protocol TCP
+#               Batch true
+#               BatchMaxSize 8192
+#               StoreRates true
+#               AlwaysAppendDS false
+#               TTLFactor 2.0
+#               Notifications true
+#               CheckThresholds false
+#               EventServicePrefix ""
+#       </Node>
+#       Tag "foobar"
+#       Attribute "foo" "bar"
+#</Plugin>
+
+#<Plugin write_sensu>
+#       <Node "example">
+#               Host "localhost"
+#               Port 3030
+#               StoreRates true
+#               AlwaysAppendDS false
+#               Notifications true
+#               Metrics true
+#               EventServicePrefix ""
+#               MetricHandler "influx"
+#               MetricHandler "default"
+#               NotificationHandler "flapjack"
+#               NotificationHandler "howling_monkey"
+#       </Node>
+#       Tag "foobar"
+#       Attribute "foo" "bar"
+#</Plugin>
+
+#<Plugin write_tsdb>
+#       <Node>
+#               Host "localhost"
+#               Port "4242"
+#               HostTags "status=production"
+#               StoreRates false
+#               AlwaysAppendDS false
+#       </Node>
+#</Plugin>
+
+#<Plugin zookeeper>
+#    Host "localhost"
+#    Port "2181"
+#</Plugin>
+
+##############################################################################
+# Filter configuration                                                       #
+#----------------------------------------------------------------------------#
+# The following configures collectd's filtering mechanism. Before changing   #
+# anything in this section, please read the `FILTER CONFIGURATION' section   #
+# in the collectd.conf(5) manual page.                                       #
+##############################################################################
+
+# Load required matches:
+#LoadPlugin match_empty_counter
+#LoadPlugin match_hashed
+#LoadPlugin match_regex
+#LoadPlugin match_value
+#LoadPlugin match_timediff
+
+# Load required targets:
+#LoadPlugin target_notification
+#LoadPlugin target_replace
+#LoadPlugin target_scale
+#LoadPlugin target_set
+#LoadPlugin target_v5upgrade
+
+#----------------------------------------------------------------------------#
+# The following block demonstrates the default behavior if no filtering is   #
+# configured at all: All values will be sent to all available write plugins. #
+#----------------------------------------------------------------------------#
+
+#<Chain "PostCache">
+#  Target "write"
+#</Chain>
+
+##############################################################################
+# Threshold configuration                                                    #
+#----------------------------------------------------------------------------#
+# The following outlines how to configure collectd's threshold checking      #
+# plugin. The plugin and possible configuration options are documented in    #
+# the collectd-threshold(5) manual page.                                     #
+##############################################################################
+
+#LoadPlugin "threshold"
+#<Plugin threshold>
+#  <Type "foo">
+#    WarningMin    0.00
+#    WarningMax 1000.00
+#    FailureMin    0.00
+#    FailureMax 1200.00
+#    Invert false
+#    Instance "bar"
+#  </Type>
+#
+#  <Plugin "interface">
+#    Instance "eth0"
+#    <Type "if_octets">
+#      FailureMax 10000000
+#      DataSource "rx"
+#    </Type>
+#  </Plugin>
+#
+#  <Host "hostname">
+#    <Type "cpu">
+#      Instance "idle"
+#      FailureMin 10
+#    </Type>
+#
+#    <Plugin "memory">
+#      <Type "memory">
+#        Instance "cached"
+#        WarningMin 100000000
+#      </Type>
+#    </Plugin>
+#
+#    <Type "load">
+#       DataSource "midterm"
+#       FailureMax 4
+#       Hits 3
+#       Hysteresis 3
+#    </Type>
+#  </Host>
+#</Plugin>
diff --git a/monitor/config/prometheus.yaml b/monitor/config/prometheus.yaml
new file mode 100644 (file)
index 0000000..35bf040
--- /dev/null
@@ -0,0 +1,44 @@
+##############################################################################
+# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+global:
+  scrape_interval: 15s # By default, scrape targets every 15 seconds.
+
+  # Attach these labels to any time series or alerts when communicating with
+  # external systems (federation, remote storage, Alertmanager).
+  external_labels:
+    monitor: 'codelab-monitor'
+
+# A scrape configuration containing exactly one endpoint to scrape:
+# Here it's Prometheus itself.
+scrape_configs:
+  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
+  - job_name: 'prometheus'
+
+    # Override the global default and scrape targets from this job every 5 seconds.
+    scrape_interval: 5s
+
+    static_configs:
+      - targets: ['192.168.104.2:9090']
+
+  - job_name: 'collectd'
+
+    # Override the global default and scrape targets from this job every 5 seconds.
+    scrape_interval: 5s
+
+    static_configs:
+      - targets: ['192.168.104.2:9103']
+
+  - job_name: 'node'
+
+    # Override the global default and scrape targets from this job every 5 seconds.
+    scrape_interval: 5s
+
+    static_configs:
+      - targets: ['192.168.104.2:9100']
\ No newline at end of file
diff --git a/monitor/monitoring.sh b/monitor/monitoring.sh
new file mode 100644 (file)
index 0000000..deae07a
--- /dev/null
@@ -0,0 +1,39 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2017 Huawei Tech and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+MONITOR_CONFIG="/home/opnfv/bottlenecks/monitor/config"
+
+# Node-Exporter
+sudo docker run -d -p 9100:9100 \
+  -v "/proc:/host/proc:ro" \
+  -v "/sys:/host/sys:ro" \
+  -v "/:/rootfs:ro" \
+  --net="host" \
+  quay.io/prometheus/node-exporter \
+    -collector.procfs /host/proc \
+    -collector.sysfs /host/sys \
+    -collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
+
+# Collectd
+sudo docker run -d \
+  --privileged \
+  -v ${MONITOR_CONFIG}:/etc/collectd:ro \
+  -v /proc:/mnt/proc:ro \
+  fr3nd/collectd
+
+# Collectd-Exporter
+sudo docker run -d -p 9103:9103 \
+  -p 25826:25826/udp prom/collectd-exporter \
+  -collectd.listen-address=":25826"
+
+# Prometheus
+sudo docker run -d -p 9090:9090 \
+  -v ${MONITOR_CONFIG}/prometheus.yaml:/etc/prometheus/prometheus.yaml \
+  prom/prometheus
\ No newline at end of file