-
Notifications
You must be signed in to change notification settings - Fork 1
Testing the Agent Core
A large part of the Netdata Agent Core is not testable, i.e. was never written with testability in mind. There are, however, some parts that are testable, in that they don't have many dependencies on other modules (they are self-contained) and testing them is a straightforward matter. The following page identifies some modules that are particularly easy (or are deemed suitable) for testing, based on their dependencies, whether they've been problematic, whether they have possibly concurrency issues, or whether we intend to extend or replace them etc.
| module | action |
|---|---|
| adaptive_resortable_list | ok to test. |
| simple_pattern | investigate |
| url | ignore |
| socket | ignore, need system call mocking |
| buffer | low performance code, we need to test for performance too |
| config | probably should test |
| avl | no evidence of a bug, won't change it, might be good to test |
| dictionary | probably test |
| eval | had some problems, should be tested |
| health | should be tested |
| json | bigger problem, no tests for this. |
| locks | replace with libuv. wrapper keeps refcount for debugging race conditions. |
| log | had some problems with logs. let's write tests, but concurrency is hard. also: stress testing. see if we can replace it. |
| popen | test or replace |
| procfile | had some issues with procfile. this is more than proc. we need to test this. |
| statistical | we need to test this |
| storage_number | move the tests from unit_test.c to something else. |
| string | ignore |
| threads | replace this libuv threads. |
Additional comments:
Within libnetdata the following tasks directly affect testability and/or {stability, maintainability} of the code.
- Unify use of json parsing/processing across the netdata daemon
- Getting rid of useless
#ifdefs - Get rid of thread cancellation because it's buggy.
- Create a mechanism to have our own reliable thread cancellation method.
Consider the testing framework and methodology of libuv as reference for our own testing.
General
- Home
- Why netdata
- Installation
- Installation with docker
- Command Line Options
- Configuration
- Log Files
- Tracing Options
Running Netdata
Special Uses
-
netdata for IoT
lower netdata resource utilization -
high performance netdata
netdata public on the internet
Notes on memory management
-
Memory deduplication
half netdata memory requirements - netdata virtual memory size
Database Replication and Mirroring
- Replication Overview
-
monitoring ephemeral nodes
Use netdata to monitor auto-scaled cloud servers. -
netdata proxies
Streaming netdata metrics between netdata servers.
Backends
archiving netdata collected metrics to a time-series database
-
netdata-backends
graphite,opentsdb,kairosdb,influxdb,elasticsearch,blueflood - netdata with prometheus
- Walk Through: netdata with prometheus and grafana
Health monitoring - Alarms
alarms and alarm notifications in netdata
- Overview
-
Reference
reference for writing alarms -
Examples
simple how-to for writing alarms -
Notifications Configuration
- health API calls
- troubleshooting alarms
Netdata Registry
Monitoring Info
-
Monitoring web servers
The spectacles of a web server log file -
monitoring ephemeral containers
Use netdata to monitor auto-scaled containers. - monitoring systemd services
-
monitoring cgroups
Use netdata to monitor containers and virtual machines. -
monitoring IPMI
Use netdata to monitor enterprise server hardware - Monitoring disks
- Monitoring Go Applications
Netdata Badges
Data Collection
- Add more charts to netdata
- Internal Plugins
- External Plugins
-
statsd
netdata is a fully featured statsd server -
Third Party Plugins
netdata plugins distributed by third parties
Binary Modules
Python Modules
- How to write new module
- apache
- beanstalk
- bind_rndc
- ceph
- couchdb
- cpuidle
- cpufreq
- dns_query_time
- dovecot
- elasticsearch
- exim
- fail2ban
- freeradius
- go_expvar
- haproxy
- hddtemp
- httpcheck
- icecast
- ipfs
- isc_dhcpd
- litespeed
- mdstat
- megacli
- memcached
- mongodb
- mysql
- nginx
- nginx_plus
- nsd
- ntpd
- ovpn_status_log
- phpfpm
- portcheck
- postfix
- postgres
- powerdns
- puppet
- rabbitmq
- redis
- rethinkdbs
- retroshare
- sensors
- spigotmc
- springboot
- squid
- smartd_log
- tomcat
- traefik
- unbound
- varnish
- w1sensor
- web_log
Node.js Modules
BASH Modules
Active BASH Modules
Obsolete BASH Modules
- apache
- cpufreq
- cpu_apps
- exim
- hddtemp
- load_average
- mem_apps
- mysql
- nginx
- phpfpm
- postfix
- sensors
- squid
- tomcat
API Documentation
Web Dashboards
-
Learn how to create dashboards with charts from one or more netdata servers!
Running behind another web server
Package Maintainers
Donations
Blog
-
December, 2016
Linux console tools, fail to report per process CPU usage properly
-
April, 2016
You should install QoS on all your servers (Linux QoS for humans)
Monitor application bandwidth with Linux QoS (Good to do it, anyway)
Monitoring SYNPROXY (Linux TCP Anti-DDoS)
-
March, 2016
Article: Introducing netdata (the design principles of netdata)