Skip to content

AxonOps Server Installation

Installation

Select the OS Family

Execute the following commands to setup the AxonOps repository and install AxonOps Server:

sudo apt-get update
sudo apt-get install -y curl gnupg ca-certificates

curl -L https://packages.axonops.com/apt/repo-signing-key.gpg \
  | sudo gpg --dearmor -o /usr/share/keyrings/axonops.gpg

echo "deb [arch=arm64,amd64 signed-by=/usr/share/keyrings/axonops.gpg]\
  https://packages.axonops.com/apt axonops-apt main" \
  | sudo tee /etc/apt/sources.list.d/axonops-apt.list
sudo apt-get update

sudo apt-get install axon-server

Configuration File Locations

The following files are installed into the local file system:

  • Configuration File: /etc/axonops/axon-server.yml
  • Binary: /usr/share/axonops/axon-server
  • Logs: /var/log/axonops/axon-server.log
  • Systemd service: /usr/lib/systemd/system/axon-server.service
  • Copyright : /usr/share/doc/axonops/axon-server/copyright
  • Licenses : /usr/share/axonops/licenses/axon-server/

Configure AxonOps Server

Configure Elasticsearch

Confirm the network.host and http.port values within /etc/elasticsearch/elasticsearch.yml for the dedicated Elasticsearch instance correspond to the values for search_db within /etc/axonops/axon-server.yml.

The following example works for the default Single-Server configuration:

search_db:
  hosts:
    - http://localhost:9200

Basic Auth in Elasticsearch

If using Basic Auth with the default Single-Server configuration, ensure search_db values are setup using the following format:

search_db:
  hosts:
    - http://localhost:9200

  username: opensearch-user
  password: my-strong-password

Update the above username and password with the dedicated service account/user created in Elasticsearch.

Load Balancing for Elasticsearch

By default, AxonOps Server will only connect to the Elasticsearch nodes listed in its configuration and will not automatically discover other nodes in the cluster. To enable AxonOps' node discovery, set search_db.discover_nodes:true which will utilize the full list of discovered nodes to round-robin requests sent to Elasticsearch.

When setting up load balancing nodes or infrastructure in front of Elasticsearch, the load balancer has smart load balancing capabilites and AxonOps' node discovery is not required.

Setup AxonOps License

This section is for Enterprise plan clients and is not needed on the Free Forever plan.

Ensure the following values are set to unlock the Enterprise features of AxonOps:

license_key: license-key
org_name: my-company

Note: Both values need to match the information provided during the Enterprise onboarding process and are case-sensitive. These values cannot be found on console.axonops.com.

Configure Cassandra as Metrics Store

To use Cassandra as AxonOps' metrics store, specify at least one CQL host within the cql_hosts key within /etc/axonops/axon-server.yml.

For better performance on larger clusters (10+ nodes), it is recommended to use Cassandra as a Metrics Storage engine.

Sample Configuration File

The following is a sample configuration file that can be used as a quick reference:

# axon-server listening address (used by axon-agents for connections)
# (env variable: AXONSERVER_HOST)
host: 0.0.0.0
# axon-server listening port for agent connections
agents_port: 1888

# axon-server listening address
# (env variable: used by axon-dash for connections)
api_host: 127.0.0.1

# axon-server HTTP API listening port (used by axon-dash)
# (AXONSERVER_PORT)
api_port: 8080

search_db:
  # Elasticsearch endpoint
  # (env variable:ELASTIC_HOSTS, comma separated list)
  hosts:
    - http://localhost:9200

  username: opensearch-user
  password: my-strong-password

  # SSL/TLS config for Elasticsearch
  skip_verify: false # Disables CA and Hostname verification

  # Configure the number of replicas per shard. Defaults to 0 if not specified.
  replicas: 0

  # Configure the number of shards per index.
  # The default value of 1 is recommended for most use cases
  shards: 1

  # Enable/disable Elasticsearch cluster discovery (sniffing).
  # Defaults to false, set to true to enable
  # Allows more nodes to be added to Elasticsearch for Metrics storage
  # without having to restart Axon-Server
  # and update search_db.hosts with all the ELK node values.
  discover_nodes: false

  # How often to perform cluster discovery.
  # Default is every 5 minutes if this is omitted
  discover_nodes_interval: 1m

  max_results: 1000

