Skip to content
This repository was archived by the owner on Jun 1, 2024. It is now read-only.

Commit 0763a17

Browse files
authored
Use apikey to access elastic search (#545)
* Update ElasticsearchSinkOptions.cs * Update ElasticsearchSinkState.cs Use apikey to access elasticsearch * Update ElasticsearchSinkOptions.cs * Update Elasticsearch6XUsing7X.cs for integration test * Update Elasticsearch7XUsing6X.cs For integration test
1 parent 2182854 commit 0763a17

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

src/Serilog.Sinks.Elasticsearch/Sinks/ElasticSearch/ElasticsearchSinkOptions.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,15 @@ public int QueueSizeLimit
281281
/// </summary>
282282
public RollingInterval BufferFileRollingInterval { get; set; }
283283

284+
/// <summary>
285+
/// Apikey to access elasticsearch, the value is encoded
286+
/// If your elasticsearch can be accessed using user and password, you access via url like this: http://user:password@localhost
287+
/// For another choice, you can using a apiKey, which can be created in kibana: POST /security/api_key { "name": "aaa-apikeys", "role_descriptors": { "abc-shared-application": { "cluster": [ "all" ], "index": [ { "names": [ "abc_share*" ], "privileges": [ "all" ] } ] } } }
288+
/// then you can get the apikey coded by base64 it like this: aFlBbDVvY0JOblduWHdpZnNLOUk6cEt2Y01tYVlRQ3FsWlF0MVVjRkN034==
289+
/// For more detail about apiKey, see: https://www.elastic.co/guide/en/apm/server/7.15/api-key.html
290+
/// </summary>
291+
public string Apikey { get; set; }
292+
284293
/// <summary>
285294
/// Configures the elasticsearch sink defaults
286295
/// </summary>

src/Serilog.Sinks.Elasticsearch/Sinks/ElasticSearch/ElasticsearchSinkState.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ private ElasticsearchSinkState(ElasticsearchSinkOptions options)
8686
if (options.ModifyConnectionSettings != null)
8787
configuration = options.ModifyConnectionSettings(configuration);
8888

89+
if (!string.IsNullOrEmpty(options.Apikey))
90+
configuration = configuration.ApiKeyAuthentication(new ApiKeyAuthenticationCredentials(options.Apikey));
91+
8992
configuration.ThrowExceptions();
9093

9194
_client = new ElasticLowLevelClient(configuration);

test/Serilog.Sinks.Elasticsearch.IntegrationTests/Elasticsearch6/Elasticsearch6XUsing7X.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public SetupSerilog()
5454
o.DetectElasticsearchVersion = true;
5555
o.AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7;
5656
o.AutoRegisterTemplate = true;
57+
o.ApiKey = "aWQ6d3d3ZGRkZGRkZGRkZA==";
5758
})
5859
);
5960
var logger = loggerConfig.CreateLogger();
@@ -68,4 +69,4 @@ public SetupSerilog()
6869
}
6970
}
7071
}
71-
}
72+
}

test/Serilog.Sinks.Elasticsearch.IntegrationTests/Elasticsearch7/Elasticsearch7XUsing6X.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ public SetupSerilog()
5151
o.DetectElasticsearchVersion = true;
5252
o.AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv6;
5353
o.AutoRegisterTemplate = true;
54+
o.ApiKey = "aWQ6d3d3ZGRkZGRkZGRkZA==";
5455
})
5556
);
5657
using (var logger = loggerConfig.CreateLogger())
@@ -65,4 +66,4 @@ public SetupSerilog()
6566
}
6667

6768
}
68-
}
69+
}

0 commit comments

Comments
 (0)