Get From Loki
Компактный REST API сервис на C# для получения логов из Grafana Loki.
Описание
Сервис предоставляет REST API для запроса логов из Grafana Loki по лейблам и возвращает их в формате {timestamp, message}.
Требования
- .NET 8.0
- Grafana Loki (работающий на http://localhost:3100)
Запуск
- Убедитесь, что Grafana Loki запущен на http://localhost:3100
- Выполните команды:
dotnet restore
dotnet run --urls http://0.0.0.0:5000
Сервис будет доступен по адресу: http://localhost:5000
API Endpoints
GET /api/logs/query
Получить логи по лейблам через GET запрос
Параметры:
labels(обязательный) - лейблы в формате "key1=value1,key2=value2"startTime(опциональный) - время начала в формате ISO 8601endTime(опциональный) - время окончания в формате ISO 8601limit(опциональный) - лимит записей (по умолчанию 100)
Примеры:
GET /api/logs/query?labels=job=cron,service_name=system&limit=50
GET /api/logs/query?labels=app=myapp,level=error&startTime=2024-01-01T00:00:00Z&endTime=2024-01-01T23:59:59Z
POST /api/logs/query
Получить логи по лейблам через POST запрос
Тело запроса:
{
"labels": {
"job": "cron",
"service_name": "system",
"level": "info"
},
"startTime": "2024-01-01T00:00:00Z",
"endTime": "2024-01-01T23:59:59Z",
"limit": 100
}
Примеры использования
Простой запрос по одному лейблу:
curl "http://localhost:5000/api/logs/query?labels=job=cron&limit=10"
Запрос по нескольким лейблам:
curl "http://localhost:5000/api/logs/query?labels=job=cron,service_name=system,level=info&limit=20"
POST запрос с временным окном:
curl -X POST "http://localhost:5000/api/logs/query" \
-H "Content-Type: application/json" \
-d '{
"labels": {
"app": "myapp",
"environment": "production"
},
"startTime": "2024-01-01T00:00:00Z",
"endTime": "2024-01-01T01:00:00Z",
"limit": 50
}'
Ответ
Сервис возвращает массив объектов в формате:
[
{
"timestamp": "2024-01-01T12:00:00Z",
"message": "Log message content"
}
]
Конфигурация
Настройки подключения к Loki находятся в файле appsettings.json:
{
"Loki": {
"BaseUrl": "http://localhost:3100",
"QueryTimeout": 30
}
}
LogQL запросы
Сервис автоматически формирует LogQL запросы для Loki API:
{job="cron",service_name="system"}- точное совпадение значений{job!=""}- существование лейбла (если значение не указано)
Swagger UI
После запуска сервиса документация API доступна по адресу: http://localhost:5000/swagger
Description
Languages
C#
100%