Установка системы мониторинга для Entaxy ION (All-in-one)

Инструкция описывает два сценария установки системы мониторинга:

Установка Grafana

Grafana — это мультиплатформенное веб-приложение для аналитики и интерактивной визуализации с открытым исходным кодом.

Для установки Grafana и включения сервиса выполним следующие команды:

$ sudo apt-get install -y libfontconfig1 musl
$ wget https://dl.grafana.com/oss/release/grafana_11.3.1_amd64.deb
$ sudo dpkg -i grafana_11.3.1_amd64.deb

$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable grafana-server
$ sudo /bin/systemctl start grafana-server

Установка и настройка Prometheus

  1. Скачиваем Prometheus

  2. Распаковываем в /opt

    sudo tar xvf ./prometheus-3.0.0.linux-amd64.tar.gz --directory /opt/
  3. Создаём файл конфигурации prometheus.yml

    sudo nano /opt/prometheus-3.0.0.linux-amd64/prometheus.yml
    global:
    scrape_interval: 15s # Set the scrape interval to every 15 seconds.
    Default is every 1 minute.
    evaluation_interval: 15s # Evaluate rules every 15 seconds.
    The default is every 1 minute.
    
    alerting:
    alertmanagers:
    - static_configs:
    - targets:
    
    rule_files:
    
    scrape_configs:
    
    - job_name: "prometheus" static_configs:
    - targets: ["localhost:9090"]
    
    - job_name: 'java-entaxy' metrics_path: /metrics static_configs:
    - targets: ['YYY.YYY.YYY.YY:9191']
    
    - job_name: 'entaxy' metrics_path: /metrics static_configs:
    - targets: ['YYY.YYY.YYY.YY:9191']
    
    - job_name: 'emdev-pilot-app' metrics_path: /metrics static_configs:
    - targets: ['YYY.YYY.YYY.YY:9100']
    В нашем случае 'YYY.YYY.YYY.YY' - это сервер мониторинга.
  4. Создаём юнит для запуска сервиса /etc/systemd/system/prometheus.service

    sudo nano /etc/systemd/system/prometheus.service
    [Unit]
    Description=prometheus
    After=network.target
    StartLimitIntervalSec=0
    
    [Service]
    Type=simple
    User=prometheus
    Group=prometheus
    WorkingDirectory=/opt/prometheus-3.0.0.linux-amd64
    LimitAS=infinity
    LimitRSS=infinity
    LimitCORE=infinity
    LimitNOFILE=65536
    ExecStart=/opt/prometheus-3.0.0.linux-amd64/prometheus
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  5. Создаем пользователя prometheus:

    sudo adduser --system --home /opt/prometheus-3.0.0.linux-amd64/ --shell /sbin/nologin --group prometheus
    sudo chown -R prometheus.prometheus /opt/prometheus-3.0.0.linux-amd64/
  6. Переинициализируем systemd-unit, включаем и запускаем сервис. Проверяем статус.

    systemctl daemon-reload
    systemctl enable prometheus.service
    systemctl start prometheus.service
    systemctl status prometheus.service
  7. После входа в веб интерфейс Grafana необходимо зарегистрировать новый Datasource Prometheus с адресом:

    prometheus

Установка и настройка Loki

