Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / exodus / exodus_ @ 3c20ac15

Historique | Voir | Annoter | Télécharger (2,68 ko)

1 3c20ac15 Codimp
#!/usr/bin/env python3
2
"""
3
=head1 NAME
4
5
exodus_ - Exodus wildcard-plugin to monitor an L<Exodus|https://github.com/Exodus-Privacy/exodus/>
6
instance.
7
8
This wildcard plugin provides the suffixes C<applications>, C<reports> and C<trackers>.
9
10
=head1 INSTALLATION
11
12
- Copy this plugin in your munin plugins directory
13
14
=over 2
15
16
    ln -s /usr/share/munin/plugins/exodus_ /etc/munin/plugins/exodus_applications
17
    ln -s /usr/share/munin/plugins/exodus_ /etc/munin/plugins/exodus_reports
18
    ln -s /usr/share/munin/plugins/exodus_ /etc/munin/plugins/exodus_trackers
19
20
=back
21
22
After the installation you need to restart your munin-node service.
23
24
=head1 CONFIGURATION
25
26
You need to create a file named exodus placed in the directory
27
/etc/munin/plugin-conf.d/ with the following config:
28
29
=over 2
30
31
    [exodus_*]
32
    env.exodus_url https://reports.exodus-privacy.eu.org
33
    env.exodus_token your-api-token
34
35
=back
36
37
=head1 AUTHORS
38
39
Codimp <contact@lithio.fr>
40
41
=head1 LICENSE
42
43
GPLv3
44
45
=head1 MAGIC MARKERS
46
47
 #%# family=manual
48
 #%# capabilities=suggest
49
50
=cut
51
"""
52
53
import os
54
import sys
55
import json
56
import urllib.request
57
58
59
def print_count(element):
60
    endpoint = os.getenv("exodus_url") + "/api/" + element + "/count"
61
    headers = {"Authorization": "Token " + os.getenv("exodus_token")}
62
    request = urllib.request.Request(endpoint, method="POST", headers=headers)
63
    with urllib.request.urlopen(request) as connection:
64
        if connection.getcode() == 200:
65
            count = json.loads(connection.read())["count"]
66
            print(element + ".value", count)
67
68
69
def main():
70
    try:
71
        mode = sys.argv[1]
72
    except IndexError:
73
        mode = ""
74
    wildcard = sys.argv[0].split("exodus_")[1]
75
76
    if mode == "suggest":
77
        print("applications")
78
        print("reports")
79
        print("trackers")
80
        exit(0)
81
82
    if wildcard == "applications":
83
        if mode == "config":
84
            print("graph_title Exodus applications")
85
            print("graph_vlabel applications")
86
            print("graph_category exodus")
87
            print("applications.label Applications")
88
        else:
89
            print_count("applications")
90
    elif wildcard == "reports":
91
        if mode == "config":
92
            print("graph_title Exodus reports")
93
            print("graph_vlabel reports")
94
            print("graph_category exodus")
95
            print("reports.label Reports")
96
        else:
97
            print_count("reports")
98
    elif wildcard == "trackers":
99
        if mode == "config":
100
            print("graph_title Exodus trackers")
101
            print("graph_vlabel trackers")
102
            print("graph_category exodus")
103
            print("trackers.label Trackers")
104
        else:
105
            print_count("trackers")
106
107
108
if __name__ == "__main__":
109
    main()