Skip to content

Commit e5bfa8b

Browse files
author
Jochen Schalanda
committed
Upgrade to Graylog 2.4.0 and add more MQTT inputs
1 parent 437d758 commit e5bfa8b

File tree

12 files changed

+204
-154
lines changed

12 files changed

+204
-154
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ MQTT Plugin for Graylog
77

88
This is an input plugin that allows you to subscribe to an [MQTT](http://mqtt.org) broker and index all published messages.
99

10-
**Required Graylog version:** 2.0.0 and later
10+
**Required Graylog version:** 2.4.0 and later
1111

1212
## Installation
1313

pom.xml

Lines changed: 49 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
4-
<prerequisites>
5-
<maven>3.0</maven>
6-
</prerequisites>
74

8-
<groupId>org.graylog.plugins</groupId>
5+
<parent>
6+
<groupId>org.graylog.plugins</groupId>
7+
<artifactId>graylog-plugin-parent</artifactId>
8+
<version>2.4.0</version>
9+
</parent>
10+
911
<artifactId>graylog-plugin-mqtt</artifactId>
1012
<version>1.2.0-SNAPSHOT</version>
1113

@@ -19,150 +21,103 @@
1921
</organization>
2022

2123
<scm>
22-
<connection>scm:git:[email protected]:Graylog2/graylog-plugin-mqtt.git</connection>
23-
<developerConnection>scm:git:[email protected]:Graylog2/graylog-plugin-mqtt.git</developerConnection>
24-
<url>https://github.com/Graylog2/graylog-plugin-mqtt</url>
24+
<connection>scm:git:[email protected]:graylog-labs/graylog-plugin-mqtt.git</connection>
25+
<developerConnection>scm:git:[email protected]:graylog-labs/graylog-plugin-mqtt.git</developerConnection>
26+
<url>https://github.com/graylog-labs/graylog-plugin-mqtt</url>
2527
<tag>HEAD</tag>
2628
</scm>
2729

2830
<properties>
29-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
30-
<maven.compiler.source>1.8</maven.compiler.source>
31-
<maven.compiler.target>1.8</maven.compiler.target>
31+
<maven.source.skip>true</maven.source.skip>
32+
<maven.javadoc.skip>true</maven.javadoc.skip>
3233
<maven.install.skip>true</maven.install.skip>
3334
<maven.deploy.skip>true</maven.deploy.skip>
3435
<maven.site.skip>true</maven.site.skip>
35-
<graylog2.plugin-dir>/usr/share/graylog-server/plugin</graylog2.plugin-dir>
36-
<graylog2.version>2.0.0</graylog2.version>
36+
37+
<graylog.version>2.4.0</graylog.version>
3738
</properties>
3839

3940
<dependencies>
4041
<dependency>
41-
<groupId>net.sf.xenqtt</groupId>
42+
<groupId>net.xenqtt</groupId>
4243
<artifactId>xenqtt</artifactId>
43-
<version>0.9.7</version>
44+
<version>1.0.0</version>
4445
</dependency>
4546
<dependency>
46-
<groupId>org.graylog2</groupId>
47-
<artifactId>graylog2-server</artifactId>
48-
<version>${graylog2.version}</version>
47+
<groupId>com.google.auto.service</groupId>
48+
<artifactId>auto-service</artifactId>
49+
<version>${auto-service.version}</version>
4950
<scope>provided</scope>
5051
</dependency>
5152
<dependency>
52-
<groupId>com.google.auto.service</groupId>
53-
<artifactId>auto-service</artifactId>
54-
<version>1.0-rc2</version>
53+
<groupId>com.google.auto.value</groupId>
54+
<artifactId>auto-value</artifactId>
55+
<version>${auto-value.version}</version>
5556
<scope>provided</scope>
5657
</dependency>
5758
<dependency>
5859
<groupId>junit</groupId>
5960
<artifactId>junit</artifactId>
60-
<version>4.12</version>
61+
<version>${junit.version}</version>
6162
<scope>test</scope>
6263
</dependency>
6364
<dependency>
6465
<groupId>org.mockito</groupId>
6566
<artifactId>mockito-core</artifactId>
66-
<version>2.0.52-beta</version>
67+
<version>${mockito.version}</version>
6768
<scope>test</scope>
6869
</dependency>
6970
</dependencies>
7071
<build>
72+
<resources>
73+
<resource>
74+
<directory>src/main/resources</directory>
75+
<filtering>true</filtering>
76+
</resource>
77+
</resources>
7178
<plugins>
7279
<plugin>
7380
<groupId>org.apache.maven.plugins</groupId>
7481
<artifactId>maven-compiler-plugin</artifactId>
75-
<version>3.5.1</version>
7682
<configuration>
7783
<annotationProcessors>
78-
<annotationProcessor>com.google.auto.service.processor.AutoServiceProcessor
79-
</annotationProcessor>
84+
<annotationProcessor>com.google.auto.service.processor.AutoServiceProcessor</annotationProcessor>
85+
<annotationProcessor>com.google.auto.value.processor.AutoValueProcessor</annotationProcessor>
8086
</annotationProcessors>
8187
</configuration>
8288
</plugin>
89+
<plugin>
90+
<groupId>org.apache.maven.plugins</groupId>
91+
<artifactId>maven-jar-plugin</artifactId>
92+
<configuration>
93+
<archive>
94+
<manifestEntries>
95+
<Graylog-Plugin-Properties-Path>${project.groupId}.${project.artifactId}</Graylog-Plugin-Properties-Path>
96+
</manifestEntries>
97+
</archive>
98+
</configuration>
99+
</plugin>
83100
<plugin>
84101
<groupId>org.apache.maven.plugins</groupId>
85102
<artifactId>maven-shade-plugin</artifactId>
86-
<version>2.4.3</version>
87103
<configuration>
88-
<minimizeJar>true</minimizeJar>
104+
<createDependencyReducedPom>false</createDependencyReducedPom>
105+
<minimizeJar>false</minimizeJar>
89106
</configuration>
90107
<executions>
91108
<execution>
92109
<phase>package</phase>
93110
<goals>
94111
<goal>shade</goal>
95112
</goals>
113+
<configuration>
114+
<transformers>
115+
<transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
116+
</transformers>
117+
</configuration>
96118
</execution>
97119
</executions>
98120
</plugin>
99-
100-
<plugin>
101-
<groupId>org.apache.maven.plugins</groupId>
102-
<artifactId>maven-release-plugin</artifactId>
103-
<version>2.5.2</version>
104-
<configuration>
105-
<autoVersionSubmodules>true</autoVersionSubmodules>
106-
<mavenExecutorId>forked-path</mavenExecutorId>
107-
<tagNameFormat>@{project.version}</tagNameFormat>
108-
<preparationGoals>clean test</preparationGoals>
109-
<goals>package</goals>
110-
</configuration>
111-
</plugin>
112-
113-
<plugin>
114-
<groupId>org.vafer</groupId>
115-
<artifactId>jdeb</artifactId>
116-
<version>1.5</version>
117-
<configuration>
118-
<deb>${project.build.directory}/${project.artifactId}-${project.version}.deb</deb>
119-
<dataSet>
120-
<data>
121-
<src>${project.build.directory}/</src>
122-
<includes>${project.build.finalName}.jar</includes>
123-
<type>directory</type>
124-
<mapper>
125-
<type>perm</type>
126-
<prefix>${graylog2.plugin-dir}</prefix>
127-
<filemode>644</filemode>
128-
<user>root</user>
129-
<group>root</group>
130-
</mapper>
131-
</data>
132-
</dataSet>
133-
</configuration>
134-
</plugin>
135-
136-
<plugin>
137-
<groupId>org.codehaus.mojo</groupId>
138-
<artifactId>rpm-maven-plugin</artifactId>
139-
<version>2.1.5</version>
140-
<configuration>
141-
<group>Application/Internet</group>
142-
<prefix>/usr</prefix>
143-
<defineStatements>
144-
<defineStatement>_unpackaged_files_terminate_build 0</defineStatement>
145-
<defineStatement>_binaries_in_noarch_packages_terminate_build 0</defineStatement>
146-
</defineStatements>
147-
<defaultFilemode>644</defaultFilemode>
148-
<defaultDirmode>755</defaultDirmode>
149-
<defaultUsername>root</defaultUsername>
150-
<defaultGroupname>root</defaultGroupname>
151-
<mappings>
152-
<mapping>
153-
<directory>${graylog2.plugin-dir}</directory>
154-
<sources>
155-
<source>
156-
<location>${project.build.directory}/</location>
157-
<includes>
158-
<include>${project.build.finalName}.jar</include>
159-
</includes>
160-
</source>
161-
</sources>
162-
</mapping>
163-
</mappings>
164-
</configuration>
165-
</plugin>
166121
</plugins>
167122
</build>
168123
</project>

src/main/java/org/graylog2/inputs/mqtt/ClientListener.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@
22

33
import com.codahale.metrics.Meter;
44
import com.codahale.metrics.MetricRegistry;
5-
import net.sf.xenqtt.client.MqttClient;
6-
import net.sf.xenqtt.client.MqttClientListener;
7-
import net.sf.xenqtt.client.PublishMessage;
8-
import net.sf.xenqtt.client.Subscription;
9-
import net.sf.xenqtt.message.ConnectReturnCode;
5+
import net.xenqtt.client.MqttClient;
6+
import net.xenqtt.client.MqttClientListener;
7+
import net.xenqtt.client.PublishMessage;
8+
import net.xenqtt.client.Subscription;
9+
import net.xenqtt.message.ConnectReturnCode;
1010
import org.graylog2.plugin.inputs.MessageInput;
1111
import org.graylog2.plugin.journal.RawMessage;
1212
import org.slf4j.Logger;
1313
import org.slf4j.LoggerFactory;
1414

15-
import java.util.Arrays;
1615
import java.util.List;
1716

1817
import static com.codahale.metrics.MetricRegistry.name;

src/main/java/org/graylog2/inputs/mqtt/MQTTGELFInput.java

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,15 @@
11
package org.graylog2.inputs.mqtt;
22

33
import com.codahale.metrics.MetricRegistry;
4-
import com.google.common.annotations.VisibleForTesting;
5-
import com.google.common.base.Splitter;
6-
import com.google.common.collect.ImmutableList;
7-
import com.google.common.collect.Maps;
8-
import com.google.common.hash.Hashing;
94
import com.google.inject.assistedinject.Assisted;
105
import com.google.inject.assistedinject.AssistedInject;
11-
import net.sf.xenqtt.client.AsyncMqttClient;
12-
import net.sf.xenqtt.client.MqttClient;
13-
import net.sf.xenqtt.client.MqttClientConfig;
14-
import net.sf.xenqtt.client.Subscription;
15-
import net.sf.xenqtt.message.ConnectReturnCode;
16-
import net.sf.xenqtt.message.QoS;
176
import org.graylog2.inputs.codecs.GelfCodec;
187
import org.graylog2.plugin.LocalMetricRegistry;
198
import org.graylog2.plugin.ServerStatus;
20-
import org.graylog2.plugin.buffers.Buffer;
219
import org.graylog2.plugin.configuration.Configuration;
22-
import org.graylog2.plugin.configuration.ConfigurationException;
23-
import org.graylog2.plugin.configuration.ConfigurationRequest;
24-
import org.graylog2.plugin.configuration.fields.BooleanField;
25-
import org.graylog2.plugin.configuration.fields.ConfigurationField;
26-
import org.graylog2.plugin.configuration.fields.NumberField;
27-
import org.graylog2.plugin.configuration.fields.TextField;
2810
import org.graylog2.plugin.inputs.MessageInput;
29-
import org.graylog2.plugin.inputs.MisfireException;
30-
import org.graylog2.plugin.system.NodeId;
31-
import org.slf4j.Logger;
32-
import org.slf4j.LoggerFactory;
3311

3412
import javax.inject.Inject;
35-
import java.util.List;
36-
import java.util.Map;
3713

3814
public class MQTTGELFInput extends MessageInput {
3915
private static final String NAME = "MQTT TCP (GELF)";
@@ -63,7 +39,7 @@ public interface Factory extends MessageInput.Factory<MQTTGELFInput> {
6339
public static class Descriptor extends MessageInput.Descriptor {
6440
@Inject
6541
public Descriptor() {
66-
super(NAME, false, "");
42+
super(NAME, false, "https://github.com/graylog-labs/graylog-plugin-mqtt");
6743
}
6844
}
6945

src/main/java/org/graylog2/inputs/mqtt/MQTTInputMetadata.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import java.util.Set;
1010

1111
public class MQTTInputMetadata implements PluginMetaData {
12+
private static final String PLUGIN_PROPERTIES = "org.graylog.plugins.graylog-plugin-mqtt/graylog-plugin.properties";
13+
1214
@Override
1315
public String getUniqueId() {
1416
return MQTTGELFInput.class.getCanonicalName();
@@ -31,7 +33,7 @@ public URI getURL() {
3133

3234
@Override
3335
public Version getVersion() {
34-
return new Version(2, 0, 0);
36+
return Version.fromPluginProperties(getClass(), PLUGIN_PROPERTIES, "version", Version.from(1, 0, 0));
3537
}
3638

3739
@Override
@@ -41,7 +43,7 @@ public String getDescription() {
4143

4244
@Override
4345
public Version getRequiredVersion() {
44-
return new Version(2, 0, 0);
46+
return Version.fromPluginProperties(getClass(), PLUGIN_PROPERTIES, "graylog.version", Version.from(2, 4, 0));
4547
}
4648

4749
@Override

src/main/java/org/graylog2/inputs/mqtt/MQTTInputModule.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@
55
public class MQTTInputModule extends PluginModule {
66
@Override
77
protected void configure() {
8-
installTransport(transportMapBinder(), "mqtt-transport", MQTTTransport.class);
9-
installInput(inputsMapBinder(), MQTTGELFInput.class, MQTTGELFInput.Factory.class);
8+
addTransport("mqtt-transport", MQTTTransport.class, MQTTTransport.Config.class, MQTTTransport.Factory.class);
9+
10+
addMessageInput(MQTTGELFInput.class, MQTTGELFInput.Factory.class);
11+
addMessageInput(MQTTRawInput.class, MQTTRawInput.Factory.class);
12+
addMessageInput(MQTTSyslogInput.class, MQTTSyslogInput.Factory.class);
1013
}
1114
}

src/main/java/org/graylog2/inputs/mqtt/MQTTInputPlugin.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public PluginMetaData metadata() {
1515
return new MQTTInputMetadata();
1616
}
1717

18+
@Override
1819
public Collection<PluginModule> modules() {
1920
return ImmutableSet.<PluginModule>of(new MQTTInputModule());
2021
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package org.graylog2.inputs.mqtt;
2+
3+
import com.codahale.metrics.MetricRegistry;
4+
import com.google.inject.assistedinject.Assisted;
5+
import com.google.inject.assistedinject.AssistedInject;
6+
import org.graylog2.inputs.codecs.RawCodec;
7+
import org.graylog2.plugin.LocalMetricRegistry;
8+
import org.graylog2.plugin.ServerStatus;
9+
import org.graylog2.plugin.configuration.Configuration;
10+
import org.graylog2.plugin.inputs.MessageInput;
11+
12+
import javax.inject.Inject;
13+
14+
public class MQTTRawInput extends MessageInput {
15+
private static final String NAME = "MQTT TCP (Raw/Plaintext)";
16+
17+
@AssistedInject
18+
public MQTTRawInput(final MetricRegistry metricRegistry,
19+
@Assisted Configuration configuration,
20+
MQTTTransport.Factory mqttTransportFactory,
21+
RawCodec.Factory rawCodecFactory,
22+
LocalMetricRegistry localRegistry,
23+
Config config,
24+
Descriptor descriptor, ServerStatus serverStatus) {
25+
super(metricRegistry, configuration, mqttTransportFactory.create(configuration), localRegistry, rawCodecFactory.create(configuration), config, descriptor, serverStatus);
26+
}
27+
28+
public interface Factory extends MessageInput.Factory<MQTTRawInput> {
29+
@Override
30+
MQTTRawInput create(Configuration configuration);
31+
32+
@Override
33+
Config getConfig();
34+
35+
@Override
36+
Descriptor getDescriptor();
37+
}
38+
39+
public static class Descriptor extends MessageInput.Descriptor {
40+
@Inject
41+
public Descriptor() {
42+
super(NAME, false, "https://github.com/graylog-labs/graylog-plugin-mqtt");
43+
}
44+
}
45+
46+
public static class Config extends MessageInput.Config {
47+
@Inject
48+
public Config(MQTTTransport.Factory transport, RawCodec.Factory codec) {
49+
super(transport.getConfig(), codec.getConfig());
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)