|
|
|
@ -140,6 +140,7 @@ namespace CncCollector.Core
|
|
|
|
bool success = false;
|
|
|
|
bool success = false;
|
|
|
|
string errorMsg = null;
|
|
|
|
string errorMsg = null;
|
|
|
|
long durationMs = 0;
|
|
|
|
long durationMs = 0;
|
|
|
|
|
|
|
|
int? httpStatusCode = null;
|
|
|
|
int retryCount = _config.CollectRetryCount;
|
|
|
|
int retryCount = _config.CollectRetryCount;
|
|
|
|
|
|
|
|
|
|
|
|
for (int attempt = 0; attempt <= retryCount; attempt++)
|
|
|
|
for (int attempt = 0; attempt <= retryCount; attempt++)
|
|
|
|
@ -158,6 +159,7 @@ namespace CncCollector.Core
|
|
|
|
var response = client.GetAsync(_address.Url).Result;
|
|
|
|
var response = client.GetAsync(_address.Url).Result;
|
|
|
|
sw.Stop();
|
|
|
|
sw.Stop();
|
|
|
|
durationMs = sw.ElapsedMilliseconds;
|
|
|
|
durationMs = sw.ElapsedMilliseconds;
|
|
|
|
|
|
|
|
httpStatusCode = (int)response.StatusCode;
|
|
|
|
|
|
|
|
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
|
|
if (response.IsSuccessStatusCode)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -187,7 +189,7 @@ namespace CncCollector.Core
|
|
|
|
|
|
|
|
|
|
|
|
// 写入失败记录
|
|
|
|
// 写入失败记录
|
|
|
|
CollectRecordWriter.WriteBatch(_businessConnStr, _logConnStr, null, rawJson,
|
|
|
|
CollectRecordWriter.WriteBatch(_businessConnStr, _logConnStr, null, rawJson,
|
|
|
|
_address.Id, requestTime, durationMs, false, errorMsg);
|
|
|
|
_address.Id, requestTime, durationMs, false, errorMsg, httpStatusCode);
|
|
|
|
CollectRecordWriter.RecordFailure(_businessConnStr, _address.Id, errorMsg);
|
|
|
|
CollectRecordWriter.RecordFailure(_businessConnStr, _address.Id, errorMsg);
|
|
|
|
|
|
|
|
|
|
|
|
// 连续失败超过阈值,触发告警
|
|
|
|
// 连续失败超过阈值,触发告警
|
|
|
|
@ -207,7 +209,7 @@ namespace CncCollector.Core
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
try
|
|
|
|
{
|
|
|
|
{
|
|
|
|
ParseAndSave(rawJson, requestTime, durationMs);
|
|
|
|
ParseAndSave(rawJson, requestTime, durationMs, httpStatusCode ?? 200);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch (Exception ex)
|
|
|
|
catch (Exception ex)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -262,7 +264,7 @@ namespace CncCollector.Core
|
|
|
|
/// <summary>
|
|
|
|
/// <summary>
|
|
|
|
/// 解析采集到的 JSON 数据并写入数据库
|
|
|
|
/// 解析采集到的 JSON 数据并写入数据库
|
|
|
|
/// </summary>
|
|
|
|
/// </summary>
|
|
|
|
private void ParseAndSave(string rawJson, DateTime requestTime, long durationMs)
|
|
|
|
private void ParseAndSave(string rawJson, DateTime requestTime, long durationMs, int statusCode = 200)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
var collectTime = DateTime.Now;
|
|
|
|
var collectTime = DateTime.Now;
|
|
|
|
|
|
|
|
|
|
|
|
@ -380,7 +382,7 @@ namespace CncCollector.Core
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 批量写入
|
|
|
|
// 4. 批量写入
|
|
|
|
CollectRecordWriter.WriteBatch(_businessConnStr, _logConnStr, records, rawJson,
|
|
|
|
CollectRecordWriter.WriteBatch(_businessConnStr, _logConnStr, records, rawJson,
|
|
|
|
_address.Id, requestTime, durationMs, true, null);
|
|
|
|
_address.Id, requestTime, durationMs, true, null, statusCode);
|
|
|
|
|
|
|
|
|
|
|
|
_log.Info($"采集完成: {_address.Name} → {records.Count}台设备, {durationMs}ms");
|
|
|
|
_log.Info($"采集完成: {_address.Name} → {records.Count}台设备, {durationMs}ms");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|