Back to "Самозбереження сіка для ведення журналу ASP.NET"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

ASP.NET Docker Seq Serilog

Самозбереження сіка для ведення журналу ASP.NET

Friday, 13 September 2024

Вступ

Seq - це програма, яка надає вам змогу переглядати і аналізувати журнали. Чудовий інструмент для усування вад та моніторингу вашої програми. У цьому полі я повідомлю про те, як я налаштував Seq для ведення журналу моєї програми ASP.NET. Ніколи не може мати забагато панелі приладів :)

SeqDashboard

Налаштування Seq

Сек входит в пару пельмутов. Ви можете або використовувати версію хмари, або власну назву вузла. Я вирішив самостійно збирати колоди, оскільки хотів тримати їх у секреті.

Спочатку я відвідав веб-сайт Seq і знайшов Настанови зі встановлення панелі.

Локально

Щоб запустити локально, вам спочатку слід отримати пароль хешування. Ви можете зробити це за допомогою наступної команди:

echo '<password>' | docker run --rm -i datalust/seq config hash

Щоб запустити його локально, ви можете скористатися такою командою:

docker run --name seq -d --restart unless-stopped -e ACCEPT_EULA=Y -e SEQ_FIRSTRUN_ADMINPASSWORDHASH=<hashfromabove> -v C:\seq:/data -p 5443:443 -p 45341:45341 -p 5341:5341 -p 82:80 datalust/seq

На моїй локальній машині Ubuntu я створив скрипт sh:

#!/bin/bash
PH=$(echo 'Abc1234!' | docker run --rm -i datalust/seq config hash)

mkdir -p /mnt/seq
chmod 777 /mnt/seq

docker run \
  --name seq \
  -d \
  --restart unless-stopped \
  -e ACCEPT_EULA=Y \
  -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \
  -v /mnt/seq:/data \
  -p 5443:443 \
  -p 45341:45341 \
  -p 5341:5341 \
  -p 82:80 \
  datalust/seq

Потім

chmod +x seq.sh
./seq.sh

Це підніме тебе і побіжиш, а потім підеш до http://localhost:82 / http://<machineip>:82 щоб побачити, як встановлено ваш seq (типовий пароль адміністратора - це пароль, який ви ввели для зверху.

В панелі

Я додав secq до мого файла створення Docker таким чином:

  seq:
    image: datalust/seq
    container_name: seq
    restart: unless-stopped
    environment:
      ACCEPT_EULA: "Y"
      SEQ_FIRSTRUN_ADMINPASSWORDHASH: ${SEQ_DEFAULT_HASH}
    volumes:
      - /mnt/seq:/data
    networks:
      - app_network

Зауважте, що у мене є каталог з назвою /mnt/seq (для вікон скористайтеся шляхом до вікон). Тут буде збережено журнали.

У мене також є SEQ_DEFAULT_HASH змінна середовища, яка є паролем хешування для адміністративного користувача у моєму файлі. env.

Налаштування ядра ASP. NET

Як я користуюся Серілог Для моєї лісозаготівлі досить легко встановити Сек. Він навіть має досьє про те, як це зробити. тут.

По суті, ви просто додаєте раковину до вашого проекту:

dotnet add package Serilog.Sinks.Seq

Я надаю перевагу використанню appsettings.json для мого налаштування, так що у моєму випадку я просто налаштував "стандартне" Program.cs:

builder.Host.UseSerilog((context, configuration) =>
{
    configuration.ReadFrom.Configuration(context.Configuration);
    Serilog.Debugging.SelfLog.Enable(Console.Error);
    Console.WriteLine($"Serilog Minimum Level: {configuration.MinimumLevel.ToString()}");
});