Loki – это система хранения логов.

  1. Скачиваем Loki

  2. Распаковываем в /opt/

    sudo unzip ./loki-linux-amd64.zip -d /opt/loki
  3. Создаем пользователя, даем права на папку:

    sudo adduser --system --home /opt/loki/ --shell /sbin/nologin --group loki
    sudo chown -R loki.loki /opt/loki/
  4. Создаем файл сервиса /etc/systemd/system/loki.service

    sudo nano /etc/systemd/system/loki.service
    [Unit]
    Description=loki
    After=network.target
    StartLimitIntervalSec=0
    
    [Service]
    Type=simple
    User=loki
    Group=loki
    WorkingDirectory=/opt/loki
    LimitAS=infinity
    LimitRSS=infinity
    LimitCORE=infinity
    LimitNOFILE=65536
    ExecStart=/opt/loki/loki-linux-amd64 -config.file=/opt/loki/loki-local-config.yaml
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  5. Создаем файл /opt/loki/loki-local-config.yaml

    sudo nano /opt/loki/loki-local-config.yaml
    auth_enabled: false
    
    server:
        http_listen_port: 3100
    
    ingester:
        lifecycler:
            address: 127.0.0.1
            ring:
                kvstore:
                    store: inmemory
                replication_factor: 1
            final_sleep: 0s
        chunk_idle_period: 5m
        chunk_retain_period: 30s
        max_transfer_retries: 0
    
    schema_config:
        configs:
            - from: 2018-04-15
            store: boltdb
            object_store: filesystem
            schema: v13
            index:
                prefix: index_
                period: 168h
    
    storage_config:
        boltdb:
            directory: /opt/loki/data/index
    
      filesystem:
        directory: /opt/loki/data/chunks
    
    limits_config:
        # enforce_metric_name: false
        reject_old_samples: true
        reject_old_samples_max_age: 168h
        max_query_lookback: 0s
        allow_structured_metadata: false
    #chunk_store_config:
        # max_look_back_period: 0s
    
    table_manager:
        retention_deletes_enabled: false
        retention_period: 0s
  6. Переинициализируем systemd-unit, включаем и запускаем сервис. Проверяем статус.

    sudo systemctl daemon-reload
    sudo systemctl enable loki.service
    sudo systemctl start loki.service
    sudo systemctl status loki.service
  7. После входа в веб интерфейс Grafana необходимо зарегистрировать новый Datasource Loki с адресом:

    loki

Установка и настройка Fluent-bit

