ECL2.0 Custom meter agent (a.k.a ecl2mond) is a support tool for NTT Communications' Enterprise Cloud 2.0 Monitoring service.
This agent enables you to accumulate and visualize usage data which you want automatically in ECL2.0 Monitoring service. The agent runs on a Linux machine and collects usage data of some kinds of computing resources. Moreover, the agent sends the usage data periodically to ECL2.0 Monitoring service by using Monitoring API.
Linux servers running on or connect with ECL2.0 environment
No. | OS | Resource Category | Meter Name | Description | Unit | Meter Type | Data Source |
---|---|---|---|---|---|---|---|
1 | Linux | CPU | cpu.user.percents | CPU Usage (user mode) | Percent | delta | /proc/stat |
2 | Linux | CPU | cpu.nice.percents | CPU Usage (user mode with low priority) | Percent | delta | /proc/stat |
3 | Linux | CPU | cpu.system.percents | CPU Usage (system mode) | Percent | delta | /proc/stat |
4 | Linux | CPU | cpu.idle.percents | CPU Usage (idle task) | Percent | delta | /proc/stat |
5 | Linux | CPU | cpu.iowait.percents | CPU Usage (I/O wait) | Percent | delta | /proc/stat |
6 | Linux | CPU | cpu.irq.percents | CPU Usage (hard irq) | Percent | delta | /proc/stat |
7 | Linux | CPU | cpu.softirq.percents | CPU Usage (soft irq) | Percent | delta | /proc/stat |
8 | Linux | CPU | cpu.steal.percents | CPU Usage (stolen time) | Percent | delta | /proc/stat |
9 | Linux | CPU | cpu.guest.percents | CPU Usage (vCPU for guest OS) | Percent | delta | /proc/stat |
10 | Linux | Disk | disk.{device name}.reads.completed.count | Disk Read I/O (completed successfully) | Count | delta | /proc/diskstats |
11 | Linux | Disk | disk.{device name}.reads.merged.count | Disk Read I/O (merged) | Count | delta | /proc/diskstats |
12 | Linux | Disk | disk.{device name}.reads.sectors.count | Disk Read Sectors | Count | delta | /proc/diskstats |
13 | Linux | Disk | disk.{device name}.reads.milliseconds | Disk Read milliseconds | millisecond | delta | /proc/diskstats |
14 | Linux | Disk | disk.{device name}.writes.completed.count | Disk Write I/O (completed successfully) | Count | delta | /proc/diskstats |
15 | Linux | Disk | disk.{device name}.writes.merged.count | Disk Write I/O (merged) | Count | delta | /proc/diskstats |
16 | Linux | Disk | disk.{device name}.writes.sectors.count | Disk Write Sectors | Count | delta | /proc/diskstats |
17 | Linux | Disk | disk.{device name}.writes.millisecond | Disk Write milliseconds | millisecond | delta | /proc/diskstats |
18 | Linux | Disk | disk.{device name}.currently.ios.count | Current Disk I/O | Count | delta | /proc/diskstats |
19 | Linux | Disk | disk.{device name}.ios.milliseconds | Disk I/O milliseconds | millisecond | delta | /proc/diskstats |
20 | Linux | Disk | disk.{device name}.weighted.ios.milliseconds | Weighted Disk I/O milliseconds | millisecond | delta | /proc/diskstats |
21 | Linux | Network | network.{nwif name}.receive.bytes | IF Received bytes | Byte | delta | /proc/net/dev |
22 | Linux | Network | network.{nwif name}.receive.packets.count | IF Received packets | Count | delta | /proc/net/dev |
23 | Linux | Network | network.{nwif name}.receive.errs.count | IF Received error packets | Count | delta | /proc/net/dev |
24 | Linux | Network | network.{nwif name}.receive.drop.count | IF Received and dropped packets | Count | delta | /proc/net/dev |
25 | Linux | Network | network.{nwif name}.receive.fifo.count | IF Received fifo error packets | Count | delta | /proc/net/dev |
26 | Linux | Network | network.{nwif name}.receive.frame.count | IF Received frame error packets | Count | delta | /proc/net/dev |
27 | Linux | Network | network.{nwif name}.receive.compressed.count | IF Received compressed packets | Count | delta | /proc/net/dev |
28 | Linux | Network | network.{nwif name}.receive.multicast.count | IF Received multicast packets | Count | delta | /proc/net/dev |
29 | Linux | Network | network.{nwif name}.transmit.bytes | IF Transmitted bytes | Byte | delta | /proc/net/dev |
30 | Linux | Network | network.{nwif name}.transmit.packets.count | IF Transmitted packets | Count | delta | /proc/net/dev |
31 | Linux | Network | network.{nwif name}.transmit.errs.count | IF Transmitted error packets | Count | delta | /proc/net/dev |
32 | Linux | Network | network.{nwif name}.transmit.drop.count | IF Transmitted and dropped packets | Count | delta | /proc/net/dev |
33 | Linux | Network | network.{nwif name}.transmit.fifo.count | IF Transmitted fifo error packets | Count | delta | /proc/net/dev |
34 | Linux | Network | network.{nwif name}.transmit.coll.count | IF Transmitted collision error packets | Count | delta | /proc/net/dev |
35 | Linux | Network | network.{nwif name}.transmit.carrier.count | IF Transmitted carrier loss packets | Count | delta | /proc/net/dev |
36 | Linux | Network | network.{nwif name}.transmit.compressed.count | IF Transmitted compressed packets | Count | delta | /proc/net/dev |
37 | Linux | Load Average | loadavg.1.count | Load average (1 min) | Count | gauge | /proc/loadavg |
38 | Linux | Load Average | loadavg.5.count | Load average (5 min) | Count | gauge | /proc/loadavg |
39 | Linux | Load Average | loadavg.15.count | Load average (15 min) | Count | gauge | /proc/loadavg |
40 | Linux | Memory | memory.memtotal.kilobytes | Total memory | kilobytes | gauge | /proc/meminfo (MemTotal) |
41 | Linux | Memory | memory.memfree.kilobytes | Memory left unused | kilobytes | gauge | /proc/meminfo (MemFree) |
42 | Linux | Memory | memory.buffers.kilobytes | Memory used for file buffers | kilobytes | gauge | /proc/meminfo (Buffers) |
43 | Linux | Memory | memory.cached.kilobytes | Memory used as cache | kilobytes | gauge | /proc/meminfo (Cached) |
44 | Linux | Memory | memory.swapcached.kilobytes | Memory used as swap cache | kilobytes | gauge | /proc/meminfo (SwapCached) |
45 | Linux | Memory | memory.active.kilobytes | Memory used actively | kilobytes | gauge | /proc/meminfo (Active) |
46 | Linux | Memory | memory.inactive.kilobytes | Memory used inactively | kilobytes | gauge | /proc/meminfo (Inactive) |
47 | Linux | Memory | memory.swaptotal.kilobytes | Total amount of swap available | kilobytes | gauge | /proc/meminfo (SwapTotal) |
48 | Linux | Memory | memory.swapfree.kilobytes | Total amount of swap free | kilobytes | gauge | /proc/meminfo (SwapFree) |
49 | Linux | Memory | memory.usedtotal.kilobytes | Total used Memory | kilobytes | gauge | /proc/meminfo (MemTotal - (MemFree + Buffers + Cached)) |
Edit your ~/.bash_profile
export GOROOT=/usr/local/go
export GOPATH=$HOME
export GHQ_ROOT=$GOPATH/src
PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Install golang
# Download
wget https://storage.googleapis.com/golang/go1.8.linux-amd64.tar.gz
# Extract
sudo tar zxvf go1.8.linux-amd64.tar.gz -C /usr/local/
# Modify the file owner
sudo chown $USER:$USER /usr/local/go/pkg/
Install docker
# Add epel repository
sudo yum install epel-release
# Install docker-io
sudo yum install docker-io --enablerepo=epel
# Create docker group
sudo groupadd docker
sudo gpasswd -a $USER docker
sudo usermod -g docker $USER
sudo service docker start
# Logout and relogin to enable the group
exit
Install ghq
go get github.com/motemen/ghq
Clone this repository
# clone to $HOME/src/github.com/nttcom/ecl2mond/ by using ghq
ghq get git@github.com:nttcom/ecl2mond.git
Execute the following commands at $HOME/src/github.com/nttcom/ecl2mond/
directory and generate the packages.
(The first run will take a long time.)
make deps
make package-all-docker
# generated packages are here
ls $HOME/src/github.com/nttcom/ecl2mond/_packaging/output
- Linux
- CentOS7.1
- Ubuntu16.04LTS
Above is the list of tested platforms. ecl2mond
should work on other linux platforms.
Create /etc/yum.repos.d/ecl2mond.repo
and edit as follows.
[ecl2mond]
name=Enterprise Cloud Custom Meter Agent
baseurl=http://repo.ecl.ntt.com/packages/rpms
enabled=1
gpgcheck=1
Download and import the public key for signature verification.
curl -O http://repo.ecl.ntt.com/packages/GPG-KEY-ecl; rpm --import GPG-KEY-ecl
Install by using yum
, a package management tool.
yum install ecl2mond
Create /etc/apt/sources.list.d/ecl2mond.list
and edit as follows.
deb http://repo.ecl.ntt.com/packages/debs ./
Download and import the public key for signature verification.
curl -O http://repo.ecl.ntt.com/packages/GPG-KEY-ecl; apt-key add GPG-KEY-ecl
Install by using apt
, a package management tool.
apt-get update; apt-cache search ecl2mond
apt-get install ecl2mond
(Additional)
If the apt-transport-https
package is not installed, you need to install it.
apt-get update; apt-cache search apt-transport-https
apt-get install apt-transport-https
The ecl2mond
configuration file is generated at /etc/ecl2mond/ecl2mond.conf
.
Please refer to the following description and modify the parameters.
Parameter name | Required | Data type | Default value | Value range | Description |
---|---|---|---|---|---|
monitoringUrl | yes | String | N/A | Monitoring API Endpoint (Set your region's one.) |
|
interval | Integer | 5 | 1 - 3599 | Interval of data collection and sending (minute) | |
authUrl | yes | String | N/A | ||
authInterval | Integer | 60 | 5 - 3599 | Interval for keystone token refreshing (minute) (Basically it should be remained the default.) |
|
resourceId | yes | String | N/A | Resource ID of the Monitoring target resource | |
tenantId | yes | String | N/A | Your tenant ID | |
userName | yes | String | N/A | Your API key | |
password | yes | String | N/A | Your API secret key | |
meters | yes | String array | N/A | Please refer to Monitoring service description. | Meter names you want to monitor |
logLevel | String | Info | "TRACE", "DEBUG", "INFO", "WARNING", "ERROR", "FATAL" | Log level |
monitoringUrl: Enter the ECL2.0 Monitoring API Endpoint URL
# ex. "https://monitoring-jp1-ecl.api.ntt.com/"
monitoringUrl = "https://monitoring-jp1-ecl.api.ntt.com/"
# interval: Specify the time interval to collect and send the value by the agent
# [ 1 - 3599 ] minutes, default: 5
interval = 5
# authUrl: Enter the ECL2.0 Keystone API Endpoint URL
# ex. "https://keystone-jp1-ecl.api.ntt.com/"
authUrl = "https://keystone-jp1-ecl.api.ntt.com/"
# authInterval: Specify the time interval to refresh auth token
# [ 5 - 3599 ] min, default: 60
authInterval = 60
# resourceId: Enter the target resource id for custom meter creation
# ex. nova_12ab-12cd56gh9-ab34ef78i-34cd
resourceId = "nova_6708b574-434d-4476-b8c1-2a128ab5edc1"
# tenantId: Enter your tenant id
tenantId = "<your tenant id>"
# userName: Enter your API key
userName = "<your API key>"
# password: Enter your API secret key
password = "<your API secret key>"
meters = [
"loadavg.1.count",
]
Usage: ecl2mond [options]
options:
-m, --mode {run(default)|run-once|dry-run}
set mode
-c, --config
set config file
-h, --help
show help message
For operation check
# dry-run (run with data collection only)
ecl2mond -m dry-run
# run-once (collect data and send it to Monitoring only once)
ecl2mond -m run-once
Start ecl2mond
in the background
service ecl2mond start
Stop ecl2mond
service ecl2mond stop
Check the status of ecl2mond
service ecl2mond status
When ecl2mond
is started in the background, a log is output to /var/log/ecl2mond.log
.
Please find more usage documentation here or here.
ECL2.0 users can raise requests via NTT Communication's ticket portal.
Please contribute Github Flow - Create a branch, add commits, and open a pull request.
- Apache 2.0