diff options
author | yuyang <Gabriel.yuyang@huawei.com> | 2017-07-14 17:27:13 +0800 |
---|---|---|
committer | yuyang <Gabriel.yuyang@huawei.com> | 2017-07-17 10:24:54 +0800 |
commit | e7c3c796b1d620f3e26c64733235f45aef2cae5c (patch) | |
tree | 23a433f2d4ced7934ae7eaaddaf15b7fc5b83d10 | |
parent | c6647e559cddfe8bdf064bf69edd970df4044ce5 (diff) |
Add test monitoring module
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>
-rw-r--r-- | monitor/__init__.py | 8 | ||||
-rw-r--r-- | monitor/config/__init__.py | 8 | ||||
-rw-r--r-- | monitor/config/collectd.conf | 1511 | ||||
-rw-r--r-- | monitor/config/prometheus.yaml | 44 | ||||
-rw-r--r-- | monitor/monitoring.sh | 39 |
5 files changed, 1610 insertions, 0 deletions
diff --git a/monitor/__init__.py b/monitor/__init__.py new file mode 100644 index 00000000..b124dfa9 --- /dev/null +++ b/monitor/__init__.py @@ -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 index 00000000..b124dfa9 --- /dev/null +++ b/monitor/config/__init__.py @@ -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 index 00000000..62be9fbb --- /dev/null +++ b/monitor/config/collectd.conf @@ -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 index 00000000..35bf0401 --- /dev/null +++ b/monitor/config/prometheus.yaml @@ -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 index 00000000..deae07a0 --- /dev/null +++ b/monitor/monitoring.sh @@ -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 |