• Мониторинг акторов в Akka.Net, но на F#

    Сразу скажу, хаба для F# на хабре нет, поэтому пишу в C#.

    Для тех кто не знаком с F#, но знаком с C#, рекомендую наисвежайшую статью от Microsoft.
    Она поможет Вам испытывать меньше WTF моментов при прочтении, т.к. моя статья не туториал к синтаксису.


    Контекст задачи


    Есть сервис, написанный на Akka.NET, он вываливает в разные текстовые логи кучу инфы. Отдел эксплуатации грепает эти логи, жарит по ним регекспами, чтобы узнать о кол-ве ошибок (бизнесовых и не очень), о кол-ве входящих в сервис сообщений и кол-ве исходящих. Далее эта информация заливается в ElasticDB, InfluxDB и показывается в Grafana и Kibana в разных срезах и агрегациях.

    Звучит сложно, да и парсить текстовые логи сервиса, который генерит несколько десятков ГБ текстового мусора в день — занятие неблагодарное. Поэтому встала задача — сервис должен быть способен поднять ендпоинт, который можно дёрнуть и получить сразу всю инфу о нём.

    Решать задачу будем так:

    1. Напишем доменную модель для метрик
    2. Замапим доменную модель метрик на реализацию App.Metrics и поднимем апишечку
    3. Сделаем структурированный доменный логгер, который натянем на внутренний логгер Akka
    4. Сделаем обёртку для функциональных акторов, которая спрячет работу с метриками и логгером
    5. Соберём всё вместе и запустим
    Читать дальше →
    • +21
    • 4,4k
    • 3