[0/2] Added new Package node_exporter

Message ID 20210506194616.2972714-1-holger.sunke@posteo.de
Headers
Series Added new Package node_exporter |

Message

Holger Sunke May 6, 2021, 7:46 p.m. UTC
  These patches add the new package node_exporter as discussed in the form thread:
https://community.ipfire.org/t/please-add-prometheus-exporter/3555

GO language is required to compile node_exporter. In order to compile
node_exporter for i586 arch, "go" package supported architecture 
must be extended for this.
You'll likely want to download packages and adjust DL_FROM variables
in "go" and "node_exporter" LFS scripts.

Holger Sunke (2):
  Added i586/386 support for GO language required for node_exporter.
  Added new node_exporter package.

 config/rootfiles/packages/node_exporter       |  3 +
 lfs/Config                                    |  4 +
 lfs/go                                        |  6 +-
 lfs/node_exporter                             | 88 +++++++++++++++++++
 make.sh                                       |  1 +
 src/paks/node_exporter/install.sh             | 31 +++++++
 src/paks/node_exporter/uninstall.sh           | 30 +++++++
 src/paks/node_exporter/update.sh              | 27 ++++++
 ..._exporter-configurable-initd-options.patch | 48 ++++++++++
 9 files changed, 235 insertions(+), 3 deletions(-)
 create mode 100644 config/rootfiles/packages/node_exporter
 create mode 100644 lfs/node_exporter
 create mode 100644 src/paks/node_exporter/install.sh
 create mode 100644 src/paks/node_exporter/uninstall.sh
 create mode 100644 src/paks/node_exporter/update.sh
 create mode 100644 src/patches/node_exporter-configurable-initd-options.patch
  

Comments

Adolf Belka May 6, 2021, 8:43 p.m. UTC | #1
Hi Holger,

Welcome to the development team and thanks for your patch submission.

I think that there is some additional information required in this covering note.

I think that it would be good to have some additional information about the use case for node_exporter compared to icinga, monit, zabbix_agentd, nagios, etc that already exist as addons in IPFire. What is it that node_exporter brings that cannot be accomplished by those other packages and warrants it being added to the list.

Historically many addons have been launched and then shortly afterwards the person who introduced the addon has stopped supporting the maintenance of it with updates, fixes etc. Typically then the package has ended up getting out of date.

I believe that the core devs will expect, if the addon is agreed to be a valuable additional package, a longer term commitment from yourself to take on the role of maintainer for the package. It would be good to have that commitment in this covering note.

Regards,

Adolf.

On 06/05/2021 21:46, Holger Sunke wrote:
> These patches add the new package node_exporter as discussed in the form thread:
> https://community.ipfire.org/t/please-add-prometheus-exporter/3555
>
> GO language is required to compile node_exporter. In order to compile
> node_exporter for i586 arch, "go" package supported architecture
> must be extended for this.
> You'll likely want to download packages and adjust DL_FROM variables
> in "go" and "node_exporter" LFS scripts.
>
> Holger Sunke (2):
>    Added i586/386 support for GO language required for node_exporter.
>    Added new node_exporter package.
>
>   config/rootfiles/packages/node_exporter       |  3 +
>   lfs/Config                                    |  4 +
>   lfs/go                                        |  6 +-
>   lfs/node_exporter                             | 88 +++++++++++++++++++
>   make.sh                                       |  1 +
>   src/paks/node_exporter/install.sh             | 31 +++++++
>   src/paks/node_exporter/uninstall.sh           | 30 +++++++
>   src/paks/node_exporter/update.sh              | 27 ++++++
>   ..._exporter-configurable-initd-options.patch | 48 ++++++++++
>   9 files changed, 235 insertions(+), 3 deletions(-)
>   create mode 100644 config/rootfiles/packages/node_exporter
>   create mode 100644 lfs/node_exporter
>   create mode 100644 src/paks/node_exporter/install.sh
>   create mode 100644 src/paks/node_exporter/uninstall.sh
>   create mode 100644 src/paks/node_exporter/update.sh
>   create mode 100644 src/patches/node_exporter-configurable-initd-options.patch
>
  
Holger Sunke May 7, 2021, 6:05 p.m. UTC | #2
Hello Adolf,

the node_exporter provides a simple http download on port 9100 (default) 
that common measures around the OS runtime in a plain text form like this:

http://[firewall]:9100/metrics

