ucp-logstash-pipeline-test 0.1.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +46 -0
- data/Gemfile +12 -0
- data/README.md +268 -0
- data/VERSION +1 -0
- data/lib/logstash/outputs/microsoft-sentinel-log-analytics-logstash-output-plugin.rb +14 -0
- data/lib/logstash_registry.rb +18 -0
- data/lib/microsoft-sentinel-log-analytics-logstash-output-plugin_jars.rb +5 -0
- data/logstash-output-microsoft-sentinel-log-analytics-logstash-output-plugin.gemspec +22 -0
- data/vendor/jar-dependencies/org/logstashplugins/microsoft-sentinel-log-analytics-logstash-output-plugin/2.5.0/microsoft-sentinel-log-analytics-logstash-output-plugin-2.5.0.jar +0 -0
- metadata +106 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: d41c9c9d867b814d7e66ac047d36621c1d7b0842c137e625bbc674209eb8ebe8
|
|
4
|
+
data.tar.gz: 568a5b601009b575883923a4d6a539b66b2f11184f8dbcfb98624bf24c556e17
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: d4d90723426f9a197aeaaae0509ad4c6c90e10088821baf2aaf29901c5285e74cc68ebaea26a378e8eb76252e9deebc5492fac97f7b7cead362082807a379c89
|
|
7
|
+
data.tar.gz: 5d7a33e886b7127b3f253a0e383c958da76bc625dc7594809a4e91a528ba3d530520aecb6ce5fa65ea4c9b5d0d696590cb002f36ee40eda89b325e867ef9b910
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
## 2.5.0
|
|
2
|
+
- Added optional per-plugin proxy configuration for authentication and ingestion traffic using `proxy`, `proxy_aad`, and `proxy_endpoint`.
|
|
3
|
+
- Updated Netty handler, HTTP, HTTP/2, and DNS components to 4.1.136.Final.
|
|
4
|
+
- Updated Jackson Databind and Jackson Core to 2.18.8.
|
|
5
|
+
|
|
6
|
+
## 2.4.0
|
|
7
|
+
- Worker threads now run as bounded, executor-scheduled passes: recoverable exceptions are logged and the worker resumes on the next cycle; fatal JVM errors are logged and re-thrown.
|
|
8
|
+
- Fixed graceful shutdown so in-flight batches are drained (batchers, then unifiers, then senders) before workers stop, bounded by `max_graceful_shutdown_time_seconds`.
|
|
9
|
+
- Added configurable upload timeouts `connect_timeout_seconds` (default `15`) and `write_timeout_seconds` (default `60`); connect/write timeouts are retried.
|
|
10
|
+
- Added thread id, exception type, batch size, and DCR stream to batch failure logs.
|
|
11
|
+
|
|
12
|
+
## 2.3.3
|
|
13
|
+
- Fixed loss of numeric and boolean type fidelity: fields backed by Logstash's internal JRuby types (e.g. ports, byte counts) are now preserved as native JSON numbers/booleans instead of being converted to strings, ensuring reliable ingestion into DCRs with typed columns.
|
|
14
|
+
|
|
15
|
+
## 2.3.2
|
|
16
|
+
- Fixed silent worker thread death caused by uncaught exceptions in worker processing loop.
|
|
17
|
+
- Fixed NullPointerException in SenderWorker when Azure returns a LogsUploadException with a null HTTP response.
|
|
18
|
+
- Added resilient error handling with consecutive error tracking to reduce permanent worker failure.
|
|
19
|
+
- Added optional Id configuration value for telemetry.
|
|
20
|
+
- Added DCR stream to sent-batches logging.
|
|
21
|
+
|
|
22
|
+
## 2.3.0
|
|
23
|
+
- Enabled functionality with logstash 9.4.
|
|
24
|
+
- Bumped dependency versions for external libraries (azure-sdk-bom, logback, slf4j, Netty).
|
|
25
|
+
|
|
26
|
+
## 2.2.1
|
|
27
|
+
- Adds info-level logging line when batches are successfully sent.
|
|
28
|
+
|
|
29
|
+
## 2.2.0
|
|
30
|
+
- Adds ability to use either new or old configuration values.
|
|
31
|
+
|
|
32
|
+
## 2.1.2
|
|
33
|
+
- Documentation updates.
|
|
34
|
+
|
|
35
|
+
## 2.1.1
|
|
36
|
+
- Improved efficiency.
|
|
37
|
+
|
|
38
|
+
## 2.1.0
|
|
39
|
+
- Fixed event normalization.
|
|
40
|
+
|
|
41
|
+
## 2.0.0
|
|
42
|
+
- Refactored the plugin from Ruby to Java.
|
|
43
|
+
- Added ManagedIdentity authentication.
|
|
44
|
+
|
|
45
|
+
## 1.x.x (Ruby - deprecated)
|
|
46
|
+
The 1.x.x releases are the deprecated Ruby version of this plugin. For the 1.x.x changelog and documentation, see [microsoft-sentinel-log-analytics-logstash-output-plugin](../microsoft-sentinel-log-analytics-logstash-output-plugin/CHANGELOG.md).
|
data/Gemfile
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# AUTOGENERATED BY THE GRADLE SCRIPT. EDITS WILL BE OVERWRITTEN.
|
|
2
|
+
source 'https://rubygems.org'
|
|
3
|
+
|
|
4
|
+
gemspec
|
|
5
|
+
|
|
6
|
+
logstash_path = ENV["LOGSTASH_PATH"] || "../../logstash"
|
|
7
|
+
use_logstash_source = ENV["LOGSTASH_SOURCE"] && ENV["LOGSTASH_SOURCE"].to_s == "1"
|
|
8
|
+
|
|
9
|
+
if Dir.exist?(logstash_path) && use_logstash_source
|
|
10
|
+
gem 'logstash-core', :path => "#{logstash_path}/logstash-core"
|
|
11
|
+
gem 'logstash-core-plugin-api', :path => "#{logstash_path}/logstash-core-plugin-api"
|
|
12
|
+
end
|
data/README.md
ADDED
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
# Microsoft Sentinel Output Plugin for Logstash
|
|
2
|
+
|
|
3
|
+
Microsoft Sentinel provides a new output plugin for Logstash. Use this output plugin to send any log via Logstash to the Microsoft Sentinel/Log Analytics workspace. This is done with the Log Analytics DCR-based API.
|
|
4
|
+
You may send logs to custom or standard tables.
|
|
5
|
+
|
|
6
|
+
Plugin version: v2.5.0
|
|
7
|
+
Released on: 2026-08-04
|
|
8
|
+
|
|
9
|
+
This plugin is currently in development and is free to use. We request and appreciate feedback from users.
|
|
10
|
+
|
|
11
|
+
## Installation Instructions
|
|
12
|
+
1) Install the plugin
|
|
13
|
+
2) Create a sample file
|
|
14
|
+
3) Create the required DCR-related resources
|
|
15
|
+
4) Configure Logstash configuration file
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## 1. Install the plugin
|
|
19
|
+
|
|
20
|
+
Microsoft Sentinel provides Logstash output plugin to Log analytics workspace using DCR based logs API.
|
|
21
|
+
|
|
22
|
+
The plugin is published on [RubyGems](https://rubygems.org/gems/microsoft-sentinel-log-analytics-logstash-output-plugin/versions/2.5.0-java). To install to an existing logstash installation, run `logstash-plugin install microsoft-sentinel-log-analytics-logstash-output-plugin`.
|
|
23
|
+
|
|
24
|
+
If you do not have a direct internet connection, you can install the plugin to another logstash installation, and then export and import a plugin bundle to the offline host. For more information, see [Logstash Offline Plugin Management instruction](<https://www.elastic.co/guide/en/logstash/current/offline-plugins.html>).
|
|
25
|
+
|
|
26
|
+
Microsoft Sentinel's Logstash output plugin supports the following versions
|
|
27
|
+
- 7.0 - 7.17.13
|
|
28
|
+
- 8.0 - 8.9 (NOTE: these versions require a security update, according to Logstash!)
|
|
29
|
+
- 8.11 - 8.15 (NOTE: these versions require a security update, according to Logstash!)
|
|
30
|
+
- 8.19.2 (NOTE: this version requires a security update, according to Logstash!)
|
|
31
|
+
- 9.0.8 (NOTE: this version requires a security update, according to Logstash!)
|
|
32
|
+
- 9.1.10 (NOTE: this version requires a security update, according to Logstash!)
|
|
33
|
+
- 9.2.4 - 9.2.5 (NOTE: these versions require a security update, according to Logstash! [Security Update](https://discuss.elastic.co/t/logstash-8-19-14-9-2-8-9-3-3-security-update-esa-2026-29/385816))
|
|
34
|
+
- 9.3.3
|
|
35
|
+
- 9.4.0
|
|
36
|
+
|
|
37
|
+
Please note that when using Logstash 8, it is recommended to disable ECS in the pipeline. For more information refer to [Logstash documentation.](<https://www.elastic.co/guide/en/logstash/8.4/ecs-ls.html>)
|
|
38
|
+
|
|
39
|
+
## 2. Create a sample file
|
|
40
|
+
To create a sample file, follow the following steps:
|
|
41
|
+
1) Copy the output plugin configuration below to your Logstash configuration file:
|
|
42
|
+
```
|
|
43
|
+
output {
|
|
44
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
45
|
+
create_sample_file => true
|
|
46
|
+
sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/var/log" for Linux.
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
Note: make sure that the path exists before creating the sample file.
|
|
51
|
+
2) Start Logstash. The plugin will collect up to 10 records to a sample.
|
|
52
|
+
3) The file named "sampleFile<epoch seconds>.json" in the configured path will be created once there are 10 events to sample or when the Logstash process exited gracefully. (for example: "c:\temp\sampleFile1648453501.json").
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Configurations:
|
|
56
|
+
The following parameters are optional and should be used to create a sample file.
|
|
57
|
+
- **create_sample_file** - Boolean, False by default. When enabled, up to 10 events will be written to a sample json file.
|
|
58
|
+
- **sample_file_path** - String, Empty by default. Required when create_sample_file is enabled. Should include a valid path in which to place the sample file generated.
|
|
59
|
+
|
|
60
|
+
### Complete example
|
|
61
|
+
1. set the pipeline.conf with the following configuration:
|
|
62
|
+
```
|
|
63
|
+
input {
|
|
64
|
+
generator {
|
|
65
|
+
lines => [ "This is a test log message"]
|
|
66
|
+
count => 10
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
output {
|
|
71
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
72
|
+
create_sample_file => true
|
|
73
|
+
sample_file_path => "<enter the path to the file in which the sample data will be written>" #for example: "c:\\temp" (for windows) or "/var/log" for Linux.
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
2. the following sample file will be generated:
|
|
79
|
+
```
|
|
80
|
+
[
|
|
81
|
+
{
|
|
82
|
+
"host": "logstashMachine",
|
|
83
|
+
"sequence": 0,
|
|
84
|
+
"message": "This is a test log message",
|
|
85
|
+
"ls_timestamp": "2022-10-29T13:19:28.116Z",
|
|
86
|
+
"ls_version": "1"
|
|
87
|
+
},
|
|
88
|
+
...
|
|
89
|
+
]
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
## 3. Create the required DCR-related resources
|
|
93
|
+
To configure Microsoft Sentinel Logstash plugin you first need to create the DCR-related resources. To create these resources, follow one of the following tutorials:
|
|
94
|
+
1) To ingest the data to a custom table use [Tutorial - Send custom logs to Azure Monitor Logs (preview) - Azure Monitor | Microsoft Docs](<https://docs.microsoft.com/azure/azure-monitor/logs/tutorial-custom-logs>) tutorial. Note that as part of creating the table and the DCR you will need to provide the sample file that you've created in the previous section.
|
|
95
|
+
2) To ingest the data to a standard table like Syslog or CommonSecurityLog use [Tutorial - Send custom logs to Azure Monitor Logs using resource manager templates - Azure Monitor | Microsoft Docs](<https://docs.microsoft.com/azure/azure-monitor/logs/tutorial-custom-logs-api>).
|
|
96
|
+
|
|
97
|
+
*Note:* The identity (service principal or managed identity) must have the **Monitoring Metrics Publisher** role on the target DCR:
|
|
98
|
+
|
|
99
|
+
az role assignment create \
|
|
100
|
+
--assignee <object-id-of-identity> \
|
|
101
|
+
--role "Monitoring Metrics Publisher" \
|
|
102
|
+
--scope "/subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.Insights/dataCollectionRules/<dcr-name>"
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
## 4. Configure Logstash configuration file
|
|
106
|
+
|
|
107
|
+
Add the `microsoft-sentinel-log-analytics-logstash-output-plugin` block to the `output` section of your Logstash configuration file (e.g., `logstash.conf`). The plugin requires three values from your Azure DCR resources plus authentication credentials depending on your method.
|
|
108
|
+
|
|
109
|
+
### Required Config Values (needed for all methods)
|
|
110
|
+
|
|
111
|
+
| Key | Description |
|
|
112
|
+
|---|---|
|
|
113
|
+
| `data_collection_endpoint` | Your DCE logsIngestion URI |
|
|
114
|
+
| `dcr_id` | The immutable ID of your Data Collection Rule |
|
|
115
|
+
| `stream_name` | The stream name from your DCR (e.g., `Custom-MyTableRawData_CL`) |
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
### Authentication Examples
|
|
120
|
+
|
|
121
|
+
The plugin auto-detects the auth method based on which config values are present.
|
|
122
|
+
|
|
123
|
+
#### Option 1: Client Secret (App Registration)
|
|
124
|
+
|
|
125
|
+
Provide `client_id`, `client_secret`, and `tenant_id` for your Azure App Registration / service principal.
|
|
126
|
+
|
|
127
|
+
output {
|
|
128
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
129
|
+
data_collection_endpoint => "https://<your-dce-name>.<region>.ingest.monitor.azure.com"
|
|
130
|
+
dcr_id => "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
131
|
+
stream_name => "Custom-MyTableRawData_CL"
|
|
132
|
+
client_id => "<your-app-client-id>"
|
|
133
|
+
client_secret => "<your-app-client-secret>"
|
|
134
|
+
tenant_id => "<your-azure-tenant-id>"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
#### Option 2: Managed Identity
|
|
140
|
+
|
|
141
|
+
When running on an Azure VM with a system-assigned managed identity, omit `client_id`, `client_secret`, and `tenant_id`. The plugin will automatically use the VM's managed identity.
|
|
142
|
+
|
|
143
|
+
output {
|
|
144
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
145
|
+
data_collection_endpoint => "https://<your-dce-name>.<region>.ingest.monitor.azure.com"
|
|
146
|
+
dcr_id => "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
147
|
+
stream_name => "Custom-MyTableRawData_CL"
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
#### Option 3: Client Secret + Sovereign Cloud
|
|
152
|
+
|
|
153
|
+
To authenticate against a sovereign cloud, add `azure_cloud`. Supported values: `AzurePublicCloud` (default), `AzureUSGovernment`, `AzureChinaCloud`, `AzureGermanyCloud`.
|
|
154
|
+
|
|
155
|
+
output {
|
|
156
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
157
|
+
data_collection_endpoint => "https://<your-dce-ingestion-endpoint>"
|
|
158
|
+
dcr_id => "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
159
|
+
stream_name => "Custom-MyTableRawData_CL"
|
|
160
|
+
client_id => "<your-app-client-id>"
|
|
161
|
+
client_secret => "<your-app-client-secret>"
|
|
162
|
+
tenant_id => "<your-tenant-id>"
|
|
163
|
+
azure_cloud => "AzureUSGovernment"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
#### Option 4: Managed Identity + Sovereign Cloud
|
|
168
|
+
|
|
169
|
+
output {
|
|
170
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
171
|
+
data_collection_endpoint => "https://<your-dce-ingestion-endpoint>"
|
|
172
|
+
dcr_id => "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
173
|
+
stream_name => "Custom-MyTableRawData_CL"
|
|
174
|
+
azure_cloud => "AzureUSGovernment"
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
---
|
|
178
|
+
Security notice: We recommend not to implicitly state client_id, client_secret, tenant_id, data_collection_endpoint, and dcr_id in your Logstash configuration for security reasons.
|
|
179
|
+
It is best to store this sensitive information in a Logstash KeyStore as described here- ['Secrets Keystore'](<https://www.elastic.co/guide/en/logstash/current/keystore.html>)
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Full Pipeline Example
|
|
184
|
+
|
|
185
|
+
A complete `logstash.conf` using client secret auth with a Beats input:
|
|
186
|
+
|
|
187
|
+
input {
|
|
188
|
+
beats {
|
|
189
|
+
port => 5044
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
filter {
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
output {
|
|
197
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
198
|
+
data_collection_endpoint => "https://my-dce.eastus2-1.ingest.monitor.azure.com"
|
|
199
|
+
dcr_id => "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
200
|
+
stream_name => "Custom-MyTableRawData_CL"
|
|
201
|
+
client_id => "619c1731-15ca-4403-9c61-xxxxxxxxxxxx"
|
|
202
|
+
client_secret => "xxxxxxxxxxxxxxxx"
|
|
203
|
+
tenant_id => "72f988bf-86f1-41af-91ab-xxxxxxxxxxxx"
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Optional Config Values
|
|
209
|
+
|
|
210
|
+
| Key | Default | Description |
|
|
211
|
+
|---|---|---|
|
|
212
|
+
| `azure_cloud` | `AzurePublicCloud` | Azure cloud environment |
|
|
213
|
+
| `proxy` | *(none)* | Optional. Base HTTP proxy URL applied to all plugin traffic. Format: `[http://][user:password@]host:port`. When unset, no proxy is used and behavior is unchanged |
|
|
214
|
+
| `proxy_aad` | *(value of `proxy`)* | Optional. HTTP proxy URL used only for Microsoft Entra ID (AAD) authentication/token traffic. Falls back to `proxy` when unset |
|
|
215
|
+
| `proxy_endpoint` | *(value of `proxy`)* | Optional. HTTP proxy URL used only for traffic to the Data Collection Endpoint. Falls back to `proxy` when unset |
|
|
216
|
+
| `keys_to_keep` | *(all)* | Array of field names to send (subset filtering) |
|
|
217
|
+
| `max_retries_num` | `3` | Max retry attempts for failed sends |
|
|
218
|
+
| `initial_wait_time_seconds` | `1` | Initial backoff between retries |
|
|
219
|
+
| `connect_timeout_seconds` | `15` | Timeout for establishing the connection to the ingestion endpoint. Bounds how long an upload can block in the connect phase; a resulting timeout is retried |
|
|
220
|
+
| `write_timeout_seconds` | `60` | Timeout for sending the request body to the ingestion endpoint. Bounds how long an upload can block in the write phase; a resulting timeout is retried |
|
|
221
|
+
| `max_graceful_shutdown_time_seconds` | `60` | Max wait for graceful shutdown |
|
|
222
|
+
| `max_waiting_time_for_batch_seconds` | `10` | Max wait before flushing a batch |
|
|
223
|
+
| `max_waiting_for_unifier_time_seconds` | `10` | Max wait before flushing the unifier |
|
|
224
|
+
| `max_batch_size` | `10000` | Maximum number of events per batch. When a batch reaches this size it is flushed immediately, regardless of the time window |
|
|
225
|
+
| `input_queue_capacity` | `50000` | Maximum capacity of the input queue. Bounds memory usage under high-volume ingestion. When full, back-pressure is applied to the Logstash pipeline |
|
|
226
|
+
| `internal_queue_capacity` | `500` | Maximum capacity of the internal queues between batcher, unifier, and sender workers. Bounds memory usage for in-flight batches |
|
|
227
|
+
| `worker_sleep_time_millis` | `10` | Delay between worker iterations |
|
|
228
|
+
| `batcher_workers_count` | *(auto)* | Number of batcher threads |
|
|
229
|
+
| `sender_workers_count` | *(auto)* | Number of sender threads |
|
|
230
|
+
| `unifier_workers_count` | *(auto)* | Number of unifier threads |
|
|
231
|
+
| `id` | `None` | A custom identification tag to be added to sent-batches logs |
|
|
232
|
+
|
|
233
|
+
### Proxy configuration
|
|
234
|
+
|
|
235
|
+
The proxy settings are **optional** and scoped to this plugin only. If you do not set any of them, the plugin behaves exactly as before and sends traffic directly (no proxy). This is useful when a single Logstash instance has multiple outputs and only the Microsoft Sentinel output needs to traverse a corporate proxy.
|
|
236
|
+
|
|
237
|
+
- `proxy` — base proxy applied to both authentication and ingestion traffic.
|
|
238
|
+
- `proxy_aad` — overrides the proxy used for Microsoft Entra ID (AAD) token requests; falls back to `proxy`.
|
|
239
|
+
- `proxy_endpoint` — overrides the proxy used for Data Collection Endpoint traffic; falls back to `proxy`.
|
|
240
|
+
|
|
241
|
+
Proxy URLs use the format `[http://][user:password@]host:port`. The scheme is optional and defaults to `http`; both host and port are required. Example:
|
|
242
|
+
|
|
243
|
+
output {
|
|
244
|
+
microsoft-sentinel-log-analytics-logstash-output-plugin {
|
|
245
|
+
data_collection_endpoint => "https://my-dce.eastus2-1.ingest.monitor.azure.com"
|
|
246
|
+
dcr_id => "dcr-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
|
247
|
+
stream_name => "Custom-MyTableRawData_CL"
|
|
248
|
+
client_id => "<your-app-client-id>"
|
|
249
|
+
client_secret => "<your-app-client-secret>"
|
|
250
|
+
tenant_id => "<your-azure-tenant-id>"
|
|
251
|
+
proxy => "http://proxyhost:8080"
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
Security note: if your proxy requires credentials, store them in the Logstash KeyStore rather than placing them in plaintext in the configuration file.
|
|
256
|
+
|
|
257
|
+
## Known issues
|
|
258
|
+
|
|
259
|
+
When using Logstash installed on a Docker image of Lite Ubuntu, the following warning may appear:
|
|
260
|
+
|
|
261
|
+
java.lang.RuntimeException: getprotobyname_r failed
|
|
262
|
+
|
|
263
|
+
To resolve it, use the following commands to install the *netbase* package within your Dockerfile:
|
|
264
|
+
```
|
|
265
|
+
USER root
|
|
266
|
+
RUN apt install netbase -y
|
|
267
|
+
```
|
|
268
|
+
For more information, see [JNR regression in Logstash 7.17.0 (Docker)](https://github.com/elastic/logstash/issues/13703).
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.5.0
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# AUTOGENERATED BY THE GRADLE SCRIPT. EDITS WILL BE OVERWRITTEN.
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
require "logstash/outputs/base"
|
|
4
|
+
require "logstash/namespace"
|
|
5
|
+
require "microsoft-sentinel-log-analytics-logstash-output-plugin_jars"
|
|
6
|
+
require "java"
|
|
7
|
+
|
|
8
|
+
class LogStash::Outputs::MicrosoftSentinelLogAnalyticsLogstashOutputPlugin < LogStash::Outputs::Base
|
|
9
|
+
config_name "microsoft-sentinel-log-analytics-logstash-output-plugin"
|
|
10
|
+
|
|
11
|
+
def self.javaClass
|
|
12
|
+
Java::org.logstashplugins.MicrosoftSentinelLogAnalyticsLogstashOutputPlugin.java_class
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# AUTOGENERATED BY THE GRADLE SCRIPT. EDITS WILL BE OVERWRITTEN.
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
require "logstash/plugins/registry"
|
|
4
|
+
|
|
5
|
+
# Workaround for elastic/logstash registry.rb#is_a_plugin? not handling
|
|
6
|
+
# Java plugin classes whose name uses dashes. Strip both '-' and '_'.
|
|
7
|
+
LogStash::Plugins::Registry.class_eval do
|
|
8
|
+
define_method(:is_a_plugin?) do |klass, name|
|
|
9
|
+
if klass.class == Java::JavaLang::Class
|
|
10
|
+
klass.simple_name.downcase == name.gsub(/[-_]/, '')
|
|
11
|
+
else
|
|
12
|
+
klass.ancestors.include?(LogStash::Plugin) && klass.respond_to?(:config_name) && klass.config_name == name
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
require "logstash/outputs/microsoft-sentinel-log-analytics-logstash-output-plugin"
|
|
18
|
+
LogStash::PLUGIN_REGISTRY.add(:output, "microsoft-sentinel-log-analytics-logstash-output-plugin", LogStash::Outputs::MicrosoftSentinelLogAnalyticsLogstashOutputPlugin)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# AUTOGENERATED BY THE GRADLE SCRIPT. EDITS WILL BE OVERWRITTEN.
|
|
2
|
+
Gem::Specification.new do |s|
|
|
3
|
+
s.name = 'ucp-logstash-pipeline-test'
|
|
4
|
+
s.version = '0.1.1'
|
|
5
|
+
s.licenses = ['Apache-2.0']
|
|
6
|
+
s.summary = 'Microsoft Sentinel Log Analytics output plugin'
|
|
7
|
+
s.description = 'Microsoft Sentinel provides a new output plugin for Logstash. Use this output plugin to send any log via Logstash to the Microsoft Sentinel/Log Analytics workspace. This is done with the Log Analytics DCR-based API.'
|
|
8
|
+
s.authors = ['Microsoft']
|
|
9
|
+
s.email = ['msg-ucp@service.microsoft.com']
|
|
10
|
+
s.platform = 'java'
|
|
11
|
+
s.require_paths = ['lib', 'vendor/jar-dependencies']
|
|
12
|
+
|
|
13
|
+
s.files = Dir["lib/**/*","*.gemspec","*.md","CONTRIBUTORS","Gemfile","LICENSE","NOTICE.TXT", "vendor/jar-dependencies/**/*.jar", "vendor/jar-dependencies/**/*.rb", "VERSION", "docs/**/*"]
|
|
14
|
+
|
|
15
|
+
# Special flag to let us know this is actually a logstash plugin
|
|
16
|
+
s.metadata = { 'logstash_plugin' => 'true', 'logstash_group' => 'output', 'java_plugin' => 'true'}
|
|
17
|
+
|
|
18
|
+
# Gem dependencies
|
|
19
|
+
s.add_runtime_dependency "logstash-core-plugin-api", ">= 1.60", "<= 2.99"
|
|
20
|
+
s.add_runtime_dependency 'jar-dependencies'
|
|
21
|
+
s.add_development_dependency 'logstash-devutils'
|
|
22
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: ucp-logstash-pipeline-test
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.1
|
|
5
|
+
platform: java
|
|
6
|
+
authors:
|
|
7
|
+
- Microsoft
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-08-26 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.60'
|
|
19
|
+
- - "<="
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '2.99'
|
|
22
|
+
name: logstash-core-plugin-api
|
|
23
|
+
type: :runtime
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - ">="
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '1.60'
|
|
30
|
+
- - "<="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '2.99'
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
requirement: !ruby/object:Gem::Requirement
|
|
35
|
+
requirements:
|
|
36
|
+
- - ">="
|
|
37
|
+
- !ruby/object:Gem::Version
|
|
38
|
+
version: '0'
|
|
39
|
+
name: jar-dependencies
|
|
40
|
+
type: :runtime
|
|
41
|
+
prerelease: false
|
|
42
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
- !ruby/object:Gem::Dependency
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
requirements:
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: '0'
|
|
53
|
+
name: logstash-devutils
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
description: Microsoft Sentinel provides a new output plugin for Logstash. Use this
|
|
62
|
+
output plugin to send any log via Logstash to the Microsoft Sentinel/Log Analytics
|
|
63
|
+
workspace. This is done with the Log Analytics DCR-based API.
|
|
64
|
+
email:
|
|
65
|
+
- msg-ucp@service.microsoft.com
|
|
66
|
+
executables: []
|
|
67
|
+
extensions: []
|
|
68
|
+
extra_rdoc_files: []
|
|
69
|
+
files:
|
|
70
|
+
- CHANGELOG.md
|
|
71
|
+
- Gemfile
|
|
72
|
+
- README.md
|
|
73
|
+
- VERSION
|
|
74
|
+
- lib/logstash/outputs/microsoft-sentinel-log-analytics-logstash-output-plugin.rb
|
|
75
|
+
- lib/logstash_registry.rb
|
|
76
|
+
- lib/microsoft-sentinel-log-analytics-logstash-output-plugin_jars.rb
|
|
77
|
+
- logstash-output-microsoft-sentinel-log-analytics-logstash-output-plugin.gemspec
|
|
78
|
+
- vendor/jar-dependencies/org/logstashplugins/microsoft-sentinel-log-analytics-logstash-output-plugin/2.5.0/microsoft-sentinel-log-analytics-logstash-output-plugin-2.5.0.jar
|
|
79
|
+
homepage:
|
|
80
|
+
licenses:
|
|
81
|
+
- Apache-2.0
|
|
82
|
+
metadata:
|
|
83
|
+
logstash_plugin: 'true'
|
|
84
|
+
logstash_group: output
|
|
85
|
+
java_plugin: 'true'
|
|
86
|
+
post_install_message:
|
|
87
|
+
rdoc_options: []
|
|
88
|
+
require_paths:
|
|
89
|
+
- lib
|
|
90
|
+
- vendor/jar-dependencies
|
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
97
|
+
requirements:
|
|
98
|
+
- - ">="
|
|
99
|
+
- !ruby/object:Gem::Version
|
|
100
|
+
version: '0'
|
|
101
|
+
requirements: []
|
|
102
|
+
rubygems_version: 3.3.26
|
|
103
|
+
signing_key:
|
|
104
|
+
specification_version: 4
|
|
105
|
+
summary: Microsoft Sentinel Log Analytics output plugin
|
|
106
|
+
test_files: []
|