Fix OpenTelemetry DB span parsing
Fixed
- Fix parsing of OpenTelemetry spans emitted by
FastAPI
and popular database libraries.
View the Python package v1.6.1 changelog for more information.
FastAPI
and popular database libraries.View the Python package v1.6.1 changelog for more information.
Support logging through the external collector experimental feature. When the collector_endpoint
configuration option is provided, the OpenTelemetry stack will be automatically configured to instrument logs.
The logging
module will be automatically instrumented, such that log lines emitted through loggers that propagate to the root logger will be automatically sent to AppSignal. To disable this behaviour, add "logging"
to the disable_default_instrumentations
configuration option list.
Support usage with external collector. When the collector_endpoint
configuration option is provided, instead of booting up the AppSignal agent bundled with the application, the OpenTelemetry stack will be configured to send data to the given collector.
This is an experimental feature. The following functionality is not currently supported when using the collector:
Some configuration options are only supported when using the agent or when using the collector. A warning will be emitted if a configuration option that is only supported by one is set while using the other.
View the Python package v1.6.0 changelog for more information.
nginx_port
configuration option. This configuration option can be used to customize the port on which the AppSignal integration exposes the NGINX metrics server.View the Python package v1.5.4 changelog for more information.
graphql
or background
namespaces.View the Python package v1.5.3 changelog for more information.
View the Python package v1.5.2 changelog for more information.
View the Python package v1.5.1 changelog for more information.
db.query.text
attribute and Redis queries in the db.operation.name
attribute./enriched
endpoint on the agent's HTTP server, please migrate to the collector to continue using the beta. The collector has a much better implementation of this feature for the beta.appsignal.stop()
after sending check-in events would leave a dangling thread, stopping the application from shutting down correctly.View the Python package v1.5.0 changelog for more information.
CONTAINER_VERSION
system environment variable is present, it will use used to set the revision
config option automatically. Overwrite it's value by configuring the revision
config option for your application.INSERT INTO ... VALUES
queries.View the Python package v1.4.1 changelog for more information.
Add support for heartbeat check-ins.
Use the appsignal.check_in.heartbeat
function to send a single heartbeat check-in event from your application. This can be used, for example, in your application's main loop:
from appsignal.check_in import heartbeat while True: heartbeat("job_processor") process_job()
Heartbeats are deduplicated and sent asynchronously, without blocking the current thread. Regardless of how often the .heartbeat
function is called, at most one heartbeat with the same identifier will be sent every ten seconds.
Pass continuous=True
as the second argument to send heartbeats continuously during the entire lifetime of the current process. This can be used, for example, after your application has finished its boot process:
def main(): start_app() heartbeat("my_app", continuous=True)
appsignal.check_in.cron
, instead of blocking the current thread while the check-in events are sent, schedule them to be sent in a separate thread.View the Python package v1.4.0 changelog for more information.
set_gauge
in favor of the newer OpenTelemetry's sync implementation.View the Python package v1.3.10 changelog for more information.
Add helper to manually stop the agent process for this AppSignal instance.
Some contexts, like serverless functions, exit before AppSignal can ensure all data is sent to our servers. To ensure the data is sent, the new appsignal.stop()
method can be called to gracefully stop the AppSignal agent process.
View the Python package v1.3.9 changelog for more information.
Rename heartbeats to cron check-ins. Calls to appsignal.heartbeat
and appsignal.Heartbeat
should be replaced with calls to appsignal.check_in.cron
and appsignal.check_in.Cron
, for example:
# Before from appsignal import heartbeat def do_something(): pass heartbeat("do_something", do_something) # After from appsignal.check_in import cron def do_something(): pass cron("do_something", do_something)
appsignal.heartbeat
and to the appsignal.Heartbeat
constructor will emit a deprecation warning.View the Python package v1.3.8 changelog for more information.
View the Python package v1.3.7 changelog for more information.
Fix an issue where Redis events are misidentified as HTTP events.
View the Python package v1.3.6 changelog for more information.
Rename the hostname
tag, which contains the host of the URI that an HTTP request was made against, to request_host
.
This fixes an issue where the hostname
tag would later be internally overriden to the hostname of the machine processing the request, but notifications would still be emitted containing the previous hostname
value.
View the Python package v1.3.5 changelog for more information.
Add noop mode for unsupported system like MS Windows.
See the Python package 1.3.4 changelog for more information.
Support Kamal-based deployments. Read the KAMAL_VERSION
environment variable, which Kamal exposes within the deployed container, if present, and use it as the application revision if it is not set. This will automatically report deploy markers for applications using Kamal.
See the Python package 1.3.3 changelog for more information.
Add support for the aiopg
, asyncpg
, mysql
(from the mysql-connector-python
package), mysqlclient
, and pymysql
database adapters.
To enable AppSignal to instrument queries performed using these packages, follow the instructions in our PostgreSQL and MySQL documentation pages.
See the Python package 1.3.2 changelog for more information.
Add support for SQLAlchemy, SQLite and version 3 of the psycopg
PostgreSQL adapter.
To enable AppSignal to instrument queries performed using these packages, follow the instructions in our SQLAlchemy, SQLite and PostgreSQL documentation pages.
See the Python package 1.3.1 changelog for more information.
Heartbeats are currently only available to beta testers. If you are interested in trying it out, send an email to support@appsignal.com!
Add heartbeats support. You can use the heartbeat
function to send heartbeats directly from your code, to track the execution of certain processes:
from appsignal import heartbeat def send_invoices(): # ... your code here ... heartbeat("send_invoices")
It is also possible to pass a defined function as an argument to the heartbeat
function:
def send_invoices(): # ... your code here ... heartbeat("send_invoices", send_invoices)
If an exception is raised within the function, the finish event will not be reported to AppSignal, triggering a notification about the missing heartbeat. The exception will be raised outside of the heartbeat function.
See the Python package 1.3.0 changelog for more information.
AppSignal offers a 30-day free trial, no credit card is required. All features are available in all plans. Start monitoring your application in just a few clicks!