# HELP go_gc_duration_seconds A summary of the pause duration of garbage 
collection cycles.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 5.3912e-05
go_gc_duration_seconds{quantile="0.25"} 7.1192e-05
go_gc_duration_seconds{quantile="0.5"} 7.947e-05
go_gc_duration_seconds{quantile="0.75"} 9.8797e-05
go_gc_duration_seconds{quantile="1"} 0.004091312
go_gc_duration_seconds_sum 1.5650559450000001
go_gc_duration_seconds_count 7994
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 8
# HELP go_info Information about the Go environment.
# TYPE go_info gauge
go_info{version="go1.15.4"} 1
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 3.542504e+06
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, 
even if freed.
....
+about 1k additional lines

This is useful for those who have a Prometheus instance up and running 
somewhere in their network that collects these kind of measures from an 
arbitrary amount of machines. Prometheus then stores these in a time 
series database and provides easy query access against these data, 
allowing applications like Grafana simply aggregating and visualizing 
all them or configuring arbitrary kind of alerts.

Summing it up it is very lightweight, simple to integrate but useful 
only when there's a prometheus runnung for you. You'd not setup a 
prometheus/grafana stack just because ipfire can run a node_exporter.


In this first step, only general OS and IO stats are supported as 
node_exporter is nativly shipping with. In a later step we can think 
about adding metrics from log analyzis (number of packets 
dopped/rejected, number of suspectibles by intrusion detections, ...) or 
other custom stuff.
These would be simply written regularly into a text file (ending with 
.prom) and placed in some specific local folder on the ipFire file 
system and would then be picked by node_exporter and simply appended to 
the http://...:9100/metrics response.

Yes, i'd like to maintain this package for the ipfire. I think this 
would include beside others:
- Keep track of and upgrade to new versions
- Keep track especially on security alerts
- Being reponsive on questions regarding the package
- Testing for each supported architecture


Kind regards

Holger

> 
> I believe that the core devs will expect, if the addon is agreed to be a 
> valuable additional package, a longer term commitment from yourself to 
> take on the role of maintainer for the package. It would be good to have 
> that commitment in this covering note.
> 
> Regards,
> 
> Adolf.
> 
> On 06/05/2021 21:46, Holger Sunke wrote:
>> These patches add the new package node_exporter as discussed in the 
>> form thread:
>> https://community.ipfire.org/t/please-add-prometheus-exporter/3555
>>
>> GO language is required to compile node_exporter. In order to compile
>> node_exporter for i586 arch, "go" package supported architecture
>> must be extended for this.
>> You'll likely want to download packages and adjust DL_FROM variables
>> in "go" and "node_exporter" LFS scripts.
>>
>> Holger Sunke (2):
>>    Added i586/386 support for GO language required for node_exporter.
>>    Added new node_exporter package.
>>
>>   config/rootfiles/packages/node_exporter       |  3 +
>>   lfs/Config                                    |  4 +
>>   lfs/go                                        |  6 +-
>>   lfs/node_exporter                             | 88 +++++++++++++++++++
>>   make.sh                                       |  1 +
>>   src/paks/node_exporter/install.sh             | 31 +++++++
>>   src/paks/node_exporter/uninstall.sh           | 30 +++++++
>>   src/paks/node_exporter/update.sh              | 27 ++++++
>>   ..._exporter-configurable-initd-options.patch | 48 ++++++++++
>>   9 files changed, 235 insertions(+), 3 deletions(-)
>>   create mode 100644 config/rootfiles/packages/node_exporter
>>   create mode 100644 lfs/node_exporter
>>   create mode 100644 src/paks/node_exporter/install.sh
>>   create mode 100644 src/paks/node_exporter/uninstall.sh
>>   create mode 100644 src/paks/node_exporter/update.sh
>>   create mode 100644 
>> src/patches/node_exporter-configurable-initd-options.patch
>>
  
Robin Roevens May 24, 2021, 8:45 p.m. UTC | #3
Hi all

I wanted to add that Zabbix server can also interpret Prometheus format
out-of-the-box, so installing node_exporter on IPFire could provide a
possibly more light-weight alternative to installing zabbix_agentd for
monitoring IPFire with Zabbix (however already quite light-weight). Or
an addition as both will probably have different capabilities and
possibilities...Zabbix can fetch info from both.

Regards
Robin

