etcdmain: add 'listen-metrics-urls' option

Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
This commit is contained in:
Gyu-Ho Lee 2017-07-12 10:06:38 -07:00
parent 9bb5ede659
commit 8463b377d9
3 changed files with 17 additions and 3 deletions

View File

@ -20,12 +20,14 @@ import (
"flag" "flag"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"net/url"
"os" "os"
"runtime" "runtime"
"strings" "strings"
"github.com/coreos/etcd/embed" "github.com/coreos/etcd/embed"
"github.com/coreos/etcd/pkg/flags" "github.com/coreos/etcd/pkg/flags"
"github.com/coreos/etcd/pkg/types"
"github.com/coreos/etcd/version" "github.com/coreos/etcd/version"
"github.com/ghodss/yaml" "github.com/ghodss/yaml"
) )
@ -131,6 +133,7 @@ func newConfig() *config {
fs.StringVar(&cfg.WalDir, "wal-dir", cfg.WalDir, "Path to the dedicated wal directory.") fs.StringVar(&cfg.WalDir, "wal-dir", cfg.WalDir, "Path to the dedicated wal directory.")
fs.Var(flags.NewURLsValue(embed.DefaultListenPeerURLs), "listen-peer-urls", "List of URLs to listen on for peer traffic.") fs.Var(flags.NewURLsValue(embed.DefaultListenPeerURLs), "listen-peer-urls", "List of URLs to listen on for peer traffic.")
fs.Var(flags.NewURLsValue(embed.DefaultListenClientURLs), "listen-client-urls", "List of URLs to listen on for client traffic.") fs.Var(flags.NewURLsValue(embed.DefaultListenClientURLs), "listen-client-urls", "List of URLs to listen on for client traffic.")
fs.StringVar(&cfg.ListenMetricsUrlsJSON, "listen-metrics-urls", "", "List of URLs to listen on for metrics.")
fs.UintVar(&cfg.MaxSnapFiles, "max-snapshots", cfg.MaxSnapFiles, "Maximum number of snapshot files to retain (0 is unlimited).") fs.UintVar(&cfg.MaxSnapFiles, "max-snapshots", cfg.MaxSnapFiles, "Maximum number of snapshot files to retain (0 is unlimited).")
fs.UintVar(&cfg.MaxWalFiles, "max-wals", cfg.MaxWalFiles, "Maximum number of wal files to retain (0 is unlimited).") fs.UintVar(&cfg.MaxWalFiles, "max-wals", cfg.MaxWalFiles, "Maximum number of wal files to retain (0 is unlimited).")
fs.StringVar(&cfg.Name, "name", cfg.Name, "Human-readable name for this member.") fs.StringVar(&cfg.Name, "name", cfg.Name, "Human-readable name for this member.")
@ -262,6 +265,15 @@ func (cfg *config) configFromCmdLine() error {
cfg.APUrls = flags.URLsFromFlag(cfg.FlagSet, "initial-advertise-peer-urls") cfg.APUrls = flags.URLsFromFlag(cfg.FlagSet, "initial-advertise-peer-urls")
cfg.LCUrls = flags.URLsFromFlag(cfg.FlagSet, "listen-client-urls") cfg.LCUrls = flags.URLsFromFlag(cfg.FlagSet, "listen-client-urls")
cfg.ACUrls = flags.URLsFromFlag(cfg.FlagSet, "advertise-client-urls") cfg.ACUrls = flags.URLsFromFlag(cfg.FlagSet, "advertise-client-urls")
if len(cfg.ListenMetricsUrlsJSON) > 0 {
u, err := types.NewURLs(strings.Split(cfg.ListenMetricsUrlsJSON, ","))
if err != nil {
plog.Fatalf("unexpected error setting up listen-metrics-urls: %v", err)
}
cfg.ListenMetricsUrls = []url.URL(u)
}
cfg.ClusterState = cfg.clusterState.String() cfg.ClusterState = cfg.clusterState.String()
cfg.Fallback = cfg.fallback.String() cfg.Fallback = cfg.fallback.String()
cfg.Proxy = cfg.proxy.String() cfg.Proxy = cfg.proxy.String()

View File

@ -313,7 +313,7 @@ func startProxy(cfg *config) error {
go func() { go func() {
plog.Info("proxy: listening for client requests on ", host) plog.Info("proxy: listening for client requests on ", host)
mux := http.NewServeMux() mux := http.NewServeMux()
mux.Handle("/metrics", prometheus.Handler()) mux.Handle("/metrics", prometheus.Handler()) // v2 proxy just uses the same port
mux.Handle("/", ph) mux.Handle("/", ph)
plog.Fatal(http.Serve(l, mux)) plog.Fatal(http.Serve(l, mux))
}() }()

View File

@ -66,7 +66,7 @@ member flags:
comma-separated whitelist of origins for CORS (cross-origin resource sharing). comma-separated whitelist of origins for CORS (cross-origin resource sharing).
--quota-backend-bytes '0' --quota-backend-bytes '0'
raise alarms when backend size exceeds the given quota (0 defaults to low space quota). raise alarms when backend size exceeds the given quota (0 defaults to low space quota).
--max-txn-ops '128' --max-txn-ops '128'
maximum number of operations permitted in a transaction. maximum number of operations permitted in a transaction.
--max-request-bytes '1572864' --max-request-bytes '1572864'
maximum client request size in bytes the server will accept. maximum client request size in bytes the server will accept.
@ -172,7 +172,9 @@ profiling flags:
--enable-pprof 'false' --enable-pprof 'false'
Enable runtime profiling data via HTTP server. Address is at client URL + "/debug/pprof/" Enable runtime profiling data via HTTP server. Address is at client URL + "/debug/pprof/"
--metrics 'basic' --metrics 'basic'
Set level of detail for exported metrics, specify 'extensive' to include histogram metrics. Set level of detail for exported metrics, specify 'extensive' to include histogram metrics.
--listen-metrics-urls ''
List of URLs to listen on for metrics.
auth flags: auth flags:
--auth-token 'simple' --auth-token 'simple'