Потім у моїй ♫appsettings.json я маю цю конфігурацію

  "Serilog": {
    "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.Seq"],
    "MinimumLevel": "Warning",
    "WriteTo": [
        {
          "Name": "Seq",
          "Args":
          {
            "serverUrl": "http://seq:5341",
            "apiKey": ""
          }
        },
      {
        "Name": "Console"
      },
      {
        "Name": "File",
        "Args": {
          "path": "logs/applog-.txt",
          "rollingInterval": "Day"
        }
      }

    ],
    "Enrich": ["FromLogContext", "WithMachineName"],
    "Properties": {
      "ApplicationName": "mostlylucid"
    }
  }

Ви побачите, що у мене є serverUrl з http://seq:5341. Це тому, що secq працює у контейнері з назвою seq і він на порту. 5341. Якщо ви запустите його локально, ви можете скористатися http://localhost:5341. Крім того, я використовую ключ API, щоб вказати рівень журналювання динамічно (ви можете встановити ключ, який приймає лише певний рівень повідомлень журналу).

Ви встановите його у вашому випадку seq http://<machine>:82 і натисніть кнопку з конструкцією, розташовану у верхній правій частині вікна. Потім натисніть API Keys tab і додавання нового ключа. Тоді ви можете використати цей ключ у вашому комп'ютері. appsettings.json файл.

Seq

Докер Композитний

Тепер ми маємо цю установку, нам потрібно налаштувати нашу програму ASP.NET, щоб взяти ключ. I use a .env Постачание, чтобы сохранить мои секреты.

SEQ_DEFAULT_HASH="<adminpasswordhash>"
SEQ_API_KEY="<apikey>"

Потім у моєму файлі набору Docker Я вказую, що значення має бути введене як змінна середовища до моєї програми ASP. NET:

services:
  mostlylucid:
    image: scottgal/mostlylucid:latest
    ports:
      - 8080:8080
    restart: always
    labels:
        - "com.centurylinklabs.watchtower.enable=true"
    env_file:
      - .env
    environment:
      - Auth__GoogleClientId=${AUTH_GOOGLECLIENTID}
      - Auth__GoogleClientSecret=${AUTH_GOOGLECLIENTSECRET}
      - Auth__AdminUserGoogleId=${AUTH_ADMINUSERGOOGLEID}
      - SmtpSettings__UserName=${SMTPSETTINGS_USERNAME}
      - SmtpSettings__Password=${SMTPSETTINGS_PASSWORD}
      - Analytics__UmamiPath=${ANALYTICS_UMAMIPATH}
      - Analytics__WebsiteId=${ANALYTICS_WEBSITEID}
      - ConnectionStrings__DefaultConnection=${POSTGRES_CONNECTIONSTRING}
      - TranslateService__ServiceIPs=${EASYNMT_IPS}
      - Serilog__WriteTo__0__Args__apiKey=${SEQ_API_KEY}
    volumes:
      - /mnt/imagecache:/app/wwwroot/cache
      - /mnt/markdown/comments:/app/Markdown/comments
      - /mnt/logs:/app/logs
    networks:
      - app_network

Зауважте, що Serilog__WriteTo__0__Args__apiKey встановлюється у значення SEQ_API_KEY з .env файл. " 0 " - це індекс WriteTo масив у appsettings.json файл.

КаддіCity in New Brunswick Canada

Нотатка для обох Sek і моєї програми ASP.NET Я визначив, що обидва вони належать моєму app_network мережа. Це тому, що я використовую "Caddy" як "поворотний проксі" і він в тій же мережі. Це означає, що я можу використовувати службове ім'я як адресу URL в моєму Cedyfile.

{
    email [email protected]
}
seq.mostlylucid.net
{
   reverse_proxy seq:80
}

http://seq.mostlylucid.net
{
   redir https://{host}{uri}
}

Отже, вона здатна на карті. seq.mostlylucid.net до мого бюлетеня.

Висновки

Сек - це чудовий інструмент для ведення журналу та спостереження за вашою програмою. Легко налагодити, використовувати і інтегрувати з серилогом. Я вважаю, що це неоціненно для усування моїх застосувань і я впевнений, що ви також знайдете його.

logo

©2024 Scott Galloway