Holger Sunke schreef op vr 07-05-2021 om 18:05 [+0000]:
> Hello Adolf,
> 
> the node_exporter provides a simple http download on port 9100
> (default) 
> that common measures around the OS runtime in a plain text form like
> this:
> 
> http://[firewall]:9100/metrics
> 
> # HELP go_gc_duration_seconds A summary of the pause duration of
> garbage 
> collection cycles.
> # TYPE go_gc_duration_seconds summary
> go_gc_duration_seconds{quantile="0"} 5.3912e-05
> go_gc_duration_seconds{quantile="0.25"} 7.1192e-05
> go_gc_duration_seconds{quantile="0.5"} 7.947e-05
> go_gc_duration_seconds{quantile="0.75"} 9.8797e-05
> go_gc_duration_seconds{quantile="1"} 0.004091312
> go_gc_duration_seconds_sum 1.5650559450000001
> go_gc_duration_seconds_count 7994
> # HELP go_goroutines Number of goroutines that currently exist.
> # TYPE go_goroutines gauge
> go_goroutines 8
> # HELP go_info Information about the Go environment.
> # TYPE go_info gauge
> go_info{version="go1.15.4"} 1
> # HELP go_memstats_alloc_bytes Number of bytes allocated and still in
> use.
> # TYPE go_memstats_alloc_bytes gauge
> go_memstats_alloc_bytes 3.542504e+06
> even if freed.
> ....
> +about 1k additional lines
> 
> This is useful for those who have a Prometheus instance up and
> running 
> somewhere in their network that collects these kind of measures from
> an 
> arbitrary amount of machines. Prometheus then stores these in a time 
> series database and provides easy query access against these data, 
> all them or configuring arbitrary kind of alerts.
> 
> Summing it up it is very lightweight, simple to integrate but useful 
> only when there's a prometheus runnung for you. You'd not setup a 
> prometheus/grafana stack just because ipfire can run a node_exporter.
> 
> 
> In this first step, only general OS and IO stats are supported as 
> node_exporter is nativly shipping with. In a later step we can think 
> about adding metrics from log analyzis (number of packets 
> dopped/rejected, number of suspectibles by intrusion detections, ...)
> or 
> other custom stuff.
> .prom) and placed in some specific local folder on the ipFire file 
> system and would then be picked by node_exporter and simply appended
> to 
> the http://...:9100/metrics response.
> 
> Yes, i'd like to maintain this package for the ipfire. I think this 
> would include beside others:
> - Keep track of and upgrade to new versions
> - Keep track especially on security alerts
> - Being reponsive on questions regarding the package
> - Testing for each supported architecture
> 
> 
> Kind regards
> 
> Holger
> 
> > 
> > I believe that the core devs will expect, if the addon is agreed to
> > be a 
> > valuable additional package, a longer term commitment from yourself
> > to 
> > take on the role of maintainer for the package. It would be good to
> > have 
> > that commitment in this covering note.
> > 
> > Regards,
> > 
> > Adolf.
> > 
> > On 06/05/2021 21:46, Holger Sunke wrote:
> > > These patches add the new package node_exporter as discussed in
> > > the 
> > > form thread:
> > > https://community.ipfire.org/t/please-add-prometheus-exporter/3555
> > > 
> > > GO language is required to compile node_exporter. In order to
> > > compile
> > > node_exporter for i586 arch, "go" package supported architecture
> > > must be extended for this.
> > > You'll likely want to download packages and adjust DL_FROM
> > > variables
> > > in "go" and "node_exporter" LFS scripts.
> > > 
> > > Holger Sunke (2):
> > >    Added i586/386 support for GO language required for
> > > node_exporter.
> > >    Added new node_exporter package.
> > > 
> > >   config/rootfiles/packages/node_exporter       |  3 +
> > >   lfs/Config                                    |  4 +
> > >   lfs/go                                        |  6 +-
> > >   lfs/node_exporter                             | 88
> > > +++++++++++++++++++
> > >   make.sh                                       |  1 +
> > >   src/paks/node_exporter/install.sh             | 31 +++++++
> > >   src/paks/node_exporter/uninstall.sh           | 30 +++++++
> > >   src/paks/node_exporter/update.sh              | 27 ++++++
> > >   ..._exporter-configurable-initd-options.patch | 48 ++++++++++
> > >   9 files changed, 235 insertions(+), 3 deletions(-)
> > >   create mode 100644 config/rootfiles/packages/node_exporter
> > >   create mode 100644 lfs/node_exporter
> > >   create mode 100644 src/paks/node_exporter/install.sh
> > >   create mode 100644 src/paks/node_exporter/uninstall.sh
> > >   create mode 100644 src/paks/node_exporter/update.sh
> > >   create mode 100644 
> > > src/patches/node_exporter-configurable-initd-options.patch
> > > 
>