Daemon
myarmdaemon -- ARM data collection daemon
The agent daemon is running in the background and supports the MyARM agent in delivering the measured ARM data to its final database or archive. It allows the central administration component of MyARM to configure the running MyARM system using the so-called runtime configuration. Also it can be controlled by the myarmdaemoncmd command to stop it, query some information.
Command line options
Usage:
myarmdaemon [options]
The myarmdaemon command supports standard options described in the appendix "Standard options".
- -tp port, --tcp-port port
- specifies the port number to wait for incoming TCP data connections if tcp mode is enabled. This overwrites the configuration property.
Collection mode
The myarmdaemon can be executed in
different data collection modes which can be configured using the
daemon.collection.mode
configuration property:
- none
- This defines that the myarmdaemon should not collect any ARM data. This is usefull if the myarmdaemon is configured to provide only management interfaces (e.g. runtime configuration, access to archive files, Apache Spark support, etc).
- tcp
- The myarmdaemon opens a TCP socket to listen for incoming ARM data connections from TCP datasinks.
- file
- The myarmdaemon scans the
basic.filestorage.reader.directory
for new ARM data files written by file datasinks. - tcp,file
- The myarmdaemon opens a TCP socket to
listen for incoming ARM data connections from TCP datasinks and
scans the
basic.filestorage.reader.directory
for new ARM data files written by file datasinks. - tcp->file
- The myarmdaemon opens a TCP socket to
listen for incoming ARM data connections from TCP datasinks and
writes all received ARM data to the
basic.filestorage.reader.directory
. Thus any ARM data received through a TCP socket is directly written to hard disk and later read in and written to its destination datasink as defined by thedaemon.sink.name
.
Main configuration
daemon.sink.name
- specifies the datasink the received ARM data is written to if
daemon.collection.mode
configuration property is not set tonone
(see appendix "Configuring datasink component" for more details). daemon.group
- defines the group under which the myarmdaemon should be executed. If the myarmdaemon is started as super-user (root) it can
change its group identity to the configured group name.
For example a myarm group.
daemon.user
- defines the user under which the myarmdaemon should be executed. If the myarmdaemon is started as super-user (root) it can
change its user identity to the user name.
For example a myarm user.
daemon.log
.*- defines the logging message options and destination for the myarmdaemon program (See appendix "Configuring Log facility" for more details).
daemon.resource.watchdog
.*- defines the resource watchdog logging for the myarmdaemon program (See appendix "Configuring resource watchdog" for more details).
daemon.pidfile
- defines the file where the myarmdaemon
writes its process id to.
Default is ${MYARM_VARRUN_DIR}/daemon.pid.
TCP server component
If the daemon.collection.mode
configuration property was set to use the TCP server within the
myarmdaemon, a TCP server listening
socket will be created for listening for incoming connection
requests from ARM instrumented applications using the tcp
datasink. The following configuration properties can be used to
control the TCP server component.
Configuration
daemon.tcp.host
- defines the host/interface where the daemon listens for
incoming data connections if the TCP part is enabled by the
daemon.collection.mode
.Default host is localhost.
daemon.tcp.port
- defines the port number where incoming connections are accepted
if the TCP part is enabled by the
daemon.collection.mode
.Default port is 5557.
daemon.tcp.max_clients
- defines the maximum number of TCP clients if the TCP part is
enabled by the
daemon.collection.mode
.Note: This number should always be less than the number of allowed open files of the process. If not, the myarmdaemon tries to increase the number of open files of the process and if this fails, it terminates directly!
Default is 100, minimum is 1, maximum is 32768.
daemon.tcp.flowcontrol.threshold
- if more than this percentage of ARM data buffers are in use,
flow control will be enabled with the tcp datasink. If less
than
daemoon.tcp.flowcontrol.threshold
ARM data buffers are currently used a new incoming ARM data buffer is acknowledged directly after reception. If more thandaemon.tcp.flowcontrol.threshold
ARM data buffers are in use, the acknowledgement of the reception is postponed until the ARM data buffer was processed and written to the myarmdaemon configured datasink.Default is 10%, minimum is 5%, maximum is 50%.
Apache Spark component
The Apache Spark component is used in conjunction with the archive datasink. When the myarmdaemon is configured to store ARM data in the archive, it is possible to export ARM transaction measurement data to an Apache Spark instance using a TCP socket. The Apache Spark TCP client connects to the myarmdaemon Apache Spark TCP server and requests data in CSV format for a specified time interval.
Configuration
daemon.spark.enable
(New since "4.1.x.0")- boolean which indicates if the daemon accepts Apache Spark
client connections.
Default is false.
daemon.spark.host
(New since "4.1.x.0")- defines the host/interface where the daemon listens for
incoming Apache Spark connections.
Default host is localhost.
daemon.spark.port
(New since "4.1.x.0")- specifies the Apache Spark TCP channel port to listen for
Apache Spark connections.
Default is 5587.
daemon.spark.client.host
(New since "4.1.x.0")- specifies the hostname or IP address from the Apache Spark
client. If not empty, only connections from this host/interface are
accepted
Default is localhost.
daemon.spark.csvformat
(New since "4.1.x.0")- specifies the format string to format the CSV line for each
transaction measurement sent to Apache Spark. See formatting a
transaction.
Default is %h,%n,%S,%x,%E\n.
daemon.spark.archive.movefiles
(New since "4.1.x.0")- specifies that a file should be moved from the source directory
to the destination directory after reading in a MyARM data file.
Default is true.
daemon.spark.archive.sourcedir
(New since "4.1.x.0")- specifies the source directory to read MyARM data files from.
Default is ${MYARM_VARLIB_DIR}/archive/current/.
daemon.spark.archive.destinationdir
(New since "4.1.x.0")- specifies the destination directory to move files to when read
in.
Default is ${MYARM_VARLIB_DIR}/archive/final/.
Archive reader component
The archive reader component provides a TCP socket interface for accessing files stored in the Archive. It is used by the myarmbrowser user interface and the myarmarchive command line tool to retrieve transaction data from the archive.
Configuration
daemon.armdata.enable
(New since "4.1.x.0")- boolean which indicates if the daemon accepts archive reader
client connections (true) or not (false).
Default is false.
daemon.armdata.host
(New since "4.1.x.0")- defines the host/interface where the daemon listens for
incoming archive reader connections.
Default host is localhost.
daemon.armdata.port
(New since "4.1.x.0")- specifies the archive reader TCP channel port to listen for new
connections.
Default is 5597.
daemon.armdata.format
(New since "4.1.x.0")- specifies the format string to format the output for each
transaction measurement returned by the archive reader. See
formatting a
transaction.
Default is %n\t%r\t%s\t%q %p %A %U %c\n.
Threshold reader component
The threshold reader component periodically checks the configured threshold directory for new threshold files, reads these files and stores the contents into the configured database.
Configuration
daemon.threshold.reader.enable
- Boolean which indicates if the myarmdaemon should monitor the archive threshold
directory for new threshold files (true) and to process such new
files.
Default is true.
The myarmdaemon reads threshold files, stores contained data into the configured database and deletes the files afterwards. See
basic.archive.database.url
andbasic.archive.database.threshold.name
configuration properties for details. daemon.threshold.reader.directory
- Specifies the directory which should by periodically checked
for new threshold files.
Default is ${MYARM_VARLIB_DIR}/archive/final/thresholds/.
daemon.threshold.reader.transaction.count.max
- Specifies the maximum count per transaction definition of
imported transactions within the defined transaction count interval
(see next item). If zero is specified the limiting is disabled and
all threshold transactions are imported into the database.
Default is 0 (zero), minimum is 0 (zero), maximum is 100000 (one hundred thousand).
daemon.threshold.reader.transaction.count.interval
- Specifies the interval to be used for the limit to import
threshold transaction into the threshold database.
Default is 1h (1 hour), minimum is 1m (1 minute), maximum is 24h (1 day).
daemon.threshold.reader.interval
- Specifies the interval to check for new threshold files within
the archive.
Default is 1m (1 minute), minimum is 1m (1 minute), maximum is 1h (1 hour).
daemon.threshold.reader.cleanup.interval
- Specifies the interval to periodically clean up old threshold
data within the threshold database.
Default is 1m (1 minute), minimum is 1m (1 minute), maximum is 1h (1 hour).
Old threshold data is the data which is older than current time minus the period specified in the
basic.archive.cleanup.keep_data
configuration property.
Command component
The myarmdaemon can be controlled using a TCP command channel (if enabled). This allows an administrator to adopt the behaviour of the myarmdaemon at runtime without stopping and restarting the myarmdaemon.
Commands
The following commands are currently supported:
help
- queries all available commands for this daemon.
info
- queries general version, build information and enabled features about the running daemon.
stop
- signals the daemon to terminate.
status
- queries current status information from the myarmdaemon process. It supports the following
options:
- clients
- shows detailed information about TCP client threads.
- speed
- shows incoming data speed (bytes per second).
- all
- shows all available information.
- long
- shows more detailed information.
- noheader
- avoid printing a header. This is useful if myarmdaemoncmd is used to execute the status command in a loop.
Configuration
daemon.cmd.enable
- enables or disables the command TCP channel for the myarmdaemon.
Default is true.
daemon.cmd.host
- defines the host/interface where the daemon listens for
incoming command connections.
Default host is localhost.
daemon.cmd.port
- specifies the command TCP channel port to use.
Runtime configuration component
The runtime configuration component is used to accept new runtime configurations from the central myarmadmin web application using a TCP channel.
Configuration
daemon.runtime.config.enable
- boolean which indicates if the daemon accepts new runtime
configurations (true) from the runtime administration web frontend
or not (false).
Default is false.
daemon.runtime.config.localhost
(New since "4.0.x.0")- boolean which indicates if the daemon should listen on
localhost (true) for accepting runtime configuration connections or
on the default interface of the host (false).
Default is true.
daemon.rts.enable
- boolean which indicates if the daemon should calculate real
time statistics (RTS) (true) or not (false). Note this only works
if runtime configuration is enabled and appropriate RTS definitions
are available.
Default is false.
Web application component
Starting with version 4.1 of MyARM the myarmdaemon can start the standalone web applications provided by MyARM. This can be enabled by specifying the interface/host and port on which the HTTP server of the web application should listen for incoming HTTP connections.
daemon.web.admin.http
- defines the interface/host and port (delimited by a colon) on
which the myarmadmin
should listen for incoming HTTP connections. If an empty string is
specified this feature will be disabled. For example
localhost:8081
is commonly used for local HTTP server instances.Default is "" (empty string).
daemon.web.browser.http
- defines the interface/host and port (delimited by a colon) on
which the myarmbrowser
should listen for incoming HTTP connections. If an empty string is
specified this feature will be disabled. For example
localhost:8080
is commonly used for local HTTP server instances.Default is "" (empty string).
daemon.web.rtsbrowser.http
- defines the interface/host and port (delimited by a colon) on
which the myarmrtsbrowser should listen for
incoming HTTP connections. If an empty string is specified this
feature will be disabled. For example
localhost:8082
is commonly used for local HTTP server instances.Default is "" (empty string).
daemon.web.rtsmonitor.http
- defines the interface/host and port (delimited by a colon) on
which the myarmrtsmonitor should listen for
incoming HTTP connections. If an empty string is specified this
feature will be disabled. For example
localhost:8083
is commonly used for local HTTP server instances.Default is "" (empty string).
Configuration example
# myarmdaemon processing mode: receive data via TCP and # store received data into a MySQL/MariaDB database daemon.collection.mode = tcp # set up host/interface and port where myarmdaemon is listening # for incoming data connections, limit to 100 concurrent clients daemon.tcp.host = localhost daemon.tcp.port = 5557 daemon.tcp.max_clients = 100 # myarmdaemon TCP flow control threshold daemon.tcp.flowcontrol.threshold = 10 # use MySQL datasink database daemon.sink.name = db_mysql # myarmdaemon process user/group name and pid file daemon.user = myarm daemon.group = myarm daemon.pidfile = /opt/myarm/var/daemon.pid # set up host/port where myarmdaemon is listening for command # connections daemon.cmd.host = localhost daemon.cmd.port = 5554
See Also
myarmoptions
,
myarmconfig
, myarmdaemoncmd