From 911f0e4b579696eb9ee640e747da9fd5fd6f9a32 Mon Sep 17 00:00:00 2001 From: Daniel Nelson Date: Mon, 23 Apr 2018 15:06:26 -0700 Subject: [PATCH] Deprecate the cassandra input plugin (#4050) --- CHANGELOG.md | 7 ++ README.md | 6 +- plugins/inputs/cassandra/README.md | 3 + plugins/inputs/cassandra/cassandra.go | 17 +++- plugins/inputs/jolokia2/README.md | 16 +++- .../inputs/jolokia2/examples/cassandra.conf | 85 +++++++++++++++++++ plugins/inputs/jolokia2/jolokia_proxy.go | 8 +- 7 files changed, 131 insertions(+), 11 deletions(-) create mode 100644 plugins/inputs/jolokia2/examples/cassandra.conf diff --git a/CHANGELOG.md b/CHANGELOG.md index d35fd20d6..e04b4625b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ ## v1.7 [unreleased] +### Release Notes + +- The `cassandra` input plugin has been deprecated in favor of the `jolokia2` + input plugin which is much more configurable and more performant. There is + an [example configuration](./plugins/inputs/jolokia2/examples) to help you + get started. + ### New Inputs - [fibaro](./plugins/inputs/fibaro/README.md) - Contributed by @dynek diff --git a/README.md b/README.md index 63f3373e5..d1691698a 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ and writing metrics. Design goals are to have a minimal memory footprint with a plugin system so that developers in the community can easily add support for collecting metrics -from local or remote services. +. For an example configuration referencet from local or remote services. Telegraf is plugin-driven and has the concept of 4 distinct plugins: @@ -130,7 +130,7 @@ configuration options. * [aws cloudwatch](./plugins/inputs/cloudwatch) * [bcache](./plugins/inputs/bcache) * [bond](./plugins/inputs/bond) -* [cassandra](./plugins/inputs/cassandra) +* [cassandra](./plugins/inputs/cassandra) (deprecated, use [jolokia2](./plugins/inputs/jolokia2)) * [ceph](./plugins/inputs/ceph) * [cgroup](./plugins/inputs/cgroup) * [chrony](./plugins/inputs/chrony) @@ -163,7 +163,7 @@ configuration options. * [iptables](./plugins/inputs/iptables) * [ipset](./plugins/inputs/ipset) * [jolokia](./plugins/inputs/jolokia) (deprecated, use [jolokia2](./plugins/inputs/jolokia2)) -* [jolokia2](./plugins/inputs/jolokia2) +* [jolokia2](./plugins/inputs/jolokia2) (java, cassandra, kafka) * [kapacitor](./plugins/inputs/kapacitor) * [kubernetes](./plugins/inputs/kubernetes) * [leofs](./plugins/inputs/leofs) diff --git a/plugins/inputs/cassandra/README.md b/plugins/inputs/cassandra/README.md index edcef08c4..2f3fd928b 100644 --- a/plugins/inputs/cassandra/README.md +++ b/plugins/inputs/cassandra/README.md @@ -1,5 +1,8 @@ + # Telegraf plugin: Cassandra +### **Deprecated in version 1.7**: Please use the [jolokia2](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/jolokia2) plugin with the [cassandra.conf](/influxdata/telegraf/blob/master/plugins/inputs/jolokia2/examples/cassandra.conf) example configuration. + #### Plugin arguments: - **context** string: Context root used for jolokia url - **servers** []string: List of servers with the format ":port" diff --git a/plugins/inputs/cassandra/cassandra.go b/plugins/inputs/cassandra/cassandra.go index 541edf16c..6f6f86e32 100644 --- a/plugins/inputs/cassandra/cassandra.go +++ b/plugins/inputs/cassandra/cassandra.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "io/ioutil" + "log" "net/http" "net/url" "strings" @@ -174,7 +175,11 @@ func (c cassandraMetric) addTagsFields(out map[string]interface{}) { func (j *Cassandra) SampleConfig() string { return ` - # This is the context root used to compose the jolokia url + ## DEPRECATED: The cassandra plugin has been deprecated. Please use the + ## jolokia2 plugin instead. + ## + ## see https://github.com/influxdata/telegraf/tree/master/plugins/inputs/jolokia2 + context = "/jolokia/read" ## List of cassandra servers exposing jolokia read service servers = ["myuser:mypassword@10.10.10.1:8778","10.10.10.2:8778",":8778"] @@ -258,6 +263,16 @@ func parseServerTokens(server string) map[string]string { return serverTokens } +func (c *Cassandra) Start(acc telegraf.Accumulator) error { + log.Println("W! DEPRECATED: The cassandra plugin has been deprecated. " + + "Please use the jolokia2 plugin instead. " + + "https://github.com/influxdata/telegraf/tree/master/plugins/inputs/jolokia2") + return nil +} + +func (c *Cassandra) Stop() { +} + func (c *Cassandra) Gather(acc telegraf.Accumulator) error { context := c.Context servers := c.Servers diff --git a/plugins/inputs/jolokia2/README.md b/plugins/inputs/jolokia2/README.md index 0ab985e5b..15fbb233f 100644 --- a/plugins/inputs/jolokia2/README.md +++ b/plugins/inputs/jolokia2/README.md @@ -2,7 +2,9 @@ The [Jolokia](http://jolokia.org) _agent_ and _proxy_ input plugins collect JMX metrics from an HTTP endpoint using Jolokia's [JSON-over-HTTP protocol](https://jolokia.org/reference/html/protocol.html). -## Jolokia Agent Configuration +### Configuration: + +#### Jolokia Agent Configuration The `jolokia2_agent` input plugin reads JMX metrics from one or more [Jolokia agent](https://jolokia.org/agent/jvm.html) REST endpoints. @@ -32,7 +34,7 @@ Optionally, specify SSL options for communicating with agents: paths = ["Uptime"] ``` -## Jolokia Proxy Configuration +#### Jolokia Proxy Configuration The `jolokia2_proxy` input plugin reads JMX metrics from one or more _targets_ by interacting with a [Jolokia proxy](https://jolokia.org/features/proxy.html) REST endpoint. @@ -77,7 +79,7 @@ Optionally, specify SSL options for communicating with proxies: paths = ["Uptime"] ``` -## Jolokia Metric Configuration +#### Jolokia Metric Configuration Each `metric` declaration generates a Jolokia request to fetch telemetry from a JMX MBean. @@ -167,3 +169,11 @@ Both `jolokia2_agent` and `jolokia2_proxy` plugins support default configuration | `default_field_separator` | `.` | A character to use to join Mbean attributes when creating fields. | | `default_field_prefix` | _None_ | A string to prepend to the field names produced by all `metric` declarations. | | `default_tag_prefix` | _None_ | A string to prepend to the tag names produced by all `metric` declarations. | + +### Example Configurations: + +- [Java JVM](/influxdata/telegraf/blob/master/plugins/inputs/jolokia2/examples/java.conf) +- [Kafka](/influxdata/telegraf/blob/master/plugins/inputs/jolokia2/examples/kafka.conf) +- [Cassandra](/influxdata/telegraf/blob/master/plugins/inputs/jolokia2/examples/cassandra.conf) + +Please help improve this list and contribute new configuration files by opening an issue or pull request. diff --git a/plugins/inputs/jolokia2/examples/cassandra.conf b/plugins/inputs/jolokia2/examples/cassandra.conf new file mode 100644 index 000000000..3a419a6df --- /dev/null +++ b/plugins/inputs/jolokia2/examples/cassandra.conf @@ -0,0 +1,85 @@ +[[inputs.jolokia2_agent]] + urls = ["http://localhost:8778/jolokia"] + name_prefix = "java_" + + [[inputs.jolokia2_agent.metrics]] + name = "Memory" + mbean = "java.lang:type=Memory" + + [[inputs.jolokia2_agent.metric]] + name = "GarbageCollector" + mbean = "java.lang:name=*,type=GarbageCollector" + tag_keys = ["name"] + +[[inputs.jolokia2_agent]] + urls = ["http://localhost:8778/jolokia"] + name_prefix = "cassandra_" + + [[inputs.jolokia2_agent.metric]] + name = "Cache" + mbean = "org.apache.cassandra.metrics:name=*,scope=*,type=Cache" + tag_keys = ["name", "scope"] + + [[inputs.jolokia2_agent.metric]] + name = "Client" + mbean = "org.apache.cassandra.metrics:name=*,type=Client" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "ClientRequestMetrics" + mbean = "org.apache.cassandra.metrics:name=*,type=ClientRequestMetrics" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "ClientRequest" + mbean = "org.apache.cassandra.metrics:name=*,scope=*,type=ClientRequest" + tag_keys = ["name", "scope"] + + [[inputs.jolokia2_agent.metric]] + name = "ColumnFamily" + mbean = "org.apache.cassandra.metrics:keyspace=*,name=*,scope=*,type=ColumnFamily" + tag_keys = ["keyspace", "name", "scope"] + + [[inputs.jolokia2_agent.metric]] + name = "CommitLog" + mbean = "org.apache.cassandra.metrics:name=*,type=CommitLog" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "Compaction" + mbean = "org.apache.cassandra.metrics:name=*,type=Compaction" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "CQL" + mbean = "org.apache.cassandra.metrics:name=*,type=CQL" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "DroppedMessage" + mbean = "org.apache.cassandra.metrics:name=*,scope=*,type=DroppedMessage" + tag_keys = ["name", "scope"] + + [[inputs.jolokia2_agent.metric]] + name = "FileCache" + mbean = "org.apache.cassandra.metrics:name=*,type=FileCache" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "ReadRepair" + mbean = "org.apache.cassandra.metrics:name=*,type=ReadRepair" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "HintedHandoffManager" + mbean = "org.apache.cassandra.metrics:type=HintedHandoffManager" + + [[inputs.jolokia2_agent.metric]] + name = "Storage" + mbean = "org.apache.cassandra.metrics:name=*,type=Storage" + tag_keys = ["name"] + + [[inputs.jolokia2_agent.metric]] + name = "ThreadPools" + mbean = "org.apache.cassandra.metrics:name=*,path=*,scope=*,type=ThreadPools" + tag_keys = ["name", "path", "scope"] diff --git a/plugins/inputs/jolokia2/jolokia_proxy.go b/plugins/inputs/jolokia2/jolokia_proxy.go index f19a74e84..c9474871f 100644 --- a/plugins/inputs/jolokia2/jolokia_proxy.go +++ b/plugins/inputs/jolokia2/jolokia_proxy.go @@ -56,13 +56,13 @@ func (jp *JolokiaProxy) SampleConfig() string { ## Add proxy targets to query # default_target_username = "" # default_target_password = "" - [[inputs.jolokia_proxy.target]] + [[inputs.jolokia2_proxy.target]] url = "service:jmx:rmi:///jndi/rmi://targethost:9999/jmxrmi" - # username = "" - # password = "" + # username = "" + # password = "" ## Add metrics to read - [[inputs.jolokia_proxy.metric]] + [[inputs.jolokia2_proxy.metric]] name = "java_runtime" mbean = "java.lang:type=Runtime" paths = ["Uptime"]