#integrations_proxy: # proxy endpoint for integrations. (INTEGRATIONS_PROXY)

# AxonOps licensing
license_key: license-key
org_name: my-company

# SSL/TLS Settings for AxonOps Agent connections
tls:
  mode: "disabled" # disabled, TLS
  # Only set below if mode is TLS
  skipVerify: false # Disables CA and Hostname verification
  caFile: "path_to_certs_on_axonops_server.crt" # required if skipVerify is not set and you are using a self-signed cert
  certFile: "path_to_certs_on_axonops_server.crt"
  keyFile: "path_to_key_file_on_axonops_server.key"

# For better performance on large clusters, you can use a CQL store for the metrics.
# To opt-in for CQL metrics storage, just specify at least one CQL host.
# We do recommend to specify a NetworkTopologyStrategy for cql_keyspace_replication
#cql_hosts: #  (CQL_HOSTS, comma separated list)
#  - 192.168.0.10:9042
#  - 192.168.0.11:9042
#cql_username: "cassandra" # (CQL_USERNAME)
#cql_password: "cassandra" # (CQL_PASSWORD)
#cql_local_dc: datacenter1 # (CQL_LOCAL_DC)
#cql_ssl: false # (CQL_SSL)
#cql_skip_verify: false  # (CQL_SSL_SKIP_VERIFY)
#cql_ca_file: /path/to/ca_file  # (CQL_CA_FILE)
#cql_cert_file: /path/to/cert_file  # (CQL_CERT_FILE)
#cql_key_file: /path/to/key_file  # (CQL_KEY_FILE)
#cql_autocreate_tables: true # (CQL_AUTO_CREATE_TABLES) this will tell axon-server to automatically create the metrics tables (true is recommended)
#cql_keyspace_replication: "{ 'class' : 'SimpleStrategy', 'replication_factor' : 1 }" # (CQL_KS_REPLICATION) keyspace replication for the metrics tables
#cql_read_consistency: "LOCAL_ONE" # (CQL_READ_CONSISTENCY) #One of the following:  ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, LOCAL_ONE
#cql_write_consistency: "LOCAL_ONE" # (CQL_WRITE_CONSISTENCY) #One of the following:    ANY, ONE, TWO, THREE, QUORUM, ALL, LOCAL_QUORUM, EACH_QUORUM, LOCAL_ONE

axon-dash: # This must point to the axon-dash address accessible from axon-server
  host: 127.0.0.1
  port: 3000
  https: false

alerting:
# How long to wait before sending a notification again if it has already
# been sent successfully for an alert. (Usually ~3h or more).
  notification_interval: 3h

# Default retention settings, most can be overridden from the frontend
retention:
  events: 8w # logs and events retention. Must be expressed in weeks (w)
  metrics:
      high_resolution: 14d # High frequency metrics. Must be expressed in days (d)
      med_resolution: 12w # Must be expressed in weeks (w)
      low_resolution: 12M # Must be expressed in months (M)
      super_low_resolution: 2y # Must be expressed in years (y)
  backups: # Those are use as defaults but can be overridden from the UI
    local: 10d
    remote: 30d

Start the AxonOps Server

This following will start the axon-server process as the axonops user, which was created during the package installation. The default listening address is 0.0.0.0:8080.

sudo systemctl daemon-reload
sudo systemctl start axon-server
sudo systemctl status axon-server

Next - Install AxonOps Dashboard

Now that AxonOps Server (axon-server) is installed, you can start installing the GUI for it: AxonOps Dashboard (axon-dash).