Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# seafile-exporter
## Index
* [About](#about)
* [Features](#features)
* [Support](#support)
* [Dependencies](#dependencies)
* [Setup](#setup)
* [Requirements](#requirements)
* [Installation](#installation)
* [Update](#update)
* [Usage](#usage)
* [License](#license)
* [Credits](#credits)
* [Appendix](#appendix)
## About
seafile-exporter periodically scrapes some seafile metrics and provides its data via HTTP to Prometheus.
### Features
#### Exported metrics
These metrics are exported by `seafile-exporter`:
| name | description |
|----------------------------------------|--------------------------------------------------------------|
| seafile_current_connected_devices | Seafile system info: current_connected_devices |
| seafile_groups | Seafile system info: groups |
| seafile_is_pro | Seafile system info: is_pro |
| seafile_license | Seafile license information |
| seafile_license_maxusers | Seafile license: maximum users |
| seafile_multi_tenancy_enabled | Seafile system info: multi_tenancy_enabled |
| seafile_repos | Seafile system info: repos |
| seafile_system_info | Seafile server info |
| seafile_total_devices | Seafile system info: total_devices |
| seafile_total_files | Seafile system info: total_files |
| seafile_total_storage | Seafile system info: total_storage |
| seafile_up | Indicates if the metrics could be scraped by the exporter. |
| seafile_update_available | Seafile server update |
| seafile_users | Seafile system info: users |
| seafile_users_active | Seafile system info: users_active |
### Support
### Dependencies
This application is written in Go and has the following dependencies:
* [client_golang](github.com/prometheus/client_golang/prometheus)
* [logrus](github.com/sirupsen/logrus)
* [viper](github.com/spf13/viper)
* [charset](golang.org/x/net/html/charset)
## Setup
### Requirements
This application has the following build requirements:
* Git
* Go
### Installation
#### From source
To build the application from source, simply run the following commands:
```
git clone https://git.monobear.eu/monobear/seafile-exporter.git
cd seafile-exporter
go build
```
#### Docker Image
The preferred way to use `seafile-exporter` is by running the provided Docker image. It is currently provided on GitHub Container Registry:
- [`registry.monobear.eu/monobear/seafile-exporter/seafile-exporter`](https://git.monobear.eu/monobear/seafile-exporter/container_registry)
The following tags are available:
- `x.y.z` pointing to the release with that version
- `latest` pointing to the most recent released version
- `master` pointing to the latest build from the default branch
#### Scrape configuration
The exporter will query seafile every time it is scraped by prometheus.
If you want to reduce load on the seafile server you need to change the scrape interval accordingly:
```yml
scrape_configs:
- job_name: 'seafile'
scrape_interval: 90s
static_configs:
- targets: ['localhost:9338']
```
### Update
To rebuild the application with the latest Go release, execute the following commands:
```
export GO_VERSION="1.21.3"
cd ~
curl --location https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz --output ~/go${GO_VERSION}.linux-amd64.tar.gz
tar xzvf ~/go${GO_VERSION}.linux-amd64.tar.gz
sudo rm -rf /usr/local/src/go
sudo mv ~/go /usr/local/src
echo 'PATH=$PATH:/usr/local/src/go/bin:$GOPATH/bin' | sudo tee /etc/profile.d/go.sh
source /etc/profile.d/go.sh
git clone https://github.com/monofox/seafile-exporter.git
cd ./seafile-exporter/
rm -f go\.mod go\.sum
sed -i 's@go-version: .*@go-version: ${GO_VERSION}@g' .github/workflows/release.yml
go mod init github.com/monofox/seafile-exporter
go mod tidy
```
## Usage
The application will load the `config.toml` file located in the same directory if present.
Use the `-conf` flag to override the default configuration file name and location.
To run the application, simply execute the Go binary.
### Parameters
Config parameter | Environment equivalent | Description | Type | Default
------------------------- | ---------------------------------- | ---------------------------------------- | ------- | ----------------------------------------------------
`listen_address` | `SEAFILE_LISTEN_ADDRESS` | address and port to bind | String | 0.0.0.0:9388
`metrics_path` | `SEAFILE_METRICS_PATH` | relative path to expose metrics | String | /metrics
`ignore_ssl` | `SEAFILE_IGNORE_SSL` | whether of not to ignore ssl errors | Boolean | false
`seafile_scrape_uri` | `SEAFILE_SEAFILE_SCRAPE_URI` | uri to get monit status | String | http://localhost/
`seafile_auth_user` | `SEAFILE_SEAFILE_AUTH_USER` | user for authentication | String | admin
`seafile_auth_password` | `SEAFILE_SEAFILE_AUTH_PASSWORD` | password for authentication | String | seafile
`seafile_auth_secret` | `SEAFILE_SEAFILE_AUTH_SECRET` | otp secret for authentication, if needed | String | none
`seafile_changelog` | `SEAFILE_SEAFILE_CHANGELOG` | URL to seafile changelog | String | https://manual.seafile.com/changelog/changelog-for-seafile-professional-server/
### Example config
```toml
listen_address = "0.0.0.0:9388"
metrics_path = "/metrics"
ignore_ssl = false
seafile_scrape_uri = "https://seafile.cloud.online"
seafile_auth_user = "admin@user.online"
seafile_auth_password = "very-secret-password"
seafile_auth_secret = "otp-secret"
```
## License
Distributed under the MIT License.
See `LICENSE` file for more information.
## Contact
Project: [seafile-exporter](https://git.monobear.eu/monobear/seafile-exporter)