diff --git a/Formula/metricbeat.rb b/Formula/metricbeat.rb new file mode 100644 index 0000000000..1ca7180d38 --- /dev/null +++ b/Formula/metricbeat.rb @@ -0,0 +1,78 @@ +class Metricbeat < Formula + desc "Collect metrics from your systems and services." + homepage "https://www.elastic.co/products/beats/metricbeat" + url "https://github.com/elastic/beats/archive/v5.0.0.tar.gz" + sha256 "3e6b7cf2ee5f52e78ae87ef04ab9dd49977c89f86a09416586896aeaea844e34" + + head "https://github.com/elastic/beats.git" + + depends_on "go" => :build + + def install + gopath = buildpath/"gopath" + (gopath/"src/github.com/elastic/beats").install Dir["{*,.git,.gitignore}"] + + ENV["GOPATH"] = gopath + + cd gopath/"src/github.com/elastic/beats/metricbeat" do + system "make" + libexec.install "metricbeat" + + (etc/"metricbeat").install "metricbeat.yml" + (etc/"metricbeat").install "metricbeat.template.json" + (etc/"metricbeat").install "metricbeat.template-es2x.json" + end + + (bin/"metricbeat").write <<-EOS.undent + #!/bin/sh + exec "#{libexec}/metricbeat" --path.config "#{etc}/metricbeat" --path.home="#{prefix}" --path.logs="#{var}/log/metricbeat" --path.data="#{opt_prefix}" "$@" + EOS + end + + plist_options :manual => "metricbeat" + + def plist; <<-EOS.undent + + + + + Label + #{plist_name} + Program + #{opt_bin}/metricbeat + RunAtLoad + + + + EOS + end + + test do + (testpath/"metricbeat.yml").write <<-EOS.undent + metricbeat.modules: + - module: system + metricsets: ["load"] + period: 1s + output.file: + enabled: true + path: #{testpath}/data + filename: metricbeat + EOS + + (testpath/"logs").mkpath + (testpath/"data").mkpath + + metricbeat_pid = fork do + exec bin/"metricbeat", "-c", testpath/"metricbeat.yml", + "--path.data=#{testpath}/data", "--path.logs=#{testpath}/logs" + end + + begin + sleep 2 + assert File.exist? testpath/"data/metricbeat" + ensure + Process.kill("TERM", metricbeat_pid) + end + end +end