Description


The service is an interface for interaction between platform components and external SMS-gateways, Call-centers and e-mail servers. It is used to send notifications to the platform users as well as to Wi-Fi users.

Service configuration


Service installation

apt-get install eltex-ngw

Methods of starting/stopping the service

ActionCommandResponce
Status checksystemctl status eltex-ngw

Service is active

Active: active (running)

Cервис не запущен Service is not active

Active: failed

Service launchsystemctl start eltex-ngw

Service is active

Active: active (running)

ngw_skk_received_statuses_total

Service stopsystemctl stop eltex-ngw

Service is stopped

Active: failed

Service restartsystemctl restart eltex-ngw

Service is restarted

Active: active (running)

Creating a database usereltex-ngw create-db-user
Deleting a databaseeltex-ngw remove-db

If the ANSWER_SOFTWLC_LOCAL variable is set to "1" when installing the package using the installer script, the database user will be created automatically. When installing the package manually, the user must be created with the command:

eltex-ngw create-db-user

  Configuration


/etc/eltex-ngw/application.conf


Contains the basic settings of the service.
/etc/eltex-ngw/application.conf
// Server configuration                               
server {
    port = 8040                                             # port that listens to eltex-ngw service
	// number of threads in executor that executes handlers and different gateways
    threads = 50
}

http {
    // Timeout of http connection to the end gateway
    connectionTimeout = 30s
    // Number of maximum simultaneous http connections
    maxConnections = 50
    // Time that connection will be kept alive
    keepAliveTimeout = 5s
    // Whether to check SSL certificate
    checkCert = true
    // HTTP User Agent
    userAgent = eltex-ngw

}

