This article provides instructions for installing and configuring the open source Host sFlow agent to remotely monitor servers using the industry standard sFlow protocol. The sFlow-RT real-time analyzer is used to demonstrate the capabilities of sFlow telemetry.
Find the latest Host sFlow version on the Host sFlow download page.
wget https://github.com/sflow/host-sflow/releases/download/v2.0.26-3/hsflowd-centos8-2.0.26-3.x86_64.rpm sudo rpm -i hsflowd-centos8-2.0.26-3.x86_64.rpm sudo systemctl enable hsflowdThe above commands download and install the software.
sflow { collector { ip=10.0.0.30 } pcap { speed=1G-1T } tcp { } systemd { } }Edit the /etc/hsflowd.conf file. The above example sends sFlow to a collector at 10.0.0.30, enables packet sampling on all network adapters, adds TCP performance information, and exports metrics for Linux services. See Configuring Host sFlow for Linux for the complete set of configuration options.
sudo systemctl restart hsflowdRestart the Host sFlow daemon to start streaming telemetry to the collector.
sflow { dns-sd { domain=.sf.inmon.com } pcap { speed=1G-1T } tcp { } systemd { } }Alternatively, if you have control over a DNS domain, you can use DNS SRV records to advertise sFlow collector address(es). In the above example, the sf.inmon.com domain will be queried for collectors.
sflow-rt A 10.0.0.30 _sflow._udp 60 SRV 0 0 6343 sflow-rtThe above entries from the sf.inmon.com zone file directs the sFlow to sflow-rt.sf.inmon.com (10.0.0.30). If you change the collector, all Host sFlow agents will pick up the change within 60 seconds (the DNS time to live specified in the SRV entry).
Now that the Host sFlow agent has been configured, it's time to install an sFlow collector on server 10.0.0.30, which we will assume is also running CentOS 8.
First install Java.
sudo yum install java-11-openjdk-headlessNext, install the latest version of sFlow-RT along with browse-metrics, browse-flows and prometheus applications.
LATEST=`wget -qO - https://inmon.com/products/sFlow-RT/latest.txt` wget https://inmon.com/products/sFlow-RT/sflow-rt-$LATEST.noarch.rpm sudo rpm -i sflow-rt-$LATEST.noarch.rpm sudo /usr/local/sflow-rt/get-app.sh sflow-rt browse-metrics sudo /usr/local/sflow-rt/get-app.sh sflow-rt browse-flows sudo /usr/local/sflow-rt/get-app.sh sflow-rt prometheus sudo systemctl enable sflow-rt sudo systemctl start sflow-rtFinally, allow sFlow and HTTP requests through the firewall.
sudo firewall-cmd --permanent --zone=public --add-port=6343/udp sudo firewall-cmd --permanent --zone=public --add-port=8008/tcp sudo firewall-cmd --reloadSystem Properties describes configuration options that can be set in the /usr/local/sflow-rt/conf.d/sflow-rt.conf file. See Download and install for instructions on securing access to sFlow-RT as well as links to additional applications.
Use a web browser to connect to http://10.0.0.30:8008/ to access the sFlow-RT web interface (shown above). The Status page confirms that sFlow is being received.
curl http://10.0.0.30:8008/prometheus/metrics/ALL/ALL/txtThe above command retrieves metrics for all the hosts in Prometheus export format.
Configure Prometheus or InfluxDB to periodically retrieve and store metrics. The following examples demonstrate the use of Grafana to query a Prometheus database to populate dashboards: sFlow-RT Network Interfaces, sFlow-RT Countries and Networks, and sFlow-RT Health.
No comments:
Post a Comment