Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检索筛选的远程事件日志的最快方法_C#_Windows_Logging_.net Core - Fatal编程技术网

C# 检索筛选的远程事件日志的最快方法

C# 检索筛选的远程事件日志的最快方法,c#,windows,logging,.net-core,C#,Windows,Logging,.net Core,我需要从一些服务器的Security事件日志中检索一些事件日志(带有特定ID) 我已经对服务器循环进行了并行化,它工作得很好,速度也很快,但其中有两个具有巨大的保留策略(为完整注册表导出的EVTX文件超过10gb) 我使用如下循环获取日志: var eventIds=new[]{1,2,3,4} var eventIdQueryStr=string.Join(“or”,eventIds.Select(x=>$“EventID={x}”); var queryXPath=$“*[System[Ti

我需要从一些服务器的
Security
事件日志中检索一些事件日志(带有特定ID)

我已经对服务器循环进行了并行化,它工作得很好,速度也很快,但其中有两个具有巨大的保留策略(为完整注册表导出的EVTX文件超过10gb)

我使用如下循环获取日志:

var eventIds=new[]{1,2,3,4}
var eventIdQueryStr=string.Join(“or”,eventIds.Select(x=>$“EventID={x}”);
var queryXPath=$“*[System[TimeCreated[@SystemTime>='{dateFrom:s}'和@SystemTime<'{dateTo:s}']]和*[System[{eventIdQueryStr}]]”;
使用var session=neweventlogsession(
服务器名,
领域,
用户,
密码,
SessionAuthentication.Default);
var eventsQuery=new EventLogQuery(“Security”,PathType.LogName,queryXPath){Session=Session};
使用(var logReader=neweventlogreader(eventsQuery))
{
for(var eventDetail=logReader.ReadEvent();
eventDetail!=null;
eventDetail=logReader.ReadEvent()
{
//事件列表是一个“ConcurrentBag”`
_eventList.Add(eventDetail);
/*其他与显示进度无关的内容,与流程速度无关*/
}
}
/*正在分析此处的事件列表。。。与问题无关*/
这是可行的,但速度非常慢。我通过VPN每小时为每台服务器(不包括解析,这就是为什么它在这里不相关)获得大约100万条记录(通过xpath查询过滤)

我知道Windows上的事件日志不是索引数据库,因此查询不会真正加快速度(只是过滤它们),但这是我能得到的最快速度(使用几种不同的技术,包括在远程服务器上转储整个注册表、复制文件和/或通过网络直接解析)

我有没有遗漏什么可以加快速度的东西

我已经在.NETCore3.0和.NETFramework4.8上对此进行了测试,结果没有任何差异。使用带有相同xpath查询的
wevtutil
命令行(使用
/q:
)可以获得类似的性能,但我无法想象这是最快的

特别是保留率高的服务器是具有大量空闲CPU和RAM的双xeon服务器,因此我非常肯定这不是硬件性能问题

如果有任何提示,我将不胜感激

PS:当我写“进度显示”部分时,它们是不相关的,因为我试图删除它们(以防万一输出进度是罪魁祸首),但过程速度没有相关差异