Compare commits
16 Commits
2019-05-25
...
2019-11-24
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7681f7774e | ||
|
|
fe0ea31e30 | ||
| f7de6a69bd | |||
| 9151b4dfc5 | |||
|
|
209b1b3e47 | ||
|
|
8355abcbfc | ||
|
|
9150a37969 | ||
|
|
59d243bb9d | ||
|
|
c7a1a433ef | ||
|
|
da750b9c33 | ||
|
|
0ff5f2934e | ||
|
|
f0d5881c80 | ||
|
|
16b0a5b617 | ||
| de02b42953 | |||
| 25275ec0dd | |||
| 19258654cf |
7
Makefile
7
Makefile
@@ -3,6 +3,7 @@ TIME=time
|
||||
|
||||
CHRONY_STATUS=chronyc tracking
|
||||
CHRONY_STATS=chronyc sources -v
|
||||
CHRONY_STATS_SOURCES=chronyc sourcestats
|
||||
|
||||
all: rebuild-switch
|
||||
date
|
||||
@@ -34,7 +35,7 @@ optimise:
|
||||
$(TIME) nix optimise-store
|
||||
|
||||
rebuild-build:
|
||||
nix-channel --add https://nixos.org/channels/nixos-19.03 nixos
|
||||
nix-channel --add https://nixos.org/channels/nixos-19.09 nixos
|
||||
$(TIME) time nixos-rebuild build --fallback --show-trace
|
||||
|
||||
rebuild-switch:
|
||||
@@ -51,13 +52,13 @@ show-roots:
|
||||
|
||||
show-time:
|
||||
-@$(CHRONY_STATUS) && $(CHRONY_STATS)
|
||||
-@watch -d -n 5 "$(CHRONY_STATUS) && echo "--" && $(CHRONY_STATS)"
|
||||
-@watch -d -n 2 "$(CHRONY_STATUS) && echo "-- Statistiques générales :" && $(CHRONY_STATS) && echo "-- Statistiques sur les sources :" && $(CHRONY_STATS_SOURCES) && echo "-- Statistiques sur les clients :" && chronyc clients"
|
||||
|
||||
store-repair:
|
||||
$(TIME) nix-store --verify --check-contents --repair
|
||||
|
||||
upgrade:
|
||||
nix-channel --add https://nixos.org/channels/nixos-19.03 nixos
|
||||
nix-channel --add https://nixos.org/channels/nixos-19.09 nixos
|
||||
$(TIME) nixos-rebuild switch --upgrade --fallback --show-trace
|
||||
|
||||
##--------- Commandes spécifiques pour NixOS -- Opérations non courantes
|
||||
|
||||
@@ -21,7 +21,6 @@ mkIf (flags.developpement && flags.graphical) {
|
||||
# Gestion des sources
|
||||
#gitg # interface pour utiliser git (historique, commit)
|
||||
gitstats # génère un site web statique avec des statistiques
|
||||
gitAndTools.gitFull # pour gitk
|
||||
git-cola # interface pour utiliser git (historique, commit)
|
||||
|
||||
## Visualisation & outils de diff
|
||||
|
||||
@@ -9,9 +9,13 @@ in
|
||||
|
||||
mkIf (true && flags.graphical) {
|
||||
|
||||
# Diagnostic réseau Wireshark (droits fins par le groupe wireshark)
|
||||
programs.wireshark = {
|
||||
enable = true;
|
||||
package = pkgs.wireshark;
|
||||
};
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
## Diagnostic
|
||||
wireshark
|
||||
];
|
||||
}
|
||||
|
||||
@@ -13,14 +13,9 @@ mkIf (flags.radio && flags.graphical) {
|
||||
environment.systemPackages = with pkgs; [
|
||||
## GUI
|
||||
gqrx # GUI
|
||||
gnuradio # Software Defined Radio (SDR) software
|
||||
gnuradio-with-packages # Software Defined Radio (SDR) software
|
||||
|
||||
## A Trier
|
||||
#
|
||||
#gnuradio-osmosdr # Gnuradio block for OsmoSDR and rtl-sdr
|
||||
|
||||
inspectrum # Tool for analysing captured signals from sdr receivers
|
||||
kalibrate-rtl # Calculate local oscillator frequency offset in RTL-SDR devices
|
||||
#inspectrum # Tool for analysing captured signals from sdr receivers
|
||||
];
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@ mkIf true {
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
byobu # permet de se déconnecter d'un terminal sans l'arréter
|
||||
git gitAndTools.tig gti # outil de gestion de version
|
||||
gitAndTools.gitFull gitAndTools.tig gti # outil de gestion de version
|
||||
gnumake # pour décrire les recettes de compilation
|
||||
gnupg # GPG
|
||||
htop # monitoring
|
||||
|
||||
@@ -9,13 +9,17 @@ in
|
||||
|
||||
mkIf flags.developpement-java {
|
||||
|
||||
# Installe le paquet + JAVA_HOME
|
||||
programs.java = {
|
||||
enable = true;
|
||||
package = pkgs.jdk11;
|
||||
};
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
# Java
|
||||
# Systèmes de build autour de java
|
||||
ant
|
||||
maven
|
||||
openjdk
|
||||
gradle
|
||||
];
|
||||
environment.variables = {
|
||||
JAVA_HOME = "${pkgs.openjdk}";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ mkIf flags.developpement {
|
||||
|
||||
# Gestion des sources
|
||||
cloc # outil pour compter les lignes de code source
|
||||
git gitAndTools.gitSVN # git et git-svn
|
||||
mercurial
|
||||
subversion
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ in
|
||||
nix.buildCores = 0;
|
||||
|
||||
# The NixOS release to be compatible with for stateful data such as databases.
|
||||
system.stateVersion = "19.03";
|
||||
system.stateVersion = "19.09";
|
||||
|
||||
# copies the NixOS configuration file (usually /etc/nixos/configuration.nix) and links it from the resulting system (getting to /run/current-system/configuration.nix)
|
||||
system.copySystemConfiguration = true;
|
||||
|
||||
@@ -12,22 +12,28 @@ mkIf flags.laptop {
|
||||
# Gestion spécifique pour PC portable
|
||||
|
||||
## Gestion de l'énergie
|
||||
powerManagement.cpuFreqGovernor = "powersave";
|
||||
services.tlp.enable = true;
|
||||
|
||||
## Activation d'un gestionnaire de réseau
|
||||
networking.networkmanager.enable = true;
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = false;
|
||||
};
|
||||
|
||||
# Gestion graphique du réseau dans la barre système
|
||||
programs.nm-applet.enable = true;
|
||||
|
||||
# Paquets
|
||||
environment.systemPackages = with pkgs; [
|
||||
networkmanagerapplet # gestionnaire réseau graphique + console (nm-applet + nmtui)
|
||||
wirelesstools # fournis iwconfig
|
||||
blueman # outils bluetooth (manager, system tray)
|
||||
cbatticon # status de la batterie dans le system tray
|
||||
];
|
||||
|
||||
# Services
|
||||
services.xserver.synaptics = {
|
||||
services.xserver.libinput = {
|
||||
enable = true;
|
||||
twoFingerScroll = true;
|
||||
};
|
||||
}
|
||||
|
||||
14
options.nix
14
options.nix
@@ -63,7 +63,7 @@ let
|
||||
|
||||
ipAddress = mkOption {
|
||||
description = "Adresse IP.";
|
||||
type = lib.types.string;
|
||||
type = lib.types.str;
|
||||
};
|
||||
nix-serve-server = mkEnableOption "nix-serve server.";
|
||||
nix-serve-client = {
|
||||
@@ -80,18 +80,18 @@ let
|
||||
dnsFQDN = mkOption {
|
||||
example = "device.example.net.";
|
||||
description = "DNS name of host pointing to tunnel IP.";
|
||||
type = lib.types.string;
|
||||
type = lib.types.str;
|
||||
};
|
||||
connectToAddress = mkOption {
|
||||
default = "";
|
||||
example = "192.168.1.1";
|
||||
description = "External address to connect from another node.";
|
||||
type = lib.types.string;
|
||||
type = lib.types.str;
|
||||
};
|
||||
vpnAddress = mkOption {
|
||||
example = "192.168.69.69/24";
|
||||
description = "VPN local node IP address.";
|
||||
type = lib.types.string;
|
||||
type = lib.types.str;
|
||||
};
|
||||
vpnCidrLength = mkOption {
|
||||
default = 24;
|
||||
@@ -106,7 +106,7 @@ let
|
||||
ConnecTo = bar
|
||||
'';
|
||||
description = "Configuration supplémentaire pour tinc.";
|
||||
type = lib.types.string;
|
||||
type = lib.types.str;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -129,7 +129,7 @@ let
|
||||
enable = mkEnableOption "Activation du démarrage de Windows par Grub";
|
||||
drive = mkOption {
|
||||
description = "Lecteur sur lequel est présent le système Windows (au format GRUB)";
|
||||
type = lib.types.string;
|
||||
type = lib.types.str;
|
||||
default = "hd0,1";
|
||||
};
|
||||
};
|
||||
@@ -137,7 +137,7 @@ let
|
||||
enable = mkEnableOption "Montage de la partition data Windows";
|
||||
device = mkOption {
|
||||
description = "Lecteur sur lequel est présent le disque de data Windows";
|
||||
type = lib.types.string;
|
||||
type = lib.types.str;
|
||||
default = "/dev/sda2";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -30,6 +30,14 @@ mkIf flags.munin {
|
||||
ignore_file ^sensors_-wrapped$
|
||||
ignore_file ^.sensors_-wrapped$
|
||||
'';
|
||||
extraPlugins = {
|
||||
chrony = /etc/nixos/base/services/munin-chrony;
|
||||
chrony_tracking_stratum = /etc/nixos/base/services/munin-chrony-tracking-stratum;
|
||||
chrony_tracking_ppm = /etc/nixos/base/services/munin-chrony-tracking-ppm;
|
||||
chrony_tracking_time_ = /etc/nixos/base/services/munin-chrony-tracking-time;
|
||||
chrony_tracking_time_root = /etc/nixos/base/services/munin-chrony-tracking-time-root;
|
||||
chrony_tracking_update_time = /etc/nixos/base/services/munin-chrony-tracking-update-time;
|
||||
};
|
||||
};
|
||||
systemd.services.munin-node = {
|
||||
path = with pkgs; [ munin lm_sensors ];
|
||||
|
||||
123
services/munin-chrony
Executable file
123
services/munin-chrony
Executable file
@@ -0,0 +1,123 @@
|
||||
#!/bin/sh
|
||||
|
||||
: <<=cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
parse Chrony Tracking output for timeserver status information
|
||||
|
||||
=head1 APPLICABLE SYSTEMS
|
||||
|
||||
Any system with a local chronyd service.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
No configuration.
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Revision 0.1 2008/08/23 13:06:00 joti
|
||||
|
||||
First version only chronyc tracking, autodetection included.
|
||||
|
||||
Revision 0.2 2008/10/11 16:09:00 joti
|
||||
|
||||
Added scaling of other values to match with frequency, added more description to fields
|
||||
|
||||
Revision 0.3 2014/02/16 zjttoefs
|
||||
|
||||
reduce forking by using awk
|
||||
do not limit output precision
|
||||
add stratum monitoring
|
||||
detect slow/fast time or freqency and adjust sign of value accordingly
|
||||
remove commented out code
|
||||
|
||||
Revision 0.4 2016/11/10 Lars Kruse
|
||||
|
||||
rewrite field handling
|
||||
use "which" for "chronyc" location
|
||||
switch from "bash" to "sh"
|
||||
fix exit code of failing "autoconf"
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
joti
|
||||
zjttoefs
|
||||
Lars Kruse <devel@sumpfralle.de>
|
||||
|
||||
=cut
|
||||
|
||||
CHRONYC="$(which chronyc | head -1)"
|
||||
|
||||
# Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors.
|
||||
# field definitions:
|
||||
# - munin fieldname
|
||||
# - factor for graph visualization (all values are supposed to reach a similar dimension)
|
||||
# - regular expression of the chrony output line (may not contain whitespace, case insensitive)
|
||||
# - label (may include "%d" for including the factor; may contain whitespace)
|
||||
fields="stratum 1 ^Stratum Stratum
|
||||
systime 1000000 ^System.time System Time (us)
|
||||
offsetlast 1000000 ^Last.offset Last Offset (us)
|
||||
offsetrms 1000000 ^RMS.offset RMS Offset (us)
|
||||
frequency 1 ^Frequency Frequency (ppm)
|
||||
residualfreq 1 ^Residual.freq Residual Freq (ppm)
|
||||
skew 1 ^Skew Skew (ppm)
|
||||
rootdelay 1000000 ^Root.delay Root Delay (us)
|
||||
rootdispersion 1000000 ^Root.dispersion Root Dispersion (us)
|
||||
updateinterval 1 ^Update.interval Update Interval (s)"
|
||||
|
||||
# chrony example output (v2.4.1):
|
||||
# Reference ID : 131.188.3.221 (ntp1.rrze.uni-erlangen.de)
|
||||
# Stratum : 2
|
||||
# Ref time (UTC) : Thu Nov 10 22:39:50 2016
|
||||
# System time : 0.000503798 seconds slow of NTP time
|
||||
# Last offset : +0.000254355 seconds
|
||||
# RMS offset : 0.002186779 seconds
|
||||
# Frequency : 17.716 ppm slow
|
||||
# Residual freq : +0.066 ppm
|
||||
# Skew : 4.035 ppm
|
||||
# Root delay : 0.042980 seconds
|
||||
# Root dispersion : 0.005391 seconds
|
||||
# Update interval : 258.4 seconds
|
||||
# Leap status : Normal
|
||||
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then
|
||||
echo yes
|
||||
else
|
||||
echo "no (missing 'chronyc' executable)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
echo 'graph_title Chrony Tracking Stats'
|
||||
echo 'graph_args --base 1000 -l 0'
|
||||
echo 'graph_vlabel (time,ppm)'
|
||||
echo 'graph_category time'
|
||||
echo 'graph_scale no'
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
# insert the factor, if "%d" is part of the label
|
||||
printf "${fieldname}.label $label\n" "$factor"
|
||||
echo "${fieldname}.type GAUGE"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
chrony_status="$("$CHRONYC" tracking)"
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)"
|
||||
if [ -z "$status_line" ]; then
|
||||
value="U"
|
||||
else
|
||||
# the keyword "slow" indicates negative values
|
||||
value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')"
|
||||
fi
|
||||
echo "${fieldname}.value $value"
|
||||
done
|
||||
116
services/munin-chrony-tracking-ppm
Executable file
116
services/munin-chrony-tracking-ppm
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/bin/sh
|
||||
|
||||
: <<=cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
parse Chrony Tracking output for timeserver status information
|
||||
|
||||
=head1 APPLICABLE SYSTEMS
|
||||
|
||||
Any system with a local chronyd service.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
No configuration.
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Revision 0.1 2008/08/23 13:06:00 joti
|
||||
|
||||
First version only chronyc tracking, autodetection included.
|
||||
|
||||
Revision 0.2 2008/10/11 16:09:00 joti
|
||||
|
||||
Added scaling of other values to match with frequency, added more description to fields
|
||||
|
||||
Revision 0.3 2014/02/16 zjttoefs
|
||||
|
||||
reduce forking by using awk
|
||||
do not limit output precision
|
||||
add stratum monitoring
|
||||
detect slow/fast time or freqency and adjust sign of value accordingly
|
||||
remove commented out code
|
||||
|
||||
Revision 0.4 2016/11/10 Lars Kruse
|
||||
|
||||
rewrite field handling
|
||||
use "which" for "chronyc" location
|
||||
switch from "bash" to "sh"
|
||||
fix exit code of failing "autoconf"
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
joti
|
||||
zjttoefs
|
||||
Lars Kruse <devel@sumpfralle.de>
|
||||
|
||||
=cut
|
||||
|
||||
CHRONYC="$(which chronyc | head -1)"
|
||||
|
||||
# Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors.
|
||||
# field definitions:
|
||||
# - munin fieldname
|
||||
# - factor for graph visualization (all values are supposed to reach a similar dimension)
|
||||
# - regular expression of the chrony output line (may not contain whitespace, case insensitive)
|
||||
# - label (may include "%d" for including the factor; may contain whitespace)
|
||||
fields="frequency 1 ^Frequency Local Clock Frequency Drift (ppm)
|
||||
residualfreq 1 ^Residual.freq Residual Freq (ppm)
|
||||
skew 1 ^Skew Skew (ppm)"
|
||||
|
||||
# chrony example output (v2.4.1):
|
||||
# Reference ID : 131.188.3.221 (ntp1.rrze.uni-erlangen.de)
|
||||
# Stratum : 2
|
||||
# Ref time (UTC) : Thu Nov 10 22:39:50 2016
|
||||
# System time : 0.000503798 seconds slow of NTP time
|
||||
# Last offset : +0.000254355 seconds
|
||||
# RMS offset : 0.002186779 seconds
|
||||
# Frequency : 17.716 ppm slow
|
||||
# Residual freq : +0.066 ppm
|
||||
# Skew : 4.035 ppm
|
||||
# Root delay : 0.042980 seconds
|
||||
# Root dispersion : 0.005391 seconds
|
||||
# Update interval : 258.4 seconds
|
||||
# Leap status : Normal
|
||||
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then
|
||||
echo yes
|
||||
else
|
||||
echo "no (missing 'chronyc' executable)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
echo 'graph_title Chrony Tracking Stats - Frequencies stability'
|
||||
echo 'graph_args --base 1000 -l 0'
|
||||
echo 'graph_vlabel (ppm)'
|
||||
echo 'graph_category time'
|
||||
echo 'graph_scale no'
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
# insert the factor, if "%d" is part of the label
|
||||
printf "${fieldname}.label $label\n" "$factor"
|
||||
echo "${fieldname}.type GAUGE"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
chrony_status="$("$CHRONYC" tracking)"
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)"
|
||||
if [ -z "$status_line" ]; then
|
||||
value="U"
|
||||
else
|
||||
# the keyword "slow" indicates negative values
|
||||
value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')"
|
||||
fi
|
||||
echo "${fieldname}.value $value"
|
||||
done
|
||||
116
services/munin-chrony-tracking-stratum
Executable file
116
services/munin-chrony-tracking-stratum
Executable file
@@ -0,0 +1,116 @@
|
||||
#!/bin/sh
|
||||
|
||||
: <<=cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
parse Chrony Tracking output for timeserver status information
|
||||
|
||||
=head1 APPLICABLE SYSTEMS
|
||||
|
||||
Any system with a local chronyd service.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
No configuration.
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Revision 0.1 2008/08/23 13:06:00 joti
|
||||
|
||||
First version only chronyc tracking, autodetection included.
|
||||
|
||||
Revision 0.2 2008/10/11 16:09:00 joti
|
||||
|
||||
Added scaling of other values to match with frequency, added more description to fields
|
||||
|
||||
Revision 0.3 2014/02/16 zjttoefs
|
||||
|
||||
reduce forking by using awk
|
||||
do not limit output precision
|
||||
add stratum monitoring
|
||||
detect slow/fast time or freqency and adjust sign of value accordingly
|
||||
remove commented out code
|
||||
|
||||
Revision 0.4 2016/11/10 Lars Kruse
|
||||
|
||||
rewrite field handling
|
||||
use "which" for "chronyc" location
|
||||
switch from "bash" to "sh"
|
||||
fix exit code of failing "autoconf"
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
joti
|
||||
zjttoefs
|
||||
Lars Kruse <devel@sumpfralle.de>
|
||||
|
||||
=cut
|
||||
|
||||
CHRONYC="$(which chronyc | head -1)"
|
||||
|
||||
# Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors.
|
||||
# field definitions:
|
||||
# - munin fieldname
|
||||
# - factor for graph visualization (all values are supposed to reach a similar dimension)
|
||||
# - regular expression of the chrony output line (may not contain whitespace, case insensitive)
|
||||
# - label (may include "%d" for including the factor; may contain whitespace)
|
||||
fields="stratum 1 ^Stratum Stratum"
|
||||
|
||||
# chrony example output (v2.4.1):
|
||||
# Reference ID : 131.188.3.221 (ntp1.rrze.uni-erlangen.de)
|
||||
# Stratum : 2
|
||||
# Ref time (UTC) : Thu Nov 10 22:39:50 2016
|
||||
# System time : 0.000503798 seconds slow of NTP time
|
||||
# Last offset : +0.000254355 seconds
|
||||
# RMS offset : 0.002186779 seconds
|
||||
# Frequency : 17.716 ppm slow
|
||||
# Residual freq : +0.066 ppm
|
||||
# Skew : 4.035 ppm
|
||||
# Root delay : 0.042980 seconds
|
||||
# Root dispersion : 0.005391 seconds
|
||||
# Update interval : 258.4 seconds
|
||||
# Leap status : Normal
|
||||
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then
|
||||
echo yes
|
||||
else
|
||||
echo "no (missing 'chronyc' executable)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
echo 'graph_title Chrony Tracking Stats - Stratum'
|
||||
echo 'graph_args --base 1000 -l 0'
|
||||
echo 'graph_vlabel (stratum)'
|
||||
echo 'graph_category time'
|
||||
echo 'graph_scale no'
|
||||
echo 'stratum.warning 8'
|
||||
echo 'stratum.critical 11'
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
# insert the factor, if "%d" is part of the label
|
||||
printf "${fieldname}.label $label\n" "$factor"
|
||||
echo "${fieldname}.type GAUGE"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
chrony_status="$("$CHRONYC" tracking)"
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)"
|
||||
if [ -z "$status_line" ]; then
|
||||
value="U"
|
||||
else
|
||||
# the keyword "slow" indicates negative values
|
||||
value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')"
|
||||
fi
|
||||
echo "${fieldname}.value $value"
|
||||
done
|
||||
118
services/munin-chrony-tracking-time
Executable file
118
services/munin-chrony-tracking-time
Executable file
@@ -0,0 +1,118 @@
|
||||
#!/bin/sh
|
||||
|
||||
: <<=cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
parse Chrony Tracking output for timeserver status information
|
||||
|
||||
=head1 APPLICABLE SYSTEMS
|
||||
|
||||
Any system with a local chronyd service.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
No configuration.
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Revision 0.1 2008/08/23 13:06:00 joti
|
||||
|
||||
First version only chronyc tracking, autodetection included.
|
||||
|
||||
Revision 0.2 2008/10/11 16:09:00 joti
|
||||
|
||||
Added scaling of other values to match with frequency, added more description to fields
|
||||
|
||||
Revision 0.3 2014/02/16 zjttoefs
|
||||
|
||||
reduce forking by using awk
|
||||
do not limit output precision
|
||||
add stratum monitoring
|
||||
detect slow/fast time or freqency and adjust sign of value accordingly
|
||||
remove commented out code
|
||||
|
||||
Revision 0.4 2016/11/10 Lars Kruse
|
||||
|
||||
rewrite field handling
|
||||
use "which" for "chronyc" location
|
||||
switch from "bash" to "sh"
|
||||
fix exit code of failing "autoconf"
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
joti
|
||||
zjttoefs
|
||||
Lars Kruse <devel@sumpfralle.de>
|
||||
|
||||
=cut
|
||||
|
||||
CHRONYC="$(which chronyc | head -1)"
|
||||
|
||||
# Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors.
|
||||
# field definitions:
|
||||
# - munin fieldname
|
||||
# - factor for graph visualization (all values are supposed to reach a similar dimension)
|
||||
# - regular expression of the chrony output line (may not contain whitespace, case insensitive)
|
||||
# - label (may include "%d" for including the factor; may contain whitespace)
|
||||
fields="systime 1000000 ^System.time System Time (us)
|
||||
offsetlast 1000000 ^Last.offset Last Offset (us)
|
||||
offsetrms 1000000 ^RMS.offset RMS Offset (us)
|
||||
rootdelay 1000000 ^Root.delay Root Delay (us)
|
||||
rootdispersion 1000000 ^Root.dispersion Root Dispersion (us)"
|
||||
|
||||
# chrony example output (v2.4.1):
|
||||
# Reference ID : 131.188.3.221 (ntp1.rrze.uni-erlangen.de)
|
||||
# Stratum : 2
|
||||
# Ref time (UTC) : Thu Nov 10 22:39:50 2016
|
||||
# System time : 0.000503798 seconds slow of NTP time
|
||||
# Last offset : +0.000254355 seconds
|
||||
# RMS offset : 0.002186779 seconds
|
||||
# Frequency : 17.716 ppm slow
|
||||
# Residual freq : +0.066 ppm
|
||||
# Skew : 4.035 ppm
|
||||
# Root delay : 0.042980 seconds
|
||||
# Root dispersion : 0.005391 seconds
|
||||
# Update interval : 258.4 seconds
|
||||
# Leap status : Normal
|
||||
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then
|
||||
echo yes
|
||||
else
|
||||
echo "no (missing 'chronyc' executable)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
echo 'graph_title Chrony Tracking Stats - Time'
|
||||
echo 'graph_args --base 1000 -l 0'
|
||||
echo 'graph_vlabel (time)'
|
||||
echo 'graph_category time'
|
||||
echo 'graph_scale no'
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
# insert the factor, if "%d" is part of the label
|
||||
printf "${fieldname}.label $label\n" "$factor"
|
||||
echo "${fieldname}.type GAUGE"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
chrony_status="$("$CHRONYC" tracking)"
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)"
|
||||
if [ -z "$status_line" ]; then
|
||||
value="U"
|
||||
else
|
||||
# the keyword "slow" indicates negative values
|
||||
value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')"
|
||||
fi
|
||||
echo "${fieldname}.value $value"
|
||||
done
|
||||
115
services/munin-chrony-tracking-time-root
Normal file
115
services/munin-chrony-tracking-time-root
Normal file
@@ -0,0 +1,115 @@
|
||||
#!/bin/sh
|
||||
|
||||
: <<=cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
parse Chrony Tracking output for timeserver status information
|
||||
|
||||
=head1 APPLICABLE SYSTEMS
|
||||
|
||||
Any system with a local chronyd service.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
No configuration.
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Revision 0.1 2008/08/23 13:06:00 joti
|
||||
|
||||
First version only chronyc tracking, autodetection included.
|
||||
|
||||
Revision 0.2 2008/10/11 16:09:00 joti
|
||||
|
||||
Added scaling of other values to match with frequency, added more description to fields
|
||||
|
||||
Revision 0.3 2014/02/16 zjttoefs
|
||||
|
||||
reduce forking by using awk
|
||||
do not limit output precision
|
||||
add stratum monitoring
|
||||
detect slow/fast time or freqency and adjust sign of value accordingly
|
||||
remove commented out code
|
||||
|
||||
Revision 0.4 2016/11/10 Lars Kruse
|
||||
|
||||
rewrite field handling
|
||||
use "which" for "chronyc" location
|
||||
switch from "bash" to "sh"
|
||||
fix exit code of failing "autoconf"
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
joti
|
||||
zjttoefs
|
||||
Lars Kruse <devel@sumpfralle.de>
|
||||
|
||||
=cut
|
||||
|
||||
CHRONYC="$(which chronyc | head -1)"
|
||||
|
||||
# Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors.
|
||||
# field definitions:
|
||||
# - munin fieldname
|
||||
# - factor for graph visualization (all values are supposed to reach a similar dimension)
|
||||
# - regular expression of the chrony output line (may not contain whitespace, case insensitive)
|
||||
# - label (may include "%d" for including the factor; may contain whitespace)
|
||||
fields="rootdelay 1000000 ^Root.delay Root Delay (us)
|
||||
rootdispersion 1000000 ^Root.dispersion Root Dispersion (us)"
|
||||
|
||||
# chrony example output (v2.4.1):
|
||||
# Reference ID : 131.188.3.221 (ntp1.rrze.uni-erlangen.de)
|
||||
# Stratum : 2
|
||||
# Ref time (UTC) : Thu Nov 10 22:39:50 2016
|
||||
# System time : 0.000503798 seconds slow of NTP time
|
||||
# Last offset : +0.000254355 seconds
|
||||
# RMS offset : 0.002186779 seconds
|
||||
# Frequency : 17.716 ppm slow
|
||||
# Residual freq : +0.066 ppm
|
||||
# Skew : 4.035 ppm
|
||||
# Root delay : 0.042980 seconds
|
||||
# Root dispersion : 0.005391 seconds
|
||||
# Update interval : 258.4 seconds
|
||||
# Leap status : Normal
|
||||
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then
|
||||
echo yes
|
||||
else
|
||||
echo "no (missing 'chronyc' executable)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
echo 'graph_title Chrony Tracking Stats - Root Time'
|
||||
echo 'graph_args --base 1000 -l 0'
|
||||
echo 'graph_vlabel (time)'
|
||||
echo 'graph_category time'
|
||||
echo 'graph_scale no'
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
# insert the factor, if "%d" is part of the label
|
||||
printf "${fieldname}.label $label\n" "$factor"
|
||||
echo "${fieldname}.type GAUGE"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
chrony_status="$("$CHRONYC" tracking)"
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)"
|
||||
if [ -z "$status_line" ]; then
|
||||
value="U"
|
||||
else
|
||||
# the keyword "slow" indicates negative values
|
||||
value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')"
|
||||
fi
|
||||
echo "${fieldname}.value $value"
|
||||
done
|
||||
114
services/munin-chrony-tracking-update-time
Executable file
114
services/munin-chrony-tracking-update-time
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/bin/sh
|
||||
|
||||
: <<=cut
|
||||
|
||||
=head1 NAME
|
||||
|
||||
parse Chrony Tracking output for timeserver status information
|
||||
|
||||
=head1 APPLICABLE SYSTEMS
|
||||
|
||||
Any system with a local chronyd service.
|
||||
|
||||
=head1 CONFIGURATION
|
||||
|
||||
No configuration.
|
||||
|
||||
=head1 MAGIC MARKERS
|
||||
|
||||
#%# family=auto
|
||||
#%# capabilities=autoconf
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
Revision 0.1 2008/08/23 13:06:00 joti
|
||||
|
||||
First version only chronyc tracking, autodetection included.
|
||||
|
||||
Revision 0.2 2008/10/11 16:09:00 joti
|
||||
|
||||
Added scaling of other values to match with frequency, added more description to fields
|
||||
|
||||
Revision 0.3 2014/02/16 zjttoefs
|
||||
|
||||
reduce forking by using awk
|
||||
do not limit output precision
|
||||
add stratum monitoring
|
||||
detect slow/fast time or freqency and adjust sign of value accordingly
|
||||
remove commented out code
|
||||
|
||||
Revision 0.4 2016/11/10 Lars Kruse
|
||||
|
||||
rewrite field handling
|
||||
use "which" for "chronyc" location
|
||||
switch from "bash" to "sh"
|
||||
fix exit code of failing "autoconf"
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
joti
|
||||
zjttoefs
|
||||
Lars Kruse <devel@sumpfralle.de>
|
||||
|
||||
=cut
|
||||
|
||||
CHRONYC="$(which chronyc | head -1)"
|
||||
|
||||
# Frequency has extremely higher values than other. Therefore they are fitted by scaling via suitable factors.
|
||||
# field definitions:
|
||||
# - munin fieldname
|
||||
# - factor for graph visualization (all values are supposed to reach a similar dimension)
|
||||
# - regular expression of the chrony output line (may not contain whitespace, case insensitive)
|
||||
# - label (may include "%d" for including the factor; may contain whitespace)
|
||||
fields="updateinterval 1 ^Update.interval Update Interval (s)"
|
||||
|
||||
# chrony example output (v2.4.1):
|
||||
# Reference ID : 131.188.3.221 (ntp1.rrze.uni-erlangen.de)
|
||||
# Stratum : 2
|
||||
# Ref time (UTC) : Thu Nov 10 22:39:50 2016
|
||||
# System time : 0.000503798 seconds slow of NTP time
|
||||
# Last offset : +0.000254355 seconds
|
||||
# RMS offset : 0.002186779 seconds
|
||||
# Frequency : 17.716 ppm slow
|
||||
# Residual freq : +0.066 ppm
|
||||
# Skew : 4.035 ppm
|
||||
# Root delay : 0.042980 seconds
|
||||
# Root dispersion : 0.005391 seconds
|
||||
# Update interval : 258.4 seconds
|
||||
# Leap status : Normal
|
||||
|
||||
|
||||
if [ "$1" = "autoconf" ]; then
|
||||
if [ -n "$CHRONYC" ] && [ -x "$CHRONYC" ]; then
|
||||
echo yes
|
||||
else
|
||||
echo "no (missing 'chronyc' executable)"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$1" = "config" ]; then
|
||||
echo 'graph_title Chrony Tracking Stats - Update interval'
|
||||
echo 'graph_args --base 1000 -l 0'
|
||||
echo 'graph_vlabel (time)'
|
||||
echo 'graph_category time'
|
||||
echo 'graph_scale no'
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
# insert the factor, if "%d" is part of the label
|
||||
printf "${fieldname}.label $label\n" "$factor"
|
||||
echo "${fieldname}.type GAUGE"
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
chrony_status="$("$CHRONYC" tracking)"
|
||||
echo "$fields" | while read fieldname factor regex label; do
|
||||
status_line="$(echo "$chrony_status" | grep -i -- "$regex " | cut -d ":" -f 2-)"
|
||||
if [ -z "$status_line" ]; then
|
||||
value="U"
|
||||
else
|
||||
# the keyword "slow" indicates negative values
|
||||
value="$(echo "$status_line" | awk '{ /slow/ ? SIGN=-1 : SIGN=1; print $1 * SIGN * '"$factor"' }')"
|
||||
fi
|
||||
echo "${fieldname}.value $value"
|
||||
done
|
||||
@@ -18,9 +18,8 @@ mkIf flags.nixos-manual {
|
||||
# Services
|
||||
|
||||
## documentation sur ctrl + alt + F8
|
||||
services.nixosManual = {
|
||||
documentation.nixos = {
|
||||
enable = true;
|
||||
showManual = true;
|
||||
};
|
||||
|
||||
# Réseau
|
||||
|
||||
@@ -16,6 +16,7 @@ mkIf flags.pulseaudio {
|
||||
environment.systemPackages = with pkgs; [
|
||||
paprefs # préferences pulseaudio
|
||||
pavucontrol # mixer pulseaudio
|
||||
pa_applet # status et contrôle dans le system tray
|
||||
];
|
||||
|
||||
# Pulse Audio
|
||||
|
||||
Reference in New Issue
Block a user