Compare commits
13 Commits
pkg/dev/eo
...
master
Author | SHA1 | Date | |
---|---|---|---|
45c97c765b | |||
43e34f8de8 | |||
16d7bfa7f2 | |||
d9b253b63d | |||
a5fb3de2c0 | |||
7023209d9b | |||
31bf813036 | |||
fc2cfd9102 | |||
1a2f7172d9 | |||
628fdafdea | |||
b4fde311a5 | |||
e431a4207e | |||
71787a9cf6 |
8
Makefile
8
Makefile
@ -1,11 +1,11 @@
|
|||||||
################################
|
################################
|
||||||
# Makefile pour eole-prometheus
|
# Makefile pour XXX-XXX
|
||||||
################################
|
################################
|
||||||
|
|
||||||
SOURCE=eole-prometheus
|
SOURCE=eole-prometheus
|
||||||
VERSION=0.0.1
|
VERSION=0.1
|
||||||
EOLE_VERSION=2.6
|
EOLE_VERSION=2.7
|
||||||
EOLE_RELEASE=2.6.2
|
EOLE_RELEASE=2.7.0
|
||||||
PKGAPPS=non
|
PKGAPPS=non
|
||||||
|
|
||||||
################################
|
################################
|
||||||
|
37
README.md
37
README.md
@ -1,42 +1,34 @@
|
|||||||
## eole-prometheus
|
# eole-prometheus
|
||||||
|
|
||||||
Eolisation de la solution de surveillance Prometheus.
|
Eolisation de la solution de surveillance Prometheus.
|
||||||
|
|
||||||
Grafana est pris en charge dans l'eolisation et peut ou non être activé.
|
Grafana est pris en charge dans l'eolisation et peut ou non être activé.
|
||||||
L'exporter système (node-exporter) est dans la configuration par défaut (Prométheus se surveille lui même).
|
|
||||||
|
|
||||||
### eole-prometheus :
|
L'exporter système (node-exporter) est dans la configuration par défaut (Prometheus se surveille lui même).
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
1. gen_config
|
#### Installer `eole-prometheus`
|
||||||
|
|
||||||
|
1. Ajouter le dépôt officiel de [Grafana](http://docs.grafana.org/installation/debian/#apt-repository). Dans l'interface `GenConfig`
|
||||||
```
|
```
|
||||||
Mode expert > Dépot tiers > Ajouter un dépot
|
Mode expert > Dépot tiers > Ajouter un dépot
|
||||||
Cadoles pour environnement de Qualification
|
Dépôt officiel Grafana
|
||||||
Libellé du dépot = Cadoles
|
Libellé du dépot = Dépôt officiel Grafana
|
||||||
Déclaration du dépôt = deb https://vulcain.cadoles.com 2.6.2-staging main
|
Déclaration du dépôt = deb https://packages.grafana.com/oss/deb stable main
|
||||||
Méthode de récupération de la clé = URL de la clé
|
Méthode de récupération de la clé = URL de la clé
|
||||||
URL de la clé = https://vulcain.cadoles.com/cadoles.gpg
|
URL de la clé = https://packages.grafana.com/gpg.key
|
||||||
```
|
```
|
||||||
|
2. Ajouter le dépôt Cadoles. Dans l'interface `GenConfig`
|
||||||
* Pour ajouter une sonde sur eole :
|
|
||||||
|
|
||||||
1. gen_config
|
|
||||||
|
|
||||||
```
|
```
|
||||||
Mode expert > Dépot tiers > Ajouter un dépot
|
Mode expert > Dépot tiers > Ajouter un dépot
|
||||||
Cadoles pour environnement de Qualification
|
Cadoles pour environnement de Dev
|
||||||
Libellé du dépot = Cadoles
|
Libellé du dépot = Cadoles
|
||||||
Déclaration du dépôt = deb https://vulcain.cadoles.com xenial-staging main
|
Déclaration du dépôt = deb https://vulcain.cadoles.com 2.7.0-dev main
|
||||||
Méthode de récupération de la clé = URL de la clé
|
Méthode de récupération de la clé = URL de la clé
|
||||||
URL de la clé = https://vulcain.cadoles.com/cadoles.gpg
|
URL de la clé = https://vulcain.cadoles.com/cadoles.gpg
|
||||||
```
|
```
|
||||||
|
|
||||||
* Pour ajouter une sonde sur ubuntu xenial:
|
|
||||||
|
|
||||||
```
|
|
||||||
echo "deb https://vulcain.cadoles.com xenial-staging main" > /etc/apt/sources.list.d/cadoles.list
|
|
||||||
wget -O - https://vulcain.cadoles.com/cadoles.gpg|apt-key add -
|
|
||||||
```
|
|
||||||
|
|
||||||
Il faut ouvrir les ports en fonction des exporters. Tous les exporters n'utilisent pas le même port.
|
Il faut ouvrir les ports en fonction des exporters. Tous les exporters n'utilisent pas le même port.
|
||||||
|
|
||||||
Le paquet eole-prometheus ouvre les ports sur le serveur où Prometheus sera installé :
|
Le paquet eole-prometheus ouvre les ports sur le serveur où Prometheus sera installé :
|
||||||
@ -44,4 +36,3 @@ Le paquet eole-prometheus ouvre les ports sur le serveur où Prometheus sera ins
|
|||||||
* 9090 pour le serveur prometheus
|
* 9090 pour le serveur prometheus
|
||||||
* 9100 pour la sonde node-exporter
|
* 9100 pour la sonde node-exporter
|
||||||
* 3000 pour le serveur Grafana
|
* 3000 pour le serveur Grafana
|
||||||
|
|
||||||
|
1
debian/compat
vendored
1
debian/compat
vendored
@ -1 +0,0 @@
|
|||||||
7
|
|
11
debian/control
vendored
11
debian/control
vendored
@ -1,11 +0,0 @@
|
|||||||
Source: eole-prometheus
|
|
||||||
Section: web
|
|
||||||
Priority: optional
|
|
||||||
Maintainer: Cadoles <contact@cadoles.com>
|
|
||||||
Build-Depends: debhelper (>= 9)
|
|
||||||
Standards-Version: 3.9.3
|
|
||||||
|
|
||||||
Package: eole-prometheus
|
|
||||||
Architecture: amd64
|
|
||||||
Depends: ${misc:Depends}, prometheus, grafana, eole-node-exporter, prometheus-alertmanager, curl
|
|
||||||
Description: Eolisation de Prometheus
|
|
44
debian/copyright
vendored
44
debian/copyright
vendored
@ -1,44 +0,0 @@
|
|||||||
Format: http://dep.debian.net/deps/dep5
|
|
||||||
Upstream-Name: {PROJECT}
|
|
||||||
Source: {URL}
|
|
||||||
|
|
||||||
Files: *
|
|
||||||
Copyright: YEAR {UPSTREAM} {AUTHOR} <{MAIL}>
|
|
||||||
License: {UPSTREAM LICENSE}
|
|
||||||
|
|
||||||
Files: debian/*
|
|
||||||
Copyright: 2012 Équipe EOLE <eole@ac-dijon.fr>
|
|
||||||
License: CeCILL-2
|
|
||||||
|
|
||||||
License: {UPSTREAM LICENSE}
|
|
||||||
{TEXT OF THE LICENSE}
|
|
||||||
|
|
||||||
License: CeCILL-2
|
|
||||||
This software is governed by the CeCILL-2 license under French law and
|
|
||||||
abiding by the rules of distribution of free software. You can use,
|
|
||||||
modify and or redistribute the software under the terms of the CeCILL-2
|
|
||||||
license as circulated by CEA, CNRS and INRIA at the following URL
|
|
||||||
"http://www.cecill.info";.
|
|
||||||
.
|
|
||||||
As a counterpart to the access to the source code and rights to copy,
|
|
||||||
modify and redistribute granted by the license, users are provided only
|
|
||||||
with a limited warranty and the software's author, the holder of the
|
|
||||||
economic rights, and the successive licensors have only limited
|
|
||||||
liability.
|
|
||||||
.
|
|
||||||
In this respect, the user's attention is drawn to the risks associated
|
|
||||||
with loading, using, modifying and/or developing or reproducing the
|
|
||||||
software by the user in light of its specific status of free software,
|
|
||||||
that may mean that it is complicated to manipulate, and that also
|
|
||||||
therefore means that it is reserved for developers and experienced
|
|
||||||
professionals having in-depth computer knowledge. Users are therefore
|
|
||||||
encouraged to load and test the software's suitability as regards their
|
|
||||||
requirements in conditions enabling the security of their systems and/or
|
|
||||||
data to be ensured and, more generally, to use and operate it in the
|
|
||||||
same conditions as regards security.
|
|
||||||
.
|
|
||||||
The fact that you are presently reading this means that you have had
|
|
||||||
knowledge of the CeCILL-2 license and that you accept its terms.
|
|
||||||
.
|
|
||||||
On Eole systems, the complete text of the CeCILL-2 License can be found
|
|
||||||
in '/usr/share/common-licenses/CeCILL-2-en'.
|
|
0
debian/eole-prometheus.install
vendored
0
debian/eole-prometheus.install
vendored
8
debian/rules
vendored
8
debian/rules
vendored
@ -1,8 +0,0 @@
|
|||||||
#!/usr/bin/make -f
|
|
||||||
# -*- makefile -*-
|
|
||||||
|
|
||||||
# Uncomment this to turn on verbose mode.
|
|
||||||
# export DH_VERBOSE=1
|
|
||||||
|
|
||||||
%:
|
|
||||||
dh $@
|
|
1
debian/source/format
vendored
1
debian/source/format
vendored
@ -1 +0,0 @@
|
|||||||
3.0 (quilt)
|
|
@ -3,17 +3,20 @@
|
|||||||
<files>
|
<files>
|
||||||
<file filelist='prometheus' name='/etc/default/prometheus' source='prometheus.defaults' mkdir='True' rm='True'/>
|
<file filelist='prometheus' name='/etc/default/prometheus' source='prometheus.defaults' mkdir='True' rm='True'/>
|
||||||
<file filelist='prometheus' name='/etc/prometheus/prometheus.yml' mkdir='True' rm='True'/>
|
<file filelist='prometheus' name='/etc/prometheus/prometheus.yml' mkdir='True' rm='True'/>
|
||||||
<file filelist='alertmanager' name='/etc/prometheus/alertmanager.yml' mkdir='True' rm='True'/>
|
<file filelist='prometheus-alertmanager' name='/etc/prometheus/alertmanager.yml' mkdir='True' rm='True'/>
|
||||||
<file filelist='alertmanager' name='/etc/prometheus/rules.d/alert-rules.yml' mkdir='True' rm='True'/>
|
<file filelist='prometheus-alertmanager' name='/etc/prometheus/rules.d/alert-rules.yml' mkdir='True' rm='True'/>
|
||||||
<file filelist='alertmanager' name='/etc/prometheus/rules.d/predict-rules.yml' mkdir='True' rm='True'/>
|
<file filelist='prometheus-alertmanager' name='/etc/prometheus/rules.d/predict-rules.yml' mkdir='True' rm='True'/>
|
||||||
<file filelist='grafana' name='/etc/grafana/grafana.ini' mkdir='True' rm='True'/>
|
<file filelist='grafana' name='/etc/grafana/grafana.ini' mkdir='True' rm='True'/>
|
||||||
|
<file filelist='grafana' name='/etc/grafana/provisioning/dashboards/eole.yml' source='grafana-dashboards.yml' mkdir='True' rm='True'/>
|
||||||
|
<file filelist='grafana' name='/etc/grafana/provisioning/datasources/eole.yml' source='grafana-datasources.yml' mkdir='True' rm='True'/>
|
||||||
|
<file filelist='grafana' name='/var/lib/grafana/dashboards/eole.json' source='grafana-node-dashboard.json' mkdir='True' rm='True'/>
|
||||||
|
|
||||||
<service>prometheus</service>
|
<service>prometheus</service>
|
||||||
<service>alertmanager</service>
|
<service>prometheus-alertmanager</service>
|
||||||
<service>grafana-server</service>
|
<service>grafana-server</service>
|
||||||
<service_access service='prometheus'>
|
<service_access service='prometheus'>
|
||||||
<port service_accesslist="prometheus">9090</port>
|
<port service_accesslist="prometheus">9090</port>
|
||||||
<port service_accesslist="alertmanager">9093</port>
|
<port service_accesslist="prometheus-alertmanager">9093</port>
|
||||||
</service_access>
|
</service_access>
|
||||||
<service_access service='grafana-server'>
|
<service_access service='grafana-server'>
|
||||||
<port service_accesslist="grafana">3000</port>
|
<port service_accesslist="grafana">3000</port>
|
||||||
@ -257,8 +260,8 @@
|
|||||||
<condition name='disabled_if_in' source='activerAlertmanager'>
|
<condition name='disabled_if_in' source='activerAlertmanager'>
|
||||||
<param>non</param>
|
<param>non</param>
|
||||||
<target type='family'>alertes prometheus</target>
|
<target type='family'>alertes prometheus</target>
|
||||||
<target type='filelist'>alertmanager</target>
|
<target type='filelist'>prometheus-alertmanager</target>
|
||||||
<target type='service_accesslist'>alertmanager</target>
|
<target type='service_accesslist'>prometheus-alertmanager</target>
|
||||||
</condition>
|
</condition>
|
||||||
|
|
||||||
<condition name='disabled_if_in' source='addTargetPrometheus'>
|
<condition name='disabled_if_in' source='addTargetPrometheus'>
|
||||||
|
@ -1,91 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
|
|
||||||
function importDataSource()
|
|
||||||
{
|
|
||||||
local grURL="${1}/api/datasources" # Grafana API URL
|
|
||||||
local dsName=${2} # Datasource Name
|
|
||||||
local dsURL="${3}" # Datasource URL
|
|
||||||
local dsType="prometheus" # Datasource type
|
|
||||||
|
|
||||||
cmd="curl"
|
|
||||||
|
|
||||||
|
|
||||||
data=$(cat <<__EOF__
|
|
||||||
{"name":"${dsName}","type":"${dsType}","url":"${dsURL}","access":"direct"}
|
|
||||||
__EOF__
|
|
||||||
)
|
|
||||||
|
|
||||||
echo -ne "\tCreating datasource for Prometheus "
|
|
||||||
res=$(${cmd} "${grURL}" -H "Content-Type: application-json" --data-binary "${data}" 2>&1 )
|
|
||||||
excode=${?}
|
|
||||||
case $res in
|
|
||||||
*"already exists"*)
|
|
||||||
echo " ... [Exists]"
|
|
||||||
;;
|
|
||||||
*"Datasource added"*)
|
|
||||||
echo " ... [OK]"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo " ... Ooops ${res}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
function importDashboardFromMarket()
|
|
||||||
{
|
|
||||||
local grURL="${1}/api/dashboards/import" # API URL to create new Dashboard
|
|
||||||
local dsName="${2}" # Datasource name (to link dashboard to data)
|
|
||||||
local dhID="${3}" # Dashboard ID in the market
|
|
||||||
local dhRev="${4}" # Dashboard Revision to download
|
|
||||||
local tmpFile=$(mktemp)
|
|
||||||
local dhFile=$(mktemp)
|
|
||||||
|
|
||||||
# URL To download the json file for dashboard
|
|
||||||
local pubDashBoardURL="https://grafana.com/api/dashboards/${dhID}/revisions/${dhRev}/download"
|
|
||||||
|
|
||||||
local cmd="curl"
|
|
||||||
|
|
||||||
local dh=$(${cmd} --silent ${pubDashBoardURL} 2>&1)
|
|
||||||
|
|
||||||
cat <<_EOF_ > ${tmpFile}
|
|
||||||
{
|
|
||||||
"inputs": [ { "name":"DS_LOCALHOST", "type":"datasource", "pluginId":"prometheus", "value":"${dsName}" } ],
|
|
||||||
"dashboard": { "title": "Surveillance Système", ${dh:1:-1} },
|
|
||||||
"folderId": 0,
|
|
||||||
"overwrite": true
|
|
||||||
}
|
|
||||||
_EOF_
|
|
||||||
|
|
||||||
res=$(${cmd} "${grURL}" -H "Content-Type: application-json" --data-binary "@${tmpFile}" 2>&1 )
|
|
||||||
excode=${?}
|
|
||||||
case $res in
|
|
||||||
*"\"imported\":true"*)
|
|
||||||
echo " ... [Overwrited]"
|
|
||||||
;;
|
|
||||||
*"Datasource added"*)
|
|
||||||
echo " ... [OK]"
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo " ... Ooops ${res}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
# rm -rf ${tmpFile}
|
|
||||||
}
|
|
||||||
|
|
||||||
grafanaHost=$(CreoleGet srvGrafanaIP 127.0.0.1)
|
|
||||||
grafanaPort=$(CreoleGet srvGrafanaPort 3000)
|
|
||||||
grafanaUser="admin"
|
|
||||||
grafanaPasswd=$(CreoleGet grafana_admin_passwd admin)
|
|
||||||
grafanaURL="http://${grafanaUser}:${grafanaPasswd}@${grafanaHost}:${grafanaPort}"
|
|
||||||
datasource_name=$(CreoleGet promDataSource "prometheus")
|
|
||||||
promHost=$(CreoleGet adresse_ip_eth0)
|
|
||||||
promPort='9090'
|
|
||||||
datasourceURL="http://${promHost}:${promPort}"
|
|
||||||
|
|
||||||
importDataSource ${grafanaURL} ${datasource_name} ${datasourceURL}
|
|
||||||
echo
|
|
||||||
echo -ne "\tImporting Node Exporter Full Dashboard "
|
|
||||||
importDashboardFromMarket ${grafanaURL} ${datasource_name} 1860 11
|
|
||||||
|
|
||||||
rm -rf ${dashBoardFile}
|
|
@ -39,3 +39,12 @@ groups:
|
|||||||
a value of {{ $value }}.
|
a value of {{ $value }}.
|
||||||
summary: Instance {{ $labels.instance }} filesystem usage is dangerously high
|
summary: Instance {{ $labels.instance }} filesystem usage is dangerously high
|
||||||
|
|
||||||
|
# Heavy CPU temperature
|
||||||
|
- alert: cpu_temp_threshold_exceeded
|
||||||
|
expr: avg(node_hwmon_temp_celsius{job="node"}) BY (instance)
|
||||||
|
> 70
|
||||||
|
annotations:
|
||||||
|
description: This device's cpu temperature has exceeded the threshold with a value
|
||||||
|
of {{ $value }}.
|
||||||
|
summary: Instance {{ $labels.instance }} CPU temperature is dangerously high
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ route:
|
|||||||
- match:
|
- match:
|
||||||
%%{sroute.alSubRouteMatchSource}: %%alSubRouteMatchValue
|
%%{sroute.alSubRouteMatchSource}: %%alSubRouteMatchValue
|
||||||
receiver: %%alSubRouteMatchReceiver
|
receiver: %%alSubRouteMatchReceiver
|
||||||
|
continue: true
|
||||||
%end if
|
%end if
|
||||||
%end for
|
%end for
|
||||||
%end if
|
%end if
|
||||||
@ -89,6 +90,7 @@ route:
|
|||||||
- match:
|
- match:
|
||||||
%%{rt.alRouteMatchSource}: %%{rt.alRouteMatchValue}
|
%%{rt.alRouteMatchSource}: %%{rt.alRouteMatchValue}
|
||||||
receiver: %%rt.alRouteMatchReceiver
|
receiver: %%rt.alRouteMatchReceiver
|
||||||
|
continue: true
|
||||||
|
|
||||||
%if not %%is_empty('alSubRoute')
|
%if not %%is_empty('alSubRoute')
|
||||||
routes:
|
routes:
|
||||||
@ -97,6 +99,7 @@ route:
|
|||||||
- match:
|
- match:
|
||||||
%%{sroute.alSubRouteMatchSource}: %%{sroute.alSubRouteMatchValue}
|
%%{sroute.alSubRouteMatchSource}: %%{sroute.alSubRouteMatchValue}
|
||||||
receiver: %%sroute.alSubRouteMatchReceiver
|
receiver: %%sroute.alSubRouteMatchReceiver
|
||||||
|
continue: true
|
||||||
%end if
|
%end if
|
||||||
%end for
|
%end for
|
||||||
%end if
|
%end if
|
||||||
|
10
tmpl/grafana-dashboards.yml
Normal file
10
tmpl/grafana-dashboards.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# # config file version
|
||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
providers:
|
||||||
|
- name: 'eole'
|
||||||
|
orgId: 1
|
||||||
|
folder: ''
|
||||||
|
type: file
|
||||||
|
options:
|
||||||
|
path: /var/lib/grafana/dashboards
|
11
tmpl/grafana-datasources.yml
Normal file
11
tmpl/grafana-datasources.yml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
apiVersion: 1
|
||||||
|
|
||||||
|
datasources:
|
||||||
|
- name: Prometheus
|
||||||
|
type: prometheus
|
||||||
|
access: proxy
|
||||||
|
orgId: 1
|
||||||
|
url: http://%%adresse_ip_eth0:9090
|
||||||
|
isDefault: true
|
||||||
|
version: 1
|
||||||
|
editable: false
|
19519
tmpl/grafana-node-dashboard.json
Normal file
19519
tmpl/grafana-node-dashboard.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -21,7 +21,7 @@
|
|||||||
;plugins = /var/lib/grafana/plugins
|
;plugins = /var/lib/grafana/plugins
|
||||||
|
|
||||||
# folder that contains provisioning config files that grafana will apply on startup and while running.
|
# folder that contains provisioning config files that grafana will apply on startup and while running.
|
||||||
; provisioning = conf/provisioning
|
provisioning = /etc/grafana/provisioning
|
||||||
|
|
||||||
#################################### Server ####################################
|
#################################### Server ####################################
|
||||||
[server]
|
[server]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user