diff --git a/cadvisor b/cadvisor new file mode 100644 index 0000000..8a2c793 --- /dev/null +++ b/cadvisor @@ -0,0 +1,46 @@ +# config options for cAdvisor +# +# + +# Docker endpoint to connect to +# Default: unix:///var/run/docker.sock +CADVISOR_DOCKER_ENDPOINT="unix:///var/run/docker.sock" + +# Port to listen on +# Default: 8080 +# kubernetes expects it on port 4194 +CADVISOR_PORT="4194" + +# Samples +# Number of samples to keep +# Default: 1024 +CADVISOR_SAMPLES="1024" + +# Storage driver +# Default: none/blank +# +# Available Options: +# - [none] +# - bigquery +# - influxdb +CADVISOR_STORAGE_DRIVER="" + +# Storage driver host +# Default: localhost:8086" +CADVISOR_STORAGE_DRIVER_HOST="localhost:8086" + +# Storage driver password +# Default: root +CADVISOR_STORAGE_DRIVER_PASSWORD="root" + +# Storage driver secure connection +# Default: false +CADVISOR_STORAGE_DRIVER_SECURE="false" + +# Storage driver user +# Default: root +CADVISOR_STORAGE_DRIVER_USER="root" + +# Log to stderr (and thus to journal) +# Default: false +CADVISOR_LOG_TO_STDERR="true" diff --git a/cadvisor.service b/cadvisor.service new file mode 100644 index 0000000..c465783 --- /dev/null +++ b/cadvisor.service @@ -0,0 +1,18 @@ +[Unit] +Description=cAdvisor + +[Service] +EnvironmentFile=/etc/sysconfig/cadvisor +ExecStart=/usr/bin/cadvisor \ + --docker=${CADVISOR_DOCKER_ENDPOINT} \ + --port=${CADVISOR_PORT} \ + --samples=${CADVISOR_SAMPLES} \ + --storage_driver=${CADVISOR_STORAGE_DRIVER} \ + --storage_driver_host=${CADVISOR_STORAGE_DRIVER_HOST} \ + --storage_driver_password=${CADVISOR_STORAGE_DRIVER_PASSWORD} \ + --storage_driver_secure=${CADVISOR_STORAGE_DRIVER_SECURE} \ + --storage_driver_user=${CADVISOR_STORAGE_DRIVER_USER} \ + --logtostderr=${CADVISOR_LOG_TO_STDERR} + +[Install] +WantedBy=multi-user.target diff --git a/cadvisor.spec b/cadvisor.spec new file mode 100644 index 0000000..52ea30e --- /dev/null +++ b/cadvisor.spec @@ -0,0 +1,201 @@ +%global provider github +%global provider_tld com +%global project google +%global repo cadvisor +%global commit 9d158c3d66e8e6d14cfeb1d73695ab18dbc744e8 + +%global import_path %{provider}.%{provider_tld}/%{project}/%{repo} +%global gopath %{_datadir}/gocode +%global shortcommit %(c=%{commit}; echo ${c:0:7}) +%global debug_package %{nil} + +Name: %{repo} +Version: 0.3.0 +Release: 0.4.git%{shortcommit}%{?dist} +Summary: Analyzes resource usage and performance characteristics of running containers +License: ASL 2.0 +URL: https://%{import_path} +Source0: https://%{import_path}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz +Source1: cadvisor +Source2: cadvisor.service +BuildRequires: docker-io-pkg-devel +BuildRequires: systemd +BuildRequires: glibc-static +BuildRequires: golang >= 1.2.1-3 +BuildRequires: golang(github.com/docker/libcontainer) +BuildRequires: golang(github.com/fsouza/go-dockerclient) +BuildRequires: golang(github.com/coreos/go-systemd) +BuildRequires: golang(github.com/godbus/dbus) +BuildRequires: golang(github.com/kr/text) +BuildRequires: golang(github.com/kr/pretty) +BuildRequires: golang(github.com/influxdb/influxdb/client) +BuildRequires: golang(github.com/stretchr/testify) +BuildRequires: golang(github.com/stretchr/objx) +BuildRequires: golang(github.com/golang/glog) +Requires: docker-io +ExclusiveArch: x86_64 + +%description +%{summary} + +cAdvisor (Container Advisor) provides container users an understanding of the +resource usage and performance characteristics of their running containers. +It is a running daemon that collects, aggregates, processes, and exports +information about running containers. Specifically, for each container it keeps +resource isolation parameters, historical resource usage, histograms of +complete historical resource usage and network statistics. This data is +exported by container and machine-wide. + +cAdvisor currently supports lmctfy containers as well as Docker containers +(those that use the default libcontainer execdriver). Other container backends +can also be added. cAdvisor's container abstraction is based on lmctfy's +so containers are inherently nested hierarchically. + +%package devel +Requires: golang +Summary: Analyzes resource usage and performance characteristics of running containers +Provides: golang(%{import_path}) = %{version}-%{release} +Provides: golang(%{import_path}/advice) = %{version}-%{release} +Provides: golang(%{import_path}/advice/interface) = %{version}-%{release} +Provides: golang(%{import_path}/api) = %{version}-%{release} +Provides: golang(%{import_path}/client) = %{version}-%{release} +Provides: golang(%{import_path}/container) = %{version}-%{release} +Provides: golang(%{import_path}/container/docker) = %{version}-%{release} +Provides: golang(%{import_path}/container/libcontainer) = %{version}-%{release} +Provides: golang(%{import_path}/container/raw) = %{version}-%{release} +Provides: golang(%{import_path}/deploy) = %{version}-%{release} +Provides: golang(%{import_path}/info) = %{version}-%{release} +Provides: golang(%{import_path}/manager) = %{version}-%{release} +Provides: golang(%{import_path}/pages) = %{version}-%{release} +Provides: golang(%{import_path}/pages/static) = %{version}-%{release} +Provides: golang(%{import_path}/sampling) = %{version}-%{release} +Provides: golang(%{import_path}/storage) = %{version}-%{release} +Provides: golang(%{import_path}/storage/cache) = %{version}-%{release} +Provides: golang(%{import_path}/storage/influxdb) = %{version}-%{release} +Provides: golang(%{import_path}/storage/memory) = %{version}-%{release} +Provides: golang(%{import_path}/utils) = %{version}-%{release} +BuildRequires: docker-io-pkg-devel +BuildRequires: golang +BuildRequires: golang(github.com/docker/libcontainer) +BuildRequires: golang(github.com/fsouza/go-dockerclient) +BuildRequires: golang(github.com/coreos/go-systemd) +BuildRequires: golang(github.com/godbus/dbus) +BuildRequires: golang(github.com/kr/text) +BuildRequires: golang(github.com/kr/pretty) +BuildRequires: golang(github.com/influxdb/influxdb/client) +BuildRequires: golang(github.com/stretchr/testify) +BuildRequires: golang(github.com/stretchr/objx) + +%description devel +%{summary} + +cAdvisor (Container Advisor) provides container users an understanding of the +resource usage and performance characteristics of their running containers. +It is a running daemon that collects, aggregates, processes, and exports +information about running containers. Specifically, for each container it keeps +resource isolation parameters, historical resource usage, histograms of +complete historical resource usage and network statistics. This data is +exported by container and machine-wide. + +cAdvisor currently supports lmctfy containers as well as Docker containers +(those that use the default libcontainer execdriver). Other container backends +can also be added. cAdvisor's container abstraction is based on lmctfy's +so containers are inherently nested hierarchically. + +%prep +%setup -n %{name}-%{commit} -q + +%build +mkdir _build + +pushd _build + mkdir -p src/github.com/google + ln -s $(dirs +1 -l) src/github.com/google/cadvisor +popd +export GOPATH=$(pwd)/_build:%{buildroot}%{gopath}:%{gopath} + +go build --ldflags '-extldflags "-static"' github.com/google/cadvisor + +%install +# main package binary +install -d -p %{buildroot}%{_bindir} +install -p -m0755 cadvisor %{buildroot}%{_bindir} + +# install systemd/sysconfig +install -d -m0755 %{buildroot}%{_sysconfdir}/sysconfig/ +install -p -m0660 %{SOURCE1} %{buildroot}%{_sysconfdir}/sysconfig/%{name} +install -d -m0755 %{buildroot}%{_unitdir} +install -p -m0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{name}.service + +# devel package golang libs +install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ +cp -pav *.go %{buildroot}/%{gopath}/src/%{import_path}/ + +for d in advice api client container deploy info manager pages sampling storage \ + utils +do + cp -pav $d %{buildroot}/%{gopath}/src/%{import_path}/ +done + +%post +%systemd_post cadvisor.service + +%preun +%systemd_preun cadvisor.service + +%postun +%systemd_postun + +%files +%doc AUTHORS CHANGELOG.md CONTRIBUTING.md CONTRIBUTORS LICENSE README.md +%{_bindir}/cadvisor +%{_unitdir}/%{name}.service +%config(noreplace) %{_sysconfdir}/sysconfig/%{name} + +%files devel +%doc AUTHORS CHANGELOG.md CONTRIBUTING.md CONTRIBUTORS LICENSE README.md +%dir %{gopath}/src/%{provider}.%{provider_tld}/%{project} +%dir %{gopath}/src/%{import_path} +%dir %{gopath}/src/%{import_path}/api +%dir %{gopath}/src/%{import_path}/client +%dir %{gopath}/src/%{import_path}/container +%dir %{gopath}/src/%{import_path}/deploy +%dir %{gopath}/src/%{import_path}/info +%dir %{gopath}/src/%{import_path}/manager +%dir %{gopath}/src/%{import_path}/pages +%dir %{gopath}/src/%{import_path}/sampling +%dir %{gopath}/src/%{import_path}/storage +%dir %{gopath}/src/%{import_path}/utils +%{gopath}/src/%{import_path}/* +%{gopath}/src/%{import_path}/api/* +%{gopath}/src/%{import_path}/client/* +%{gopath}/src/%{import_path}/container/* +%{gopath}/src/%{import_path}/deploy/* +%{gopath}/src/%{import_path}/info/* +%{gopath}/src/%{import_path}/manager/* +%{gopath}/src/%{import_path}/pages/* +%{gopath}/src/%{import_path}/sampling/* +%{gopath}/src/%{import_path}/storage/* +%{gopath}/src/%{import_path}/utils/* + +%changelog +* Thu Oct 09 2014 jchaloup - 0.3.0-0.4.git9d158c3 +- Move cadvisor.service and cadvisor config file from patch into repo +- Fix the build, thanks to Lokesh + +* Fri Sep 19 2014 Lokesh Mandvekar - 0.3.0-0.3.git9d158c3 +- own parent directory of +- preserve timestamps of copied files in -devel +- use _unitdir macro for systemd install path + +* Fri Sep 12 2014 Eric Paris - 0.2.0-1 +- First package for Fedora