digitalocean / do-agent

Collects system metrics from DigitalOcean Droplets
Apache License 2.0
598 stars 98 forks source link

do-agent on FreeBSD exports only CPU, load, disk usage and bandwidth metric #237

Open mjakob-gh opened 3 years ago

mjakob-gh commented 3 years ago

Describe the problem

The (with fix #236) build do-agent exports only CPU, load, disk usage and bandwidth metric, at least thats what is shown in the Graphs on the webinterface.

Steps to reproduce

create a FreeBSD droplet, install the do-agent (steps to build it are in #236), run the agent e.g: do-agent-freebsd-amd64 --debug --collector.cpu --collector.devstat --collector.zfs --collector.meminfo check the graphs in the webinterface

Expected behavior

All relevant metrics are shown in the webinterface

System Information

Distribution and version:

do-agent information:

FreeBSD 12.2-RELEASE-p2

./do-agent-freebsd-amd64 -v

do-agent (DigitalOcean Agent)

Version:     3.8.0
Revision:    3b03160
Build Date:  So. 27 Dez. 2020 15:05:38 UTC
Go Version:  go1.15.6
Website:     https://github.com/digitalocean/do-agent

Copyright (c) 2020 DigitalOcean, Inc. All rights reserved.

This work is licensed under the terms of the Apache 2.0 license.
For a copy, see <https://www.apache.org/licenses/LICENSE-2.0.html>.
mjakob-gh commented 3 years ago

The node_exporter which is the base of do-agent, as far as i can see, extracts a lot more metrics from a FreeBSD System. e.g node_exporter --log.level=debug --collector.filesystem.ignored-fs-types='^(cd9660|procfs|devfs)$' --collector.netdev.device-blacklist='^(lo0|pflog0)$' --collector.devstat

yields these metrics:

node_boot_time_seconds 1.608825861410354e+09
node_cpu_seconds_total{cpu="0",mode="idle"} 251822.3937007874
node_cpu_seconds_total{cpu="0",mode="interrupt"} 297.8976377952756
node_cpu_seconds_total{cpu="0",mode="nice"} 0.8740157480314961
node_cpu_seconds_total{cpu="0",mode="system"} 1520.236220472441
node_cpu_seconds_total{cpu="0",mode="user"} 3544.6929133858266
node_devstat_blocks_transferred_total{device="vtbd0"} 1.14502326e+08
node_devstat_blocks_transferred_total{device="vtbd1"} 223
node_devstat_busy_time_seconds_total{device="vtbd0"} 646
node_devstat_busy_time_seconds_total{device="vtbd1"} 0
node_devstat_bytes_total{device="vtbd0",type="read"} 1.4653878272e+10
node_devstat_bytes_total{device="vtbd0",type="write"} 4.397131264e+10
node_devstat_bytes_total{device="vtbd1",type="read"} 114176
node_devstat_bytes_total{device="vtbd1",type="write"} 0
node_devstat_duration_seconds_total{device="vtbd0",type="other"} 0
node_devstat_duration_seconds_total{device="vtbd0",type="read"} 263.40998935843567
node_devstat_duration_seconds_total{device="vtbd0",type="write"} 587.153131876513
node_devstat_duration_seconds_total{device="vtbd1",type="other"} 0
node_devstat_duration_seconds_total{device="vtbd1",type="read"} 0.00913826999994573
node_devstat_duration_seconds_total{device="vtbd1",type="write"} 0
node_devstat_transfers_total{device="vtbd0",type="other"} 0
node_devstat_transfers_total{device="vtbd0",type="read"} 896182
node_devstat_transfers_total{device="vtbd0",type="write"} 1.333487e+06
node_devstat_transfers_total{device="vtbd1",type="other"} 0
node_devstat_transfers_total{device="vtbd1",type="read"} 48
node_devstat_transfers_total{device="vtbd1",type="write"} 0
node_exec_context_switches_total 5.2028221e+07
node_exec_device_interrupts_total 2.3297e+06
node_exec_forks_total 34938
node_exec_software_interrupts_total 3.875678e+06
node_exec_system_calls_total 6.1900054e+07
node_exec_traps_total 1.7177296e+07
node_exporter_build_info{branch="release-1.0",goversion="go1.15.2",revision="0",version="1.0.1"} 1
node_filesystem_avail_bytes{device="/dev/gpt/rootfs",fstype="ufs",mountpoint="/"} 6.4407552e+09
node_filesystem_device_error{device="/dev/gpt/rootfs",fstype="ufs",mountpoint="/"} 0
node_filesystem_files{device="/dev/gpt/rootfs",fstype="ufs",mountpoint="/"} 2.407678e+06
node_filesystem_files_free{device="/dev/gpt/rootfs",fstype="ufs",mountpoint="/"} 2.107013e+06
node_filesystem_free_bytes{device="/dev/gpt/rootfs",fstype="ufs",mountpoint="/"} 7.937441792e+09
node_filesystem_readonly{device="/dev/gpt/rootfs",fstype="ufs",mountpoint="/"} 0
node_filesystem_size_bytes{device="/dev/gpt/rootfs",fstype="ufs",mountpoint="/"} 1.8708615168e+10
node_load1 0.708984375
node_load15 0.66552734375
node_load5 0.68310546875
node_memory_active_bytes 1.88030976e+08
node_memory_buffer_bytes 1.0809344e+08
node_memory_cache_bytes 0
node_memory_free_bytes 1.67153664e+08
node_memory_inactive_bytes 3.58027264e+08
node_memory_size_bytes 1.006723072e+09
node_memory_swap_in_bytes_total 1.9214336e+07
node_memory_swap_out_bytes_total 1.51035904e+08
node_memory_swap_size_bytes 2.147483648e+09
node_memory_swap_used_bytes 1.48783104e+08
node_memory_wired_bytes 2.64298496e+08
node_network_receive_bytes_total{device="vtnet0"} 4.04484491e+08
node_network_receive_drop_total{device="vtnet0"} 0
node_network_receive_errs_total{device="vtnet0"} 0
node_network_receive_multicast_total{device="vtnet0"} 71
node_network_receive_packets_total{device="vtnet0"} 289107
node_network_transmit_bytes_total{device="vtnet0"} 8.3092883e+07
node_network_transmit_drop_total{device="vtnet0"} 0
node_network_transmit_errs_total{device="vtnet0"} 0
node_network_transmit_multicast_total{device="vtnet0"} 0
node_network_transmit_packets_total{device="vtnet0"} 197485
node_textfile_scrape_error 0
node_time_seconds 1.609083048503723e+09
node_uname_info{domainname="xyz",machine="amd64",nodename="mynode",release="12.2-RELEASE-p1",sysname="FreeBSD",version="FreeBSD 12.2-RELEASE-p1 GENERIC "} 1
node_zfs_abdstats_linear_count_total 0
node_zfs_abdstats_linear_data_bytes 0
node_zfs_abdstats_scatter_chunk_waste_bytes 0
node_zfs_abdstats_scatter_count_total 0
node_zfs_abdstats_scatter_data_bytes 0
node_zfs_abdstats_struct_bytes 0
node_zfs_arcstats_anon_bytes 0
node_zfs_arcstats_c_bytes 7.864416e+07
node_zfs_arcstats_c_max_bytes 6.2915328e+08
node_zfs_arcstats_c_min_bytes 7.864416e+07
node_zfs_arcstats_data_bytes 0
node_zfs_arcstats_demand_data_hits_total 0
node_zfs_arcstats_demand_data_misses_total 0
node_zfs_arcstats_demand_metadata_hits_total 0
node_zfs_arcstats_demand_metadata_misses_total 0
node_zfs_arcstats_hdr_bytes 0
node_zfs_arcstats_hits_total 0
node_zfs_arcstats_mfu_bytes 0
node_zfs_arcstats_mfu_ghost_hits_total 0
node_zfs_arcstats_mfu_ghost_size 0
node_zfs_arcstats_misses_total 0
node_zfs_arcstats_mru_bytes 0
node_zfs_arcstats_mru_ghost_bytes 0
node_zfs_arcstats_mru_ghost_hits_total 0
node_zfs_arcstats_other_bytes 0
node_zfs_arcstats_p_bytes 3.932208e+07
node_zfs_arcstats_size_bytes 0
node_zfs_zfetchstats_hits_total 0
node_zfs_zfetchstats_misses_total 0

This version of node_exporter reads the above metrics:

node_exporter --version
node_exporter, version 1.0.1 (branch: release-1.0, revision: 0)
  build user:       root
  build date:
  go version:       go1.15.2
bsnyder788 commented 3 years ago

:wave: hey @mjakob-gh this is intended functionality. Thanks for opening the 2 issues around FreeBSD. I will look into fixing the build issue you pointed out in the other issue. The metrics visible in the cloud UI are the only ones we store on our side for display that way.

mjakob-gh commented 3 years ago

Thanks for looking into this. Just to clarify, the graphs of my droplet show the metrics for CPU, load, disk usage and bandwidth, but the metrics for Memory and Disk I/O have no Data, see this screenshot: image

The node_exporter can read these values (see the node_devstat... and node_memory... values above) on a FreeBSD System, but they seem to get lost, on the way to the graphs.

bsnyder788 commented 3 years ago

@mjakob-gh thanks for the clarification. I will look into both of your issues and see if we can make it work better in general on FreeBSD

mjakob-gh commented 3 years ago

I created a beefy Ubuntu droplet to see, how the performance monitoring looks over there. I noticed that only "Bandwidth", "CPU Usage" and "Disk I/O" is shown on the graph page. image Maybe there were changes in this functionality, since my droplet is 3 years old, by now. So, if "Memory", "Disk Usage" and "Load" are no longer supported, there is no need for putting effort into this. "Disk I/O" would be nice, though. I also noticed, on FreeBSD the "CPU" percentage is shown as single value, on Ubuntu it is "CPU Usage", with user and sys graphed separately.

bsnyder788 commented 3 years ago

The graph view you are seeing there is the hypervisor graph view which is shown for droplets without the do-agent installed. Are you sure that Ubuntu droplet has the agent installed and running? @mjakob-gh

bsnyder788 commented 3 years ago

The graph view you are seeing there is the hypervisor graph view which is shown for droplets without the do-agent installed. Are you sure that Ubuntu droplet has the agent installed and running? @mjakob-gh

You may have to hard refresh the page if you just installed the agent as well for it to get picked up and transition to the more detailed view.

mjakob-gh commented 3 years ago

Ah, yes. I visited various parts of the web interface like Networking or Volumes, but when coming back, the graphs did not change. After a ctrl+F5 the correct graphs are displayed, even with the single CPU % value like in my FreeBSD droplet. Thanks.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had any recent activity. It will be closed if no further activity occurs.

bsnyder788 commented 3 years ago

still valid

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had any recent activity. It will be closed if no further activity occurs.

bsnyder788 commented 3 years ago

still valid

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had any recent activity. It will be closed if no further activity occurs.

bsnyder788 commented 2 years ago

still valid

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had any recent activity. It will be closed if no further activity occurs.

bsnyder788 commented 2 years ago

still valid