sms {
    // Incoming (user to service) sms config
    incoming.config = "smsc.conf"                           # select gateway configuration for incoming messages (SMS from user to gateway)
    // Outgoing (service to user) sms config
    outgoing.config = "smsc.conf"                           # select configuration for outgoing messages (SMS from gateway to user)

call {                                                      
    // Incoming (user to service) call config
    incoming.config = "sbc.conf"                            # select the gateway configuration for incoming calls (call from user)
    // Outgoing (service to user) call config
    outgoing.config = "smg.conf"                            # select the configuration for outgoing calls (call to user)

email {
    // Outgoing (service to user) email config
    outgoing.config = "email.conf"                          # select the configuration for communicating with the e-mail server (SMTP)

database {
    host = localhost                                        # database address
    port = 3306                                             # port
    name = eltex_ngw                                        # datadase name
    user = javauser                                         # database login
    password = javapassword                                 # database password

    pool {
        // Time to wait for a connection
        connectionTimeout = 10s
        // Time to wait for connection validation
        validationTimeout = 3s
        min = 1
        max = 10
   }
	
	migrate = true

    jdbc {
        driverClass = com.mysql.cj.jdbc.Driver
        url = "jdbc:mysql://${database.host}:${database.port}/${database.name}"

        properties {
          max_allowed_packet = 32362048
          useUnicode = true
          characterEncoding = utf8
		}
	}

                                                            # settings of the scheduler for clearing old messages in the database
    // Configure the lifetime of different tables' content
    cleanup {                                              
        // incoming events
        events = 365d                                       # event storage time
        // sms
        messages = 365d                                     # sms storage time
        // email
        emails = 365d                                       # emails storage time
        // files
        files = 7d                                          # вfiles storage time
        // limit deletions by this number (0 if no limit)
        limit_events = 1000                                 # limit the number of records deleted per execution from the table eltex_ngw.incoming_events
        limit_messages = 1000                               # limit the number of records deleted per execution from the table eltex_ngw.messages
        limit_emails = 1000                                 # limit the number of records deleted per execution from the table eltex_ngw.emails
        limit_files = 1000                                  # limit the number of records deleted per execution from the table eltex_ngw.files
        // cleanup schedule cron, e.g. "0 0 3 * * *"
        // set to "-" to disable
        cron = "0 0 3 * * *"                                # setting the scheduler to start clearing old records, the default value is "0 0 3 * * *" (every day at 3:00), to disable it specify "-" 
        // cron for optimize tables, cron-like expression, e.g. "0 0 4 5 * *"
        // set to "-" to disable
        cron_optimize = "0 0 4 5 * *"                       # scheduler setting to start clearing the database tables of deleted records, default value is "0 0 0 4 5 * * *" (every 5th day of the month at 4:00), to disable it specify "-".
    }
}

Files are deleted from the "eltex_ngw.file_chunks" table automatically after deletion from the eltex_ngw.files table

/etc/eltex-ngw/gateway.d/

catalog contains configuration files for connecting to different gateways.

To connect to different gateways, a set of configuration templates has been created, which are located in the /etc/eltex-ngw/gateway.d/ directory. The most commonly used configurations are marked in green.

FileDescriptionPurposeNotes
email.confMail serverTo send e-mail messages using the SMTP protocol
gazprom.conf
SMSIndividual integration
kaspib.confKaspi BankSMSIndividual integration
netping.confGSM gateway NetPing SMSSMS
nskbl.conf
SMSIndividual integration
psbank.conf
SMSIndividual integration
rtk.confRostelecomSMSIndividual integration
sbc.confOutgoing callTo authorize by user call
script.conf

To send SMS using a script


serial_port.confGSM gateway  Fargo maestro 100SMS
sevensky.confSeven SkySMS
skk.conf
skk_template.json
SKK gatewaySMSIndividual integration
smg.confIncoming call

To authorize by calling the user


smpp.confGateway with SMPP supportSMS
smsc.confSMS centreSMS
zagruzka.confLinked downloadSMS
mts.confMTS SMS gatewaySMS

If you have not found a suitable gateway configuration template among the offered templates, please contact technical support for integration with your gateway.

/etc/default/eltex-ngw

Contains service initialization parameters.

/etc/default/eltex-ngw
# Eltex Notification Gateway daemon parameters

# Initial size of Java heap
JAVA_INIT_HEAP=16m
# Maximum size of Java heap
JAVA_MAX_HEAP=128m

# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-ngw"

  • The amount of memory allocated to the application when the service starts:
# Initial size of Java heap
JAVA_INIT_HEAP=16m
  • The maximum amount of memory the service can lease:
# Maximum size of Java heap
JAVA_MAX_HEAP=128m
  • Additional java startup options:
# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-ngw"

/etc/eltex-ngw/log4j2.xml

Contains logging parameters.

/etc/eltex-ngw/log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="600">
    <Properties>
        <Property name="baseDir">/var/log/eltex-ngw</Property>
        <Property name="maxFileSize">20 MB</Property>
        <Property name="accumulatedFileSize">100 GB</Property>
        <Property name="lastModified">4d</Property>
        <Property name="maxCount">10</Property>
        <Property name="logPattern">%d{ISO8601} [%t] %-5p %logger{12} %C{1}.%M(line:%L). %m%n</Property>

        <Property name="gelfLevel">OFF</Property>
        <Property name="gelfHost">udp:lab3-test.eltex.loc</Property>
        <Property name="gelfPort">12201</Property>
    </Properties>
    <Appenders>

        <RollingFile name="RollingFile" filename="${baseDir}/notification-gateway.log"
                     filepattern="${baseDir}/notification-gateway-%i.log.gz">
            <PatternLayout pattern="${logPattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxFileSize}"/>
                <OnStartupTriggeringPolicy/>
            </Policies>
            <!-- Ограничение на кол-во файлов. для боевой реализации - не более 20 штук. -->
            <DefaultRolloverStrategy max="3">
                <Delete basePath="${baseDir}" maxDepth="1">
                    <IfFileName glob="notification-gateway-*.log.gz">
                        <IfLastModified age="${lastModified}"/>
                        <IfAny>
                            <IfAccumulatedFileSize exceeds="${accumulatedFileSize}"/>
                            <IfAccumulatedFileCount exceeds="${maxCount}"/>
                        </IfAny>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="notification-gateway"
              extractStackTrace="true" originHost="%host{fqdn}" maximumMessageSize="8192">
            <Field name="thread" pattern="%t"/>
            <Field name="level" pattern="%level"/>
            <Field name="severity" pattern="%-5level"/>
            <Field name="logger" pattern="%logger{12}"/>
            <Field name="location" pattern="%C{1}.%M(line:%L)"/>
        </Gelf>
    </Appenders>
    <Loggers>
        <Root level="ERROR">
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="Gelf" level="${gelfLevel}"/>
        </Root>
        <Logger name="org.eclipse.jetty" level="WARN"/>
        <Logger name="org.mongodb" level="ERROR"/>
        <Logger name="org.jsmpp" level="ERROR"/>
        <Logger name="org.springframework" level="ERROR"/>
        <logger name="jndi" level="OFF"/>

        <!--log4j configuration logger-->
        <Logger name="EventLogger" additivity="false" level="ERROR">
            <AppenderRef ref="console"/>
        </Logger>
    </Loggers>
</Configuration>

  •  Interval for automatic re-reading of the logger configuration:
<Configuration monitorInterval="600">
  • Basic logs storage directory:
<Property name="baseDir">/var/log/eltex-ngw</Property>
  • Maximum allowable file size (if it is exceeded, a new file is created, and the old one is archived):
<Property name="maxFileSize">20 MB</Property>
  • Total size of logs (current file + archived files). If it is exceeded, the oldest files will be deleted:
<Property name="accumulatedFileSize">100 GB</Property>
  • Logs storage period, files modified earlier than this period will be deleted:
<Property name="lastModified">4d</Property>
  • Maximum number of archive files, if exceeded, the oldest files will be overwritten:
<Property name="maxCount">10</Property>
  • Log forwarding configuration block to Graylog (logging level, address, port):
<Property name="gelfLevel">OFF</Property>
<Property name="gelfHost">udp:localhost</Property>
<Property name="gelfPort">12201</Property>
  • Logging level:
<Root level="ERROR">

Notes on configuring communication with the mail server

NGW provides interaction with the mail server via SMTP protocol and is used for sending notifications and reports to email. For correct operation it is required to enable and configure interaction with the mail server.

In the /etc/eltex-ngw/application.conf file, in the email section, the file of settings for interaction with the mail server is specified:

email {
    // Outgoing (service to user) email config
    outgoing.config = "email.conf"                          # configuration select for email

}

The /etc/eltex-ngw/gateway.d/email.conf file is used to configure communication with the mail server:

connection {
  login = "example@example.com"      # Login
  password = ""                      # Password
  senderPrefix = ""                  # Sender address prefix
  host = example.com                 # Mail server address
  port = 587                         # Mail server port (default for unencrypted connection is 25, for encrypted connection is 587)
  sendpartial = true
  starttls = false                   # Use encryption: false, true
  tlsVersion = "TLSv1.2"             # Encryption Protocol
  timeout = 5s
  pool {
    min = 1
    max = 20
    waitTimeout = 10s
  }
}

Важно!

The ability to specify the encryption protocol version "tlsVersion" has been implemented since SoftWLC version 1.21.

To be able to use "TLSv1.0" or "TLSv1.1" it is required to install Java 8 version 291 or earlier.

Service dockerization


The service can be launched in a docker container. For this purpose it is necessary to prepare the file docker-compose.yml

docker-compose.yml
version: "3"

volumes:
  softwlc_logs:
    driver: local
services:
  ngw:
    container_name: ngw
    image: hub.eltex-co.ru/softwlc/eltex-ngw:1.23-<tag>
    ports:
      - 8040:${NGW_PORT}
      # - 1814:1814/udp # For smg.conf if needed
      # - 8041:8041/udp # For sbc.conf if needed
    volumes:
      - "/etc/eltex-ngw/gateway.d:/etc/eltex-ngw/gateway.d"
      - "/etc/timezone:/etc/timezone:ro"
    environment:
      - server.port=${NGW_PORT}
      - JAVA_INIT_HEAP=${JAVA_INIT_HEAP}
      - JAVA_MAX_HEAP=${JAVA_MAX_HEAP}
      - sms.incoming.config=${NGW_SMS_INCOMING_CONF}
      - sms.outgoing.config=${NGW_SMS_OUTGOING_CONF}
      - call.incoming.config=${NGW_CALL_INCOMING_CONF}
      - call.outgoing.config=${NGW_CALL_OUTGOING_CONF}
      - email.outgoing.config=${NGW_EMAIL_OUTGOING_CONF}
      - database.host=${NGW_DB_HOST}
      - database.port=${NGW_DB_PORT}
      - database.name=${NGW_DB_NAME}
      - database.user=${NGW_DB_USER}
      - database.password=${NGW_DB_PASSWORD}
      - database.pool.connectionTimeout=${NGW_DB_POOL_CONNECTION_TIMEOUT}
      - database.pool.min=${NGW_DB_POOL_MIN_IDLE}
      - database.pool.max=${NGW_DB_POOL_SIZE}
      - database.cleanup.events=${NGW_DB_CLEANUP_EVENTS}
      - database.cleanup.messages=${NGW_DB_CLEANUP_MESSAGES}
      - database.cleanup.emails=${NGW_DB_CLEANUP_EMAILS}
      - database.cleanup.files=${NGW_DB_CLEANUP_FILES}
      - database.cleanup.limit_events=${NGW_DB_CLEANUP_LIMIT_EVENTS}
      - database.cleanup.limit_messages=${NGW_DB_CLEANUP_LIMIT_MESSAGES}
      - database.cleanup.limit_emails=${NGW_DB_CLEANUP_LIMIT_EMAILS}
      - database.cleanup.limit_files=${NGW_DB_CLEANUP_LIMIT_FILES}
      - database.cleanup.cron=${NGW_DB_CLEANUP_CRON}
      - database.cleanup.cron_optimize=${NGW_DB_CLEANUP_CRON_OPTIMIZE}
      - NGW_LOG_LEVEL=${NGW_LOG_LEVEL}
      - NGW_CONSOLE_LEVEL=${NGW_CONSOLE_LEVEL}
      - GELF_LEVEL=${GELF_LEVEL}
      - GELF_HOST=${GELF_HOST}
      - GELF_PORT=${GELF_PORT}
      - TZ=${TZ}
Instead of <tag>, you need to specify the current version, which can be viewed at the link.

At the moment it is not possible to configure gateway settings located in the "/etc/eltex-ngw/gateway.d" folder via environment variables. To apply the necessary settings, you must mapping the configuration files of a previously installed deb version.

Some settings can be configured via the environment variables below. To do this, create an .env file and place it next to docker-compose.yml, specifying the necessary variables in the latter. In the "environment" block it is necessary to specify the names of the variables in accordance with the names of the variables in the configuration files. In case variables are not specified or variable names are specified incorrectly, default values will be applied.

.env
NGW_PORT=8040

NGW_SMS_INCOMING_CONF=
NGW_SMS_OUTGOING_CONF=smsc.conf

NGW_CALL_INCOMING_CONF=
NGW_CALL_OUTGOING_CONF=

NGW_EMAIL_OUTGOING_CONF=

NGW_DB_HOST=<IP-address>
NGW_DB_PORT=3306
NGW_DB_NAME=eltex_ngw
NGW_DB_USER=javauser
NGW_DB_PASSWORD=javapassword

NGW_DB_POOL_CONNECTION_TIMEOUT=10s
NGW_DB_POOL_MIN_IDLE=1
NGW_DB_POOL_SIZE=10

NGW_DB_CLEANUP_EVENTS=365d
NGW_DB_CLEANUP_MESSAGES=365d
NGW_DB_CLEANUP_EMAILS=365d
NGW_DB_CLEANUP_FILES=7d
NGW_DB_CLEANUP_LIMIT_EVENTS=1000
NGW_DB_CLEANUP_LIMIT_MESSAGES=1000
NGW_DB_CLEANUP_LIMIT_EMAILS=1000
NGW_DB_CLEANUP_LIMIT_FILES=1000
# Don't clean up
#NGW_DB_CLEANUP_CRON=-
# 3 am each day
NGW_DB_CLEANUP_CRON="0 0 3 * * *"
# Don't optimize tables
#NGW_DB_CLEANUP_CRON_OPTIMIZE=-
# 4 am 5th day each month
NGW_DB_CLEANUP_CRON_OPTIMIZE="0 0 4 5 * *"

NGW_LOG_LEVEL=INFO
NGW_CONSOLE_LEVEL=INFO

GELF_LEVEL=OFF
GELF_HOST=udp:localhost
GELF_PORT=12201

#Настройка часового пояса
TZ=Asia/Novosibirsk

Possible environment variables

Service start
  • NGW_PORT - Grpc port that will listen to the service.
  • JAVA_INIT_HEAP - Xms JVM option.
  • JAVA_MAX_HEAP - Xmx JVM option.
  • JAVA_OPTS - JVM options (can override all other defaults).

SMS settings

  • NGW_SMS_INCOMING_CONF - configuration file for user identification by incoming SMS (from user).
  • NGW_SMS_OUTGOING_CONF - configuration file for user identification by outgoing SMS (to user).
  • sms.pool.waitTimeout - timeout for receiving connection from the pool.
  • sms.pool.min - minimum number of idle connections.
  • sms.pool.max - connection pool size.

Call settings

  • NGW_CALL_INCOMING_CONF - configuration file for user identification by incoming call (from user).
  • NGW_CALL_OUTGOING_CONF - configuration file to identify the user by the outgoing call (to the user).
  • call.pool.waitTimeout -  timeout for receiving a connection from the pool.
  • call.pool.min - minimum number of idle connections.
  • call.pool.max - connection pool size.

Email settings

  • NGW_EMAIL_OUTGOING_CONF - configuration file for outgoing mail.
  • email.pool.waitTimeout - timeout for receiving a connection from the pool.
  • email.pool.min - minimum number of idle connections.
  • email.pool.max - connection pool size.

Database interaction settings

  • NGW_DB_HOST - database connection host.
  • NGW_DB_PORT - database connection port.
  • NGW_DB_NAME - database name.
  • NGW_DB_USER - database user name.
  • NGW_DB_PASSWORD - database user password.
  • NGW_DB_POOL_CONNECTION_TIMEOUT - timeout of receiving connection from the pool.
  • NGW_DB_POOL_MIN_IDLE - minimum number of idle connections.
  • NGW_DB_POOL_SIZE - the size of the database connection pool.
  • NGW_DB_CLEANUP_EVENTS - database events lifetime.
  • NGW_DB_CLEANUP_MESSAGES - database messages lifetime.
  • NGW_DB_CLEANUP_EMAILS - database email lifetime.
  • NGW_DB_CLEANUP_FILES - database lifetime of files sent by email.
  • NGW_DB_CLEANUP_LIMIT_EVENTS - limit of deletions from the event table at a time.

  • NGW_DB_CLEANUP_LIMIT_MESSAGES - limit of deletions from the table of messages at a time.

  • NGW_DB_CLEANUP_LIMIT_EMAILS - limit of deletions from the emails table at a time.

  • NGW_DB_CLEANUP_LIMIT_FILES - limit of deletions from the files table at a time.

  • NGW_DB_CLEANUP_CRON - cron cleanup schedule.

  • NGW_DB_CLEANUP_CRON_OPTIMIZE - cron table optimization schedule.

Logging settings

  • NGW_LOG_LEVEL - log level when sending to the server specified in the "GELF_HOST" setting
  • NGW_CONSOLE_LEVEL - level of logs in docker console
  • GELF_LEVEL - disable/enable sending logs to the server
  • GELF_HOST - server address for sending logs
  • GELF_PORT - server port for sending logs

Time zone setting

  • TZ - time zone in the format Asia/Novosibirsk (the list of existing time zones can be viewed with the command timedatectl list-timezones)

Additional configuration parameters for authorization by incoming call (from user)

Specify in the ".env" file the configuration file to be used:

NGW_CALL_INCOMING_CONF=sbc.conf

Specify the port mapping that is specified in the parameter of the sbc.conf file:

connection {
  port = 8041

in docker-compose.yml file:

    ports:
      - 8040:${NGW_PORT}
      - 8041:8041/udp # For sbc.conf if needed

Additional configuration parameters for authorization by outgoing call (user)

Specify in the ".env" file the configuration file to be used:

NGW_CALL_OUTGOING_CONF=smg.conf

Specify the port mapping that is specified in the smg.conf section parameter:

listen {
  port = 1814

in docker-compose.yml file:

    ports:
      - 8040:${NGW_PORT}
      - 1814:1814/udp # For smg.conf if needed

Service metrics

Service metrics are available at:

http://<IP-адрес eltex-ngw>:8040/actuator/prometheus
Examples of metrics output
# HELP ngw_outgoing_mail_send_with_attachment_count_total  
# TYPE ngw_outgoing_mail_send_with_attachment_count_total counter
ngw_outgoing_mail_send_with_attachment_count_total{application="NGW",status="failure",} 0.0
ngw_outgoing_mail_send_with_attachment_count_total{application="NGW",status="success",} 0.0
# HELP jvm_memory_max_bytes The maximum amount of memory in bytes that can be used for memory management
# TYPE jvm_memory_max_bytes gauge
jvm_memory_max_bytes{application="NGW",area="heap",id="PS Survivor Space",} 1.048576E7
jvm_memory_max_bytes{application="NGW",area="nonheap",id="Compressed Class Space",} 1.073741824E9
jvm_memory_max_bytes{application="NGW",area="nonheap",id="Code Cache",} 2.5165824E8
jvm_memory_max_bytes{application="NGW",area="nonheap",id="Metaspace",} -1.0
jvm_memory_max_bytes{application="NGW",area="heap",id="PS Old Gen",} 1.79306496E8
jvm_memory_max_bytes{application="NGW",area="heap",id="PS Eden Space",} 6.7108864E7
# HELP ngw_skk_sms_sent_total  
# TYPE ngw_skk_sms_sent_total counter
ngw_skk_sms_sent_total{application="NGW",} 0.0
# HELP jetty_threads_current The total number of threads in the pool
# TYPE jetty_threads_current gauge
jetty_threads_current{application="NGW",} 8.0
# HELP ngw_api_session_error_count_total  
# TYPE ngw_api_session_error_count_total counter
ngw_api_session_error_count_total{application="NGW",status="FAILED",} 1.0
# HELP ngw_smg_radius_send_count_total  
# TYPE ngw_smg_radius_send_count_total counter
ngw_smg_radius_send_count_total{application="NGW",result="Unexpected packet",} 0.0
ngw_smg_radius_send_count_total{application="NGW",result="ACK",} 1.0
ngw_smg_radius_send_count_total{application="NGW",result="ANAK",} 0.0
ngw_smg_radius_send_count_total{application="NGW",result="Unknown",} 0.0
# HELP hikaricp_connections_min Min connections
# TYPE hikaricp_connections_min gauge
hikaricp_connections_min{application="NGW",pool="HikariPool-1",} 1.0
# HELP jvm_gc_memory_promoted_bytes_total Count of positive increases in the size of the old generation memory pool before GC to after GC
# TYPE jvm_gc_memory_promoted_bytes_total counter
jvm_gc_memory_promoted_bytes_total{application="NGW",} 1.7299008E7
# HELP process_start_time_seconds Start time of the process since unix epoch.
# TYPE process_start_time_seconds gauge
process_start_time_seconds{application="NGW",} 1.665039420842E9
# HELP jvm_gc_max_data_size_bytes Max size of old generation memory pool
# TYPE jvm_gc_max_data_size_bytes gauge
jvm_gc_max_data_size_bytes{application="NGW",} 1.79306496E8
# HELP jvm_buffer_memory_used_bytes An estimate of the memory that the Java virtual machine is using for this buffer pool
# TYPE jvm_buffer_memory_used_bytes gauge
jvm_buffer_memory_used_bytes{application="NGW",id="mapped",} 0.0
jvm_buffer_memory_used_bytes{application="NGW",id="direct",} 102778.0
# HELP jetty_threads_config_min The minimum number of threads in the pool
# TYPE jetty_threads_config_min gauge
jetty_threads_config_min{application="NGW",} 8.0
# HELP jvm_gc_pause_seconds Time spent in GC pause
# TYPE jvm_gc_pause_seconds summary
jvm_gc_pause_seconds_count{action="end of major GC",application="NGW",cause="Metadata GC Threshold",} 1.0
jvm_gc_pause_seconds_sum{action="end of major GC",application="NGW",cause="Metadata GC Threshold",} 0.125
jvm_gc_pause_seconds_count{action="end of major GC",application="NGW",cause="Ergonomics",} 1.0
jvm_gc_pause_seconds_sum{action="end of major GC",application="NGW",cause="Ergonomics",} 0.125
jvm_gc_pause_seconds_count{action="end of minor GC",application="NGW",cause="Allocation Failure",} 14.0
jvm_gc_pause_seconds_sum{action="end of minor GC",application="NGW",cause="Allocation Failure",} 0.133
jvm_gc_pause_seconds_count{action="end of minor GC",application="NGW",cause="Metadata GC Threshold",} 1.0
jvm_gc_pause_seconds_sum{action="end of minor GC",application="NGW",cause="Metadata GC Threshold",} 0.01
# HELP jvm_gc_pause_seconds_max Time spent in GC pause
# TYPE jvm_gc_pause_seconds_max gauge
jvm_gc_pause_seconds_max{action="end of major GC",application="NGW",cause="Metadata GC Threshold",} 0.0
jvm_gc_pause_seconds_max{action="end of major GC",application="NGW",cause="Ergonomics",} 0.0
jvm_gc_pause_seconds_max{action="end of minor GC",application="NGW",cause="Allocation Failure",} 0.0
jvm_gc_pause_seconds_max{action="end of minor GC",application="NGW",cause="Metadata GC Threshold",} 0.0
# HELP jvm_memory_committed_bytes The amount of memory in bytes that is committed for the Java virtual machine to use
# TYPE jvm_memory_committed_bytes gauge
jvm_memory_committed_bytes{application="NGW",area="heap",id="PS Survivor Space",} 1.048576E7
jvm_memory_committed_bytes{application="NGW",area="nonheap",id="Compressed Class Space",} 1.343488E7
jvm_memory_committed_bytes{application="NGW",area="nonheap",id="Code Cache",} 1.8743296E7
jvm_memory_committed_bytes{application="NGW",area="nonheap",id="Metaspace",} 8.6573056E7
jvm_memory_committed_bytes{application="NGW",area="heap",id="PS Old Gen",} 3.8797312E7
jvm_memory_committed_bytes{application="NGW",area="heap",id="PS Eden Space",} 3.0932992E7
# HELP ngw_incoming_event_process_event_count_total  
# TYPE ngw_incoming_event_process_event_count_total counter
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="false",type="SMS",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="true",type="CALL_COMPLETION",} 3.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="true",type="CALL",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="false",type="CALL",} 0.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="false",type="CALL_COMPLETION",} 3.0
ngw_incoming_event_process_event_count_total{application="NGW",isRequested="true",type="SMS",} 0.0
# HELP hikaricp_connections_max Max connections
# TYPE hikaricp_connections_max gauge
hikaricp_connections_max{application="NGW",pool="HikariPool-1",} 10.0
# HELP ngw_outgoing_sms_request_count_total  
# TYPE ngw_outgoing_sms_request_count_total counter
ngw_outgoing_sms_request_count_total{application="NGW",type="portal_code",} 1.0
# HELP ngw_outgoing_mail_send_count_total  
# TYPE ngw_outgoing_mail_send_count_total counter
ngw_outgoing_mail_send_count_total{application="NGW",status="failure",} 0.0
ngw_outgoing_mail_send_count_total{application="NGW",status="success",} 0.0
# HELP ngw_incoming_event_process_request_count_total  
# TYPE ngw_incoming_event_process_request_count_total counter
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="false",type="SMS",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="true",type="CALL_COMPLETION",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="true",type="CALL",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="false",type="CALL",} 0.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="false",type="CALL_COMPLETION",} 1.0
ngw_incoming_event_process_request_count_total{application="NGW",hasSubscription="true",type="SMS",} 0.0
# HELP process_files_open_files The open file descriptor count
# TYPE process_files_open_files gauge
process_files_open_files{application="NGW",} 156.0
# HELP jvm_memory_used_bytes The amount of used memory
# TYPE jvm_memory_used_bytes gauge
jvm_memory_used_bytes{application="NGW",area="heap",id="PS Survivor Space",} 642208.0
jvm_memory_used_bytes{application="NGW",area="nonheap",id="Compressed Class Space",} 1.2846432E7
jvm_memory_used_bytes{application="NGW",area="nonheap",id="Code Cache",} 1.858592E7
jvm_memory_used_bytes{application="NGW",area="nonheap",id="Metaspace",} 8.3538544E7
jvm_memory_used_bytes{application="NGW",area="heap",id="PS Old Gen",} 2.6466296E7
jvm_memory_used_bytes{application="NGW",area="heap",id="PS Eden Space",} 1035360.0
# HELP hikaricp_connections_active Active connections
# TYPE hikaricp_connections_active gauge
hikaricp_connections_active{application="NGW",pool="HikariPool-1",} 0.0
# HELP jvm_gc_live_data_size_bytes Size of old generation memory pool after a full GC
# TYPE jvm_gc_live_data_size_bytes gauge
jvm_gc_live_data_size_bytes{application="NGW",} 2.508964E7
# HELP jvm_buffer_total_capacity_bytes An estimate of the total capacity of the buffers in this pool
# TYPE jvm_buffer_total_capacity_bytes gauge
jvm_buffer_total_capacity_bytes{application="NGW",id="mapped",} 0.0
jvm_buffer_total_capacity_bytes{application="NGW",id="direct",} 102778.0
# HELP system_load_average_1m The sum of the number of runnable entities queued to available processors and the number of runnable entities running on the available processors averaged over a period of time
# TYPE system_load_average_1m gauge
system_load_average_1m{application="NGW",} 0.9
# HELP http_server_requests_seconds  
# TYPE http_server_requests_seconds summary
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/favicon.ico",} 6.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/favicon.ico",} 0.069144085
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="INFORMATIONAL",status="101",uri="/notif_gw",} 4.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="INFORMATIONAL",status="101",uri="/notif_gw",} 0.165725262
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 47.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 1.732340776
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/doc/**",} 3.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/doc/**",} 0.075942671
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="REDIRECTION",status="304",uri="/doc/**",} 14.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="REDIRECTION",status="304",uri="/doc/**",} 0.062702791
http_server_requests_seconds_count{application="NGW",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/doc",} 2.0
http_server_requests_seconds_sum{application="NGW",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/doc",} 0.084166979
# HELP http_server_requests_seconds_max  
# TYPE http_server_requests_seconds_max gauge
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/favicon.ico",} 0.0
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="INFORMATIONAL",status="101",uri="/notif_gw",} 0.0
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/actuator/prometheus",} 0.0
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="SUCCESS",status="200",uri="/doc/**",} 0.0
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="REDIRECTION",status="304",uri="/doc/**",} 0.0
http_server_requests_seconds_max{application="NGW",exception="None",method="GET",outcome="REDIRECTION",status="302",uri="/doc",} 0.0
# HELP jvm_threads_states_threads The current number of threads having NEW state
# TYPE jvm_threads_states_threads gauge
jvm_threads_states_threads{application="NGW",state="blocked",} 0.0
jvm_threads_states_threads{application="NGW",state="runnable",} 11.0
jvm_threads_states_threads{application="NGW",state="new",} 0.0
jvm_threads_states_threads{application="NGW",state="terminated",} 0.0
jvm_threads_states_threads{application="NGW",state="timed-waiting",} 10.0
jvm_threads_states_threads{application="NGW",state="waiting",} 10.0
# HELP ngw_smg_radius_receive_count_total  
# TYPE ngw_smg_radius_receive_count_total counter
ngw_smg_radius_receive_count_total{application="NGW",result="Malformed packet",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Incorrect authenticator",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Missing phone number",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Success",} 6.0
ngw_smg_radius_receive_count_total{application="NGW",result="Unexpected packet",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Not accounting stop",} 0.0
ngw_smg_radius_receive_count_total{application="NGW",result="Datagram receive failure",} 0.0
# HELP jvm_gc_memory_allocated_bytes_total Incremented for an increase in the size of the young generation memory pool after one GC to before the next
# TYPE jvm_gc_memory_allocated_bytes_total counter
jvm_gc_memory_allocated_bytes_total{application="NGW",} 3.84885672E8
# HELP jvm_threads_daemon_threads The current number of live daemon threads
# TYPE jvm_threads_daemon_threads gauge
jvm_threads_daemon_threads{application="NGW",} 10.0
# HELP ngw_api_session_response_count_total  
# TYPE ngw_api_session_response_count_total counter
ngw_api_session_response_count_total{application="NGW",} 5.0
# HELP process_cpu_usage The "recent cpu usage" for the Java Virtual Machine process
# TYPE process_cpu_usage gauge
process_cpu_usage{application="NGW",} 0.001206832528778314
# HELP system_cpu_count The number of processors available to the Java virtual machine
# TYPE system_cpu_count gauge
system_cpu_count{application="NGW",} 2.0
# HELP ngw_sbc_radius_processed_count_total  
# TYPE ngw_sbc_radius_processed_count_total counter
ngw_sbc_radius_processed_count_total{application="NGW",status="failure",} 0.0
ngw_sbc_radius_processed_count_total{application="NGW",status="success",} 0.0
# HELP jetty_threads_jobs Number of jobs queued waiting for a thread
# TYPE jetty_threads_jobs gauge
jetty_threads_jobs{application="NGW",} 0.0
# HELP jvm_classes_unloaded_classes_total The total number of classes unloaded since the Java virtual machine has started execution
# TYPE jvm_classes_unloaded_classes_total counter
jvm_classes_unloaded_classes_total{application="NGW",} 0.0
# HELP hikaricp_connections_acquire_seconds Connection acquire time
# TYPE hikaricp_connections_acquire_seconds summary
hikaricp_connections_acquire_seconds_count{application="NGW",pool="HikariPool-1",} 2.0
hikaricp_connections_acquire_seconds_sum{application="NGW",pool="HikariPool-1",} 9.68936E-4
# HELP hikaricp_connections_acquire_seconds_max Connection acquire time
# TYPE hikaricp_connections_acquire_seconds_max gauge
hikaricp_connections_acquire_seconds_max{application="NGW",pool="HikariPool-1",} 0.0
# HELP hikaricp_connections Total connections
# TYPE hikaricp_connections gauge
hikaricp_connections{application="NGW",pool="HikariPool-1",} 1.0
# HELP hikaricp_connections_timeout_total Connection timeout total count
# TYPE hikaricp_connections_timeout_total counter
hikaricp_connections_timeout_total{application="NGW",pool="HikariPool-1",} 0.0
# HELP jvm_buffer_count_buffers An estimate of the number of buffers in the pool
# TYPE jvm_buffer_count_buffers gauge
jvm_buffer_count_buffers{application="NGW",id="mapped",} 0.0
jvm_buffer_count_buffers{application="NGW",id="direct",} 14.0
# HELP process_uptime_seconds The uptime of the Java virtual machine
# TYPE process_uptime_seconds gauge
process_uptime_seconds{application="NGW",} 9814.791
# HELP ngw_outgoing_call_execute_count_total  
# TYPE ngw_outgoing_call_execute_count_total counter
ngw_outgoing_call_execute_count_total{application="NGW",status="SUCCESS",} 1.0
# HELP log4j2_events_total Number of fatal level log events
# TYPE log4j2_events_total counter
log4j2_events_total{application="NGW",level="error",} 2.0
log4j2_events_total{application="NGW",level="debug",} 1903.0
log4j2_events_total{application="NGW",level="info",} 37.0
log4j2_events_total{application="NGW",level="trace",} 0.0
log4j2_events_total{application="NGW",level="warn",} 7.0
log4j2_events_total{application="NGW",level="fatal",} 0.0
# HELP jvm_threads_live_threads The current number of live threads including both daemon and non-daemon threads
# TYPE jvm_threads_live_threads gauge
jvm_threads_live_threads{application="NGW",} 31.0
# HELP jetty_threads_config_max The maximum number of threads in the pool
# TYPE jetty_threads_config_max gauge
jetty_threads_config_max{application="NGW",} 200.0
# HELP jvm_threads_peak_threads The peak live thread count since the Java virtual machine started or peak was reset
# TYPE jvm_threads_peak_threads gauge
jvm_threads_peak_threads{application="NGW",} 32.0
# HELP jvm_classes_loaded_classes The number of classes that are currently loaded in the Java virtual machine
# TYPE jvm_classes_loaded_classes gauge
jvm_classes_loaded_classes{application="NGW",} 18000.0
# HELP jetty_threads_idle The number of idle threads in the pool
# TYPE jetty_threads_idle gauge
jetty_threads_idle{application="NGW",} 4.0
# HELP ngw_outgoing_sms_response_count_total  
# TYPE ngw_outgoing_sms_response_count_total counter
ngw_outgoing_sms_response_count_total{application="NGW",status="FAILED",} 1.0
# HELP hikaricp_connections_usage_seconds Connection usage time
# TYPE hikaricp_connections_usage_seconds summary
hikaricp_connections_usage_seconds_count{application="NGW",pool="HikariPool-1",} 2.0
hikaricp_connections_usage_seconds_sum{application="NGW",pool="HikariPool-1",} 1.02
# HELP hikaricp_connections_usage_seconds_max Connection usage time
# TYPE hikaricp_connections_usage_seconds_max gauge
hikaricp_connections_usage_seconds_max{application="NGW",pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_pending Pending threads
# TYPE hikaricp_connections_pending gauge
hikaricp_connections_pending{application="NGW",pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_creation_seconds_max Connection creation time
# TYPE hikaricp_connections_creation_seconds_max gauge
hikaricp_connections_creation_seconds_max{application="NGW",pool="HikariPool-1",} 0.0
# HELP hikaricp_connections_creation_seconds Connection creation time
# TYPE hikaricp_connections_creation_seconds summary
hikaricp_connections_creation_seconds_count{application="NGW",pool="HikariPool-1",} 5.0
hikaricp_connections_creation_seconds_sum{application="NGW",pool="HikariPool-1",} 0.135
# HELP system_cpu_usage The "recent cpu usage" for the whole system
# TYPE system_cpu_usage gauge
system_cpu_usage{application="NGW",} 0.040475306349795764
# HELP process_files_max_files The maximum file descriptor count
# TYPE process_files_max_files gauge
process_files_max_files{application="NGW",} 4096.0
# HELP hikaricp_connections_idle Idle connections
# TYPE hikaricp_connections_idle gauge
hikaricp_connections_idle{application="NGW",pool="HikariPool-1",} 1.0
# HELP jetty_threads_busy The number of busy threads in the pool
# TYPE jetty_threads_busy gauge
jetty_threads_busy{application="NGW",} 3.0

Example of setting up Prometheus connection:

  - job_name: 'NGW'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 60s
    static_configs:
      - targets: ['<IP-адрес eltex-ngw>:8040']

Metrics guide

Label application - 'NGW'.

Metrics are listed in alphabetical order (no help for common metrics starting with jetty, jvm, hikaricp, process, system):


Metric type

Name

Label

Comment

1

counter

http_server_requests_seconds_count

['application', 'exception', 'method', 'outcome', 'status', 'uri']

Number of accesses to the built-in http server

2

gauge

http_server_requests_seconds_max

['application', 'exception', 'method', 'outcome', 'status', 'uri']

Execution time of the longest request to the built-in http server (s)

3

summary

http_server_requests_seconds_sum

['application', 'exception', 'method', 'outcome', 'status', 'uri']

Total execution time of requests to the built-in http server (s)

4

counter

log4j2_events_total

['application', 'level']

Number of logging events

5

counter

ngw_api_session_error_count_total

['application', 'status']

The number of responses to the request from the NGW client that ended with some error when executing the request. Status - indicates the status of the error with which the request was terminated.

6

counter

ngw_api_session_response_count_total

['application']

The number of successful responses to a request from an NGW client on a WebSocket session.

7

counter

ngw_api_session_websocket_failure_count_total

['application', 'cause']

Number of errors when transmitting a response to NGW clients through the web socket. cause - the reason why the communication error occurred.

8

counter

ngw_incoming_event_process_event_count_total

['application', 'isRequested', 'type']

Number of events received from the gateways of incoming SMS or calls.

type – type of event received from the gateway.

The following types are supported:

  1. SMS –  SMS came from the user.
  2. CALL – a call came from the user.
  3. CALL_COMPLETION – the outgoing call to the user is completed.

isRequested – whether there was a request for this event type from systems using NGW.

  1. true – there was a request for this event before it appeared in NGW.
  2. false – there was no request for this event in NGW.

9

counter

ngw_incoming_event_process_request_count_total

['application', 'hasSubscription', 'type']

Number of requests for incoming SMS or call from NGW clients.

NGW clients are Eltex-Portal, Eltex-WiFi-Cab and Jobs.

type – type of event that came from the gateway.

The following types are supported:

  1. SMS – SMS came from the user.
  2. CALL – a call came from the user.
  3. CALL_COMPLETION – the outgoing call to the user is completed.

hasSubscription – whether the event was created before the request was received in NGW.

  1. true – the event was created in NGW before the request was received from the client. It means that the user called/sent SMS before the request was received.
  2. false – the event was created at the moment of client's request to NGW. The event is waiting for its execution by command from the gateway.
10counter

ngw_outgoing_call_execute_count_total

['application', 'status']

The number of times the call execution operation is started towards the user.

Works with all types of gateways.

status – in case of SUCCESS, in case of error FAILED, or any other status set by the gateway.

11

counter

ngw_outgoing_mail_send_count_total

['application', 'status']

Number of sent E-Mail without attachments.

status – status of sending E-Mail without attachments.

It has two states.

  1. sucesss – successfully sent to the E-Mail gateway.
  2. failure – error when sending to the E-Mail gateway.

12

counter

ngw_outgoing_mail_send_with_attachment_count_total

['application', 'status']

Number of sent E-Mail with attachments to the message.

status – status of sending E-Mail with attachments.

It has two states.

  1. sucess – successfully sent to the E-Mail gateway.
  2. failure – error when sending to the E-Mail gateway.

13

counter

ngw_outgoing_sms_request_count_total

['application', 'type']

Number of requests received by NGW to send SMS to an external gateway. Works with all types of gateways, including templated gateways. 

NGW clients are Eltex-Portal, Eltex-WiFi-Cab and Jobs.

type - type of event sent to the external system.

Possible options:

  • portal_code - sending SMS with password from portal;
  • WiFi-Cab. Create user - creating a user in the personal account
  • WiFi-Cab. Edit user - change user in the personal account
  • WiFi-Cab. User password change - change user password
  • WiFi-Cab. Delete user - delete user from the personal account
  • WiFi-Cab. SSID PSK Change - SSID parameter change
  • WiFi-Cab. Auth user password change - change user password for authorization

14

counter

ngw_outgoing_sms_response_count_total

['application', 'status']

The number of responses that the NGW sent in response to a request to send SMS to an external gateway. Works with all types of gateways, including templated gateways.

type - type of event sent to the external system.

Possible variants:

  • portal_code - sending SMS with password from portal;
  • WiFi-Cab. Create user - creating a user in the personal account
  • WiFi-Cab. Edit user - change user in the personal account
  • WiFi-Cab. User password change - change user password
  • WiFi-Cab. Delete user - delete user from the personal account
  • WiFi-Cab. SSID PSK Change - SSID parameter change
  • WiFi-Cab. Auth user password change - change user password for authorization

15

counter

ngw_sbc_radius_processed_count_total

['application', 'status']

Number of successfully processed RADIUS packets received from SBC gateway (authorization by client call).

status – status of processing the packet received from the SBC gateway.

It has two states.

  1. sucesss – successfully processed packet.
  2. failure – an error occurred while processing the packet.

16

counter

ngw_skk_received_statuses_total

['application', 'status']

For SKK gateway

Updating these metrics indicates that a POST receiveStatus is coming from the Gateway with the appropriate statuses (* means intermediate status; otherwise, final):

  • Deferred *

  • Delivered

  • Expired

  • Failed

  • NotDelivered

  • Rejected

  • Transmitted *

In normal operation the number of Transmitted, Delivered should tend to ngw_skk_sms_sent_total.

For explanation of the statuses see below in Description of the statuses of sent SKK Gateway messages.

17

counter

ngw_skk_sms_sent_total

['application']

For SKK gateway

The total number of requests to send SMS through this gateway.

18

counter

ngw_skk_status_changes_total

['application']

For SKK gateway

Updates when:

  • processing POST receiveStatus;

  • processing GET getStatus we see the index change.

19

counter

ngw_skk_status_requests_total

['application']

For SKK gateway

Updated when GET getStatus is processed - manual SMS status request to SKK Gateway.

20

counter

ngw_smg_radius_receive_count_total

['application', 'result']

Number of packets containing the result of a call to the user from the SMG. Have the Accounting-Request Stop type.

result having the following values:

  1. Datagram receive failure – error receiving a UDP packet containing a Radius packet.
  2. Malformed packet – the packet could not be parsed in Radius format.
  3. Incorrect authenticator – incorrect authenticator of Radius packet.
  4. Unexpected packet – unexpected packet type, not Accounting-Request.
  5. Not accounting stop – packet type Accounting-Request, but not the Stop subtype.
  6. Missing phone number – the number of the called subscriber is missing.
  7. Success –  successfully completed call. The number is contained in the packet. Package type is Accounting-Request Stop.

21

counter

ngw_smg_radius_send_count_total

['application', 'result']

The number of packets sent to the SMG gateway. Each sending has its status as a tag. A successful sending means only a successful command to the SMG to execute the call, the call status itself comes in a separate packet in Accounting-Request Stop.

result having the following values:

  1. ACK – the command to execute the call has been successfully accepted.
  2. ANAK – the command to execute the call cannot be executed. 
  3. Unexpected packet – a packet other than ASK or ANAK.
  4. Unknown – unknown transmission error.

Status

Status type

Description

Transmitted

Intermediate

The message is accepted by the operator. An attempt is made to deliver the message to the subscriber.

Delivered

Final

Message is successfully delivered to the subscriber's device.

Not Delivered

Final

- the subscriber is blocked or has been unavailable for more than 24 hours (did not turn on the phone)

- the number is not registered in the network

- the number belongs to a non-cellular operator

- the subscriber has set a ban on receiving SMS from short numbers or the Internet

- the subscriber is on the operator's black list

- the subscriber has previously complained about SPAM or receiving unwanted SMS

Expired

Final

Message lifetime has expired

Failed

Final

An error occurred while sending or generating a message. The most probable reason is an unsuccessful attempt to send a message from the CCM to the operator (technical problems).

In this case it is recommended to repeat the sending. It is necessary to rule out an error in the recipient's number (wrong prefix or number of digits in the number).

Rejected

Final

It is returned in case of errors in filling out the template parameters, for example: empty message text, unauthorized sender name, as well as in case the addressee is blacklisted or an attempt to send a duplicate message (in SKK it is possible to block sending of duplicates).

Deferred

Intermediate

Delivery of the message is scheduled for a future date

Built-in documentation

The NGW service includes built-in documentation.

It can be found on the same port 8040 on which the whole service operates: http://ubuntu:8040/doc/index.html

It is intended primarily for developers.

For example, on the main page you can find out what version of ngw-client should be used when integrating with this service.

  • Нет меток