Fluent bit – это легковесная служба обработки и пересылки логов с открытым исходным кодом.

  1. Скачиваем Fluent-bit:

  2. Распаковываем во временную папку

    unzip v3.2.1.zip -d temp/

  3. Устанавливаем необходимые пакеты

    sudo apt-get install -y build-essential flex bison libyaml-dev libssl-dev pkg-config cmake
  4. Переходим в папку build

    cd temp/fluent-bit-3.2.1/build/
  5. Запускаем сборку

    cmake ..
    make
  6. Копируем файл bin/fluent-bit в /opt/fluent-bit

    mkdir /opt/fluent-bit
    cp bin/fluent-bit /opt/fluent-bit/
  7. Создаём в папке /opt/fluent-bit файл fluentBit.conf

    sudo nano /opt/fluent-bit/fluentBit.conf
    [SERVICE]
        Flush        5
        Daemon       Off
        Log_Level    info
        Parsers_File /opt/fluentbit/parsers.conf
    
    [INPUT]
        Name tail
        Path /opt/karaf/data/log/artemis.log
        Refresh_Interval  5
        Buffer_Chunk_Size 100k
        Buffer_Max_Size 1M
        Tag artemis
        Key message
        Multiline On
        Multiline_Flush 1
        Parser_Firstline artemis
    
    [INPUT]
        Name tail
        Path /opt/karaf/data/log/karaf.log
        Refresh_Interval  5
        Buffer_Chunk_Size 100k
        Buffer_Max_Size 1M
        Tag entaxy
        Key message
        Multiline On
        Multiline_Flush 1
        Parser_Firstline entaxy
    
    [INPUT]
        Name tail
        Path /opt/entaxy/data/log/cef-audit.log
        Buffer_Chunk_Size 100k
        Buffer_Max_Size 1M
        Tag cef
        Key message
        Parser cef
    
    [OUTPUT]
        Name loki
        Match cef
        host YYY.YYY.YYY.YY
        port 3100
        line_format json
        labels job=karaf-cef-1
        label_keys $signature, $name, $severity
    
    [OUTPUT]
        Name loki
        Match artemis
        host YYY.YYY.YYY.YY
        port 3100
        line_format json
        labels job=amq-1
        label_keys $log_level
    
    [OUTPUT]
        Name loki
        Match entaxy
        host YYY.YYY.YYY.YY
        port 3100
        line_format json
        labels job=entaxy-1, service=$data['service'], operation=$data['operation'], objectId=$data['objectId'], parameter=$data['parameter'], sender=$data['sender'], receiver=$data['receiver']
        label_keys $log_level, $request

    В параметре Path нужно указать путь к логам Artemis, в параметрах host и port нужно соответственно указать адрес и порт сервиса Loki.

    В нашем случае 'YYY.YYY.YYY.YY' - это сервер мониторинга.
  8. Создаем файл parsers.conf в папке /opt/fluent-bit

    sudo nano /opt/fluent-bit/parsers.conf
    [PARSER]
            Name        observability
            Format      json
            Time_Key    time
            Time_Format %Y-%m-%dT%H:%M:%S.%L
    
    [PARSER]
            Name entaxy
            Format regex
            Regex ^(?<date>\d{2,4}\-\d{2,4}\-\d{2,4}T\d{2,4}\:\d{2,4}\:\d{2,4}\,\d{1,6}) \| (?<log_level>[^\s]+)[\s]+\| (?<thread>[^\|]+) \| (?<object>[^\s]+)[\s]+\| (?<bundle>\d{2,4} \- [^\s]+ \- [^\s]+) \| (((?<request>\w{8}\-\w{4}\-\w{4}-\w{4}\-\w{12}))#(?<data>[^#]+)#[\s]*?(?<step>.*)| ?(?<message>.*))$
            Decode_Field_As json data
            Time_Key date
            Time_Format %Y-%m-%dT%H:%M:%S,%L
            Time_Offset +0300
            Time_Keep    On
    
    [PARSER]
            Name artemis
            Format regex
            Regex ^(?<date>\d{2,4}\-\d{2,4}\-\d{2,4}T\d{2,4}\:\d{2,4}\:\d{2,4}\,\d{1,6}) \| (?<log_level>[^\s]+)[\s]+\| (?<thread>[^\|]+) \| (?<object>[^\s]+)[\s]+\| (?<bundle>\d{2,4} \- [^\s]+ \- [^\s]+) \| ?(?<message>.*)$
            Time_Key date
            Time_Format %Y-%m-%dT%H:%M:%S,%f
            Time_Offset +0300
    
    [PARSER]
            Name   cef
            Format regex
            Regex ^(?<cef>[^\|]+)\|(?<vendor>[^\|]+)\|(?<product>[^\|]+)\|(?<version>[^\|]+)\|(?<signature>[^\|]+)\|(?<name>[^\|]+)\|(?<severity>[^\|]+)\|(?<extension>[^\|]+)$
            Time_Offset +0300
  9. Создаем юнит для запуска сервиса /etc/systemd/system/fluentbit.service

    sudo nano /etc/systemd/system/fluentbit.service
    [Unit]
    Description=fluentbit
    After=network.target
    StartLimitIntervalSec=0
    
    [Service]
    Type=simple
    User=entaxy
    Group=entaxy
    WorkingDirectory=/opt/fluent-bit
    LimitAS=infinity
    LimitRSS=infinity
    LimitCORE=infinity
    LimitNOFILE=65536
    ExecStart=/opt/fluent-bit/fluent-bit -c /opt/fluent-bit/fluentBit.conf
    Restart=always
    
    [Install]
    WantedBy=multi-user.target
  10. Переинициализируем systemd-unit, включаем и запускаем сервис. Проверяем статус.

    sudo systemctl daemon-reload
    sudo systemctl enable fluentbit.service
    sudo systemctl start fluentbit.service
    sudo systemctl status fluentbit.service

Установка и настройка Node Exporter

Node_Exporter – это агент для сбора метрик состояния серверов. Агент работает на стандартном порту – 9100.

  1. Скачиваем дистрибутив

  2. Распаковываем

    sudo tar xvf node_exporter-1.8.2.linux-amd64.tar.gz --directory /opt/
  3. Создаем файл сервиса

    sudo nano /etc/systemd/system/node_exporter.service
    [Unit]
    Description=Node Exporter
    After=network.target
    
    [Service]
    User=entaxy
    Group=entaxy
    Type=simple
    ExecStart=/opt/node_exporter-1.8.2.linux-amd64/node_exporter
    
    [Install]
    WantedBy=multi-user.target
  4. Активируем и запускаем сервис

    sudo systemctl daemon-reload
    sudo systemctl enable node_exporter.service
    sudo systemctl start node_exporter.service
    sudo systemctl status node_exporter.service

Установка и настройка Telegraf

Telegraf – это агент для сбора java-метрик, jmx-метрик Entaxy ION и ActiveMQ Artemis.

  1. Устанавливаем агент

    wget -q https://repos.influxdata.com/influxdata-archive_compat.key
    
    echo '393e8779c89ac8d958f81f942f9ad7fb82a25e133faddaf92e15b16e6ac9ce4c influxdata-archive_compat.key' | sha256sum -c && cat influxdata-archive_compat.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg > /dev/null
    
    echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive_compat.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
    
    sudo apt-get update && sudo apt-get install -y telegraf

    После завершения установки переходим к каталогу с конфигурационными файлами Telegraf и удаляем стандартные конфиги telegraf.conf и telegraf.conf.sample

  2. Создаем новый конфиг telegraf.conf со следующими параметрами:

    sudo nano /etc/telegraf/telegraf.conf
    [global_tags]
    
    [agent]
      interval = "10s"
      round_interval = false
      metric_batch_size = 100000
      metric_buffer_limit = 10000
      collection_jitter = "0s"
      flush_interval = "10s"
      flush_jitter = "0s"
      precision = ""
    
     [[outputs.prometheus_client]]
        listen = ":9191"
        path = "/metrics"
        expiration_interval = "0s"
        metric_version = 2
    
    
    [[inputs.jolokia2_agent]]
       urls = ["http://localhost:8181/hawtio/jolokia"]
       username = "karaf"
       password = "karaf"
    
       [[inputs.jolokia2_agent.metric]]
        name     = "context"
        mbean    = "org.apache.camel:context=*,type=context,name=*"
        paths = ["ExchangesCompleted", "ExchangesFailed", "ExchangesInflight", "ExchangesTotal", "MinProcessingTime", "MaxProcessingTime", "MeanProcessingTime", "Redeliveries"]
        tag_keys = ["name"]
    
       [[inputs.jolokia2_agent.metric]]
        name     = "routes"
        mbean    = "org.apache.camel:context=*,type=routes,name=*"
        paths = ["ExchangesCompleted", "ExchangesFailed", "ExchangesInflight", "ExchangesTotal", "MinProcessingTime", "MaxProcessingTime", "MeanProcessingTime", "Redeliveries", "CamelId"]
        tag_keys = ["name", "CamelId"]
    
       [[inputs.jolokia2_agent.metric]]
        name  = "java_runtime"
        mbean = "java.lang:type=Runtime"
        paths = ["Uptime"]
    
       [[inputs.jolokia2_agent.metric]]
        name  = "java_memory"
        mbean = "java.lang:type=Memory"
        paths = ["HeapMemoryUsage", "NonHeapMemoryUsage", "ObjectPendingFinalizationCount"]
    
       [[inputs.jolokia2_agent.metric]]
        name     = "java_garbage_collector"
        mbean    = "java.lang:name=*,type=GarbageCollector"
        paths    = ["CollectionTime", "CollectionCount"]
        tag_keys = ["name"]
    
       [[inputs.jolokia2_agent.metric]]
        name  = "java_last_garbage_collection"
        mbean = "java.lang:name=*,type=GarbageCollector"
        paths = ["LastGcInfo"]
        tag_keys = ["name"]
    
       [[inputs.jolokia2_agent.metric]]
        name  = "java_threading"
        mbean = "java.lang:type=Threading"
        paths = ["TotalStartedThreadCount", "ThreadCount", "DaemonThreadCount", "PeakThreadCount"]
    
       [[inputs.jolokia2_agent.metric]]
        name  = "java_class_loading"
        mbean = "java.lang:type=ClassLoading"
        paths = ["LoadedClassCount", "UnloadedClassCount", "TotalLoadedClassCount"]
    
       [[inputs.jolokia2_agent.metric]]
        name     = "java_memory_pool"
        mbean    = "java.lang:name=*,type=MemoryPool"
        paths    = ["Usage", "PeakUsage", "CollectionUsage"]
        tag_keys = ["name"]
    
       [[inputs.jolokia2_agent.metric]]
        name  = "java"
        mbean = "java.lang:type=OperatingSystem"
        paths = ["OpenFileDescriptorCount", "ProcessCpuLoad", "ProcessCpuTime", "SystemCpuLoad", "SystemLoadAverage"]
    
    #artemis
      [[inputs.jolokia2_agent.metric]]
        name     = "address"
        mbean    = "org.apache.activemq.artemis:broker=*,component=addresses,address=*"
        paths = ["NumberOfMessages", "MessageCount", "RoutedMessageCount", "UnRoutedMessageCount"]
        tag_keys = ["address"]
    
      [[inputs.jolokia2_agent.metric]]
        name     = "queue"
        mbean    = "org.apache.activemq.artemis:broker=*,component=addresses,address=*,subcomponent=queues,routing-type=*,queue=*"
        paths = ["AcknowledgeAttempts", "MessageCount", "MessagesAcknowledged", "MessagesAdded", "MessagesExpired", "MessagesKilled", "PersistentSize"]
        tag_keys = ["queue", "address"]
    
      [[inputs.jolokia2_agent.metric]]
        name  = "java_runtime"
        mbean = "java.lang:type=Runtime"
        paths = ["Uptime"]
    
      [[inputs.jolokia2_agent.metric]]
        name  = "java_memory"
        mbean = "java.lang:type=Memory"
        paths = ["HeapMemoryUsage", "NonHeapMemoryUsage", "ObjectPendingFinalizationCount"]
    [[inputs.jolokia2_agent.metric]]
        name     = "java_garbage_collector"
        mbean    = "java.lang:name=*,type=GarbageCollector"
        paths    = ["CollectionTime", "CollectionCount"]
        tag_keys = ["name"]
    
      [[inputs.jolokia2_agent.metric]]
        name  = "java_last_garbage_collection"
        mbean = "java.lang:name=*,type=GarbageCollector"
        paths = ["LastGcInfo"]
        tag_keys = ["name"]
    
      [[inputs.jolokia2_agent.metric]]
        name  = "java_threading"
        mbean = "java.lang:type=Threading"
        paths = ["TotalStartedThreadCount", "ThreadCount", "DaemonThreadCount", "PeakThreadCount"]
    
      [[inputs.jolokia2_agent.metric]]
        name  = "java_class_loading"
        mbean = "java.lang:type=ClassLoading"
        paths = ["LoadedClassCount", "UnloadedClassCount", "TotalLoadedClassCount"]
    
      [[inputs.jolokia2_agent.metric]]
        name     = "java_memory_pool"
        mbean    = "java.lang:name=*,type=MemoryPool"
        paths    = ["Usage", "PeakUsage", "CollectionUsage"]
        tag_keys = ["name"]
    
      [[inputs.jolokia2_agent.metric]]
        name  = "java"
        mbean = "java.lang:type=OperatingSystem"
        paths = ["OpenFileDescriptorCount", "ProcessCpuLoad", "ProcessCpuTime", "SystemCpuLoad", "SystemLoadAverage"]
    
    
    [[processors.regex]]
      namepass = ["address", "queue", "context", "routes"]
    
      [[processors.regex.tags]]
        key = "address"
        pattern = "\"(.*)\""
        replacement = "${1}"
    
      [[processors.regex.tags]]
        key = "queue"
        pattern = "\"(.*)\""
        replacement = "${1}"
    
      [[processors.regex.tags]]
        key = "name"
        pattern = "\"(.*)\""
        replacement = "${1}"

    Путь к метрикам сообщений, который указан в секции «address», должен соответствовать настройкам имени конкретной установки Artemis

    После отключения политики и настройки доступов включаем и запускаем сервис. Проверяем статус.

    sudo systemctl enable telegraf.service
    sudo systemctl start telegraf.service
    sudo systemctl status telegraf.service

    Теперь агент отправляет все метрики на страницу /metrics по портам: 9191 для Entaxy ION и 9090 для ActiveMQ Artemis.

Дополнительные действия с дашбордами Grafana

После импорта дашбордов Grafana, необходимо сделать дополнительные действия. Нужно зайти в настройки дашборда и проверить, что правильно указан Data source и имя job’ы соответствует заданной в prometheus.yml (см. раздел Установка и настройка Prometheus). Также нужно указать значение в поле Custom all value.

  • Пример настроек для Artemis

    activemq settings
  • Пример настроек для Karaf

    camel settings

Работа с Grafana

Создание пользователей и изменение пароля администратора

  • Создание пользователей и изменение пароля администратора
    Web-интерфейс Grafana - http://yourip:3000/

    grafana login
  • Для авторизации в систему мониторинга используется стандартный логин и пароль администратора admin/admin При авторизации система предложит изменить пароль учетной записи.

    grafana password
  • Можно изменить пароль учетной записи администратора или пропустить этот шаг нажав на кнопку «Skip». В дальнейшем, пароль от учетной записи можно поменять под авторизованным в системе пользователем наведя курсором мышки на лого пользователя в левом нижнем углу экрана и выбрав пункт «Change password».

    change password
  • Создание новых пользователей в Grafana происходит в меню «Server admin» (пиктограмма щита в левом нижнем углу экрана), пункте «Users».

    server admin
    server admin users
  • По кнопке «New user» можно создать нового пользователя, указав необходимые данные и пароль на открывшейся странице

    server admin new user

Дэшборды

Для мониторинга серверов в Grafana предустановлен набор типовых дэшбордов с настроенными графиками для отслеживания состояния серверов и приложений.

  • Entaxy environment services - панель агрегирующая состояния по сервисам ОС, используемым в среде Entaxy;

  • Karaf cluster - здоровье кластера среды исполнения Apache Karaf;

  • Node_Exporter_Full - панель с графиками, отображающими состояние виртуальной машины (CPU, RAM, Memory и т.д.);

  • Java - панель с графиками, отображающими состояние виртуальной машины Java;

  • Apache Camel - dashboard с графиками, отображающими состояние пакетов и их прохождение;

  • ActiveMQ - панель с графиками, отображающими состояние сообщений принятых/отправленных в брокере.

Описания дэшбордов

  • Camel - dashboard с графиками, отображающими состояние пакетов и их прохождение (кол-во)

    • Прямая ссылка на дэшборд: http://yourip:3000/d/sHSIELIWz/camel

    • В дэшборде имеются следующие графики:

      1. Exchanges Complited (Пакетов отправлено) - отображает количество успешно отправленных пакетов с разделением по маршрутам, в которых произошел обмен этими пакетами. Все новые маршруты динамически (автоматически) добавляются в график.

      2. Exchanges Failed (Пакетов не отправлено) - отображает количество не отправленных пакетов с разделением по маршрутам, в которых произошел сбой при обмене этими пакетами. Все новые маршруты динамически (автоматически) добавляются в график.

      3. Exchanges In Flight (Пакетов в обработке) - отображает количество пакетов, находящихся в обработке с разделением по маршрутам, в которых происходит обработка этих пакетов. Все новые маршруты динамически (автоматически) добавляются в график.

      4. Started Routes (Запущенные маршруты) - отображает маршруты по которым был запущен обмен пакетами с разделением по названию маршрута. Все новые маршруты динамически (автоматически) добавляются в график.

      5. Logs (Логи) – Логи ИШ Entaxy ION.

        Любой из графиков можно приблизить, наведя на него курсором и нажав кнопку «V».

        general camel
        apache v
  • ActiveMQ - dashboard с графиками, отображающими состояние сообщений принятых/отправленных в брокере

    • Прямая ссылка на дэшборд: http://yourip:3000/d/Flk6mRNWk/activemq

    • В дэшборде имеются следующие графики:

      1. Number Of Messages (Количество сообщений) - отображает общее количество сообщений с разделением по адресам, на которые были отправлены эти сообщения. Все новые адреса динамически (автоматически) добавляются в график.

      2. Routed Message Count (Количество доставленных сообщений) - отображает количество успешно доставленных сообщений с разделением по адресам, на которые были доставлены эти сообщения. Все новые адреса динамически (автоматически) добавляются в график.

      3. Unrouted Message Count (Количество не доставленных сообщений) - отображает количество не доставленных сообщений с разделением по адресам, на которые не были доставлены эти сообщения. Все новые адреса динамически (автоматически) добавляются в график.

      4. Logs (Логи) – Логи брокера сообщений ActiveMQ Artemis.

        Любой из графиков можно приблизить, наведя на него курсором и нажав кнопку «V».

        general activemq
  • Java - dashboard с графиками, отображающими состояние виртуальной машины, приложения которой используют Java

    • Прямая ссылка на дэшборд: http://yourip:3000/d/7622/java

    • В дэшборде имеются следующие графики:

      1. CPU Usage (Использование ЦПУ) – Отображает в процентном соотношении использование ядер ЦПУ java-приложением.

      2. Memory Heap/NON Heap (Память в куче/не в куче) – Отображает часть активно используемой памяти с объектами и ссылками. Требует активного мониторинга.

      3. Class loading (Классов загружено) – Количество загруженных классов java-приложением.

      4. Threads used (Потоков задействовано) – Количество активных потоков в java-приложении.

      5. Open File Descriptors (Файловый дескриптор) - Количество открытых соединений с файловой системой и сокетов.

      6. GC time/1 min. rate (Время работы сборщика мусора) – Время работы сборки мусора в java-приложении.

      7. GC count (Количество сборок мусора) – Количество произведенных сборок мусора.

        Любой из графиков можно приблизить, наведя на него курсором и нажав кнопку «V».

        general java
  • Node_Exporter_Full - dashboard с графиками, отображающими состояние виртуальной машины (CPU, RAM, Memory и т.д.)

    • Прямая ссылка на дэшборд: http://yourip:3000/d/lXqnWBGZz/node-exporter-full

    • В дэшборде имеются следующие графики, на которые стоит обратить наибольшее внимание:

      1. CPU Busy (Нагрузка ЦПУ) – Нагрузка на ядра центрального процессора сервера

      2. Used RAM Memory (Использование ОЗУ) – Общее количество использованной оперативной памяти на сервере

      3. Used SWAP (Использование свопа) – Количество дополнительной памяти на жёстком диске, которая была использована в случае исчерпания гарантированного объема оперативной памяти

      4. Used Root FS (Использование корневого раздела) – Количество памяти на жёстком диске, которое занято корневым разделом сервера

      5. CPU System Load (1 min avg) (Нагрузка ЦПУ задачами за минуту) – Нагрузка на ЦПУ сервера в процентном соотношении по активным задачам за минуту

      6. CPU System Load (5 min avg) (Нагрузка ЦПУ задачами за 5 минут) – Нагрузка на ЦПУ сервера в процентном соотношении по активным задачам за 5 минут

        Любой из графиков можно приблизить наведя на него курсором и нажав кнопку «V».

        node explorer

Сбор и анализ журналов

Grafana: Explore

Фильтрация логов осуществляется через раздел Explore в Grafana. С помощью конструктора запросов устанавливаются параметры фильтрации логов, возможен полнотекстный поиск, поиск по уровню записи и дате. Так же возможна агрегация и статистическая обработка записей.

Бизнес мониторинг

Для мониторинга интеграций предусмотрена панель Transactions, агрегирующая статусы обработанных сообщений, для зарегистрированных интеграций сервисов.

  • Из панели Transactions возможен переход на трассировку сообщения на панели Process, на которой выводится вся записанная в лог информация по процессу.

Оповещения

  • Для уведомлений по нештатным ситуациям используется функциональность Alerting сервера Grafana;

  • Alert rules раздел правил срабатывания оповещений;

  • Contact points группы адресов и каналы для уведомления;

  • Notification policies установка соответствия уведомлений и групп ответственных для оповещения.