prometheus|装在笔记本里的私有云环境:网络存储篇(中)( 三 )


使用 docker-compose -f docker-compose.exporter.yml up -d 启动应用。如果你使用 docker logs 查看这个新创建的容器,会看到类似下面的日志:
level=info ts=2021-11-09T13:11:20.621Z caller=main.go:94 msg="Starting syncthing_exporter" version="(version=0.3.2, branch=main, revision=84736272309b3b08d6b6feb08cc7d41f13b4cd5e)"level=info ts=2021-11-09T13:11:20.621Z caller=main.go:95 msg="Build context" build_context="(go=go1.17.3, user=local, date=09 Nov 2021 10:20:09 UTC)"level=info ts=2021-11-09T13:11:20.621Z caller=main.go:108 msg="Listening on" address=:9093
同样使用命令查看服务的可访问性:
curl http://syncthing-exporter.storage.lab.com/metrics
会看到和前文中类似的日志数据:
# HELP go_gc_duration_seconds A summary of the pause duration of garbage collection cycles.# TYPE go_gc_duration_seconds summarygo_gc_duration_seconds{quantile="0"} 2.2292e-05go_gc_duration_seconds{quantile="0.25"} 2.2292e-05go_gc_duration_seconds{quantile="0.5"} 2.2292e-05go_gc_duration_seconds{quantile="0.75"} 2.2292e-05go_gc_duration_seconds{quantile="1"} 2.2292e-05go_gc_duration_seconds_sum 2.2292e-05go_gc_duration_seconds_count 1# HELP go_goroutines Number of goroutines that currently exist.# TYPE go_goroutines gaugego_goroutines 11# HELP go_info Information about the Go environment.# TYPE go_info gaugego_info{version="go1.17.3"} 1# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.# TYPE go_memstats_alloc_bytes gaugego_memstats_alloc_bytes 3.236424e+06# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.# TYPE go_memstats_alloc_bytes_total countergo_memstats_alloc_bytes_total 4.851856e+06# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.# TYPE go_memstats_buck_hash_sys_bytes gauge...
配置 Prometheus 抓取 Syncthing 性能指标数据
在上报数据就绪后,我们继续来配置 Prometheus 的数据抓取配置,让这个数据能够同样持续的写入 Prometheus 的数据库。继续编辑 config/prometheus.yml 配置文件:
- job_name: syncthingscrape_interval: 10smetrics_path: /metricsscheme: httpstatic_configs:- targets: ['syncthing-exporter.storage.lab.com']
更新完上面的配置后,使用 docker-compose down && docker-compose up -d 重启 prometheus,然后在浏览器中访问:http://monitor.lab.com:9090/targets,列表中便会出现 Syncthing 的数据源了。
prometheus|装在笔记本里的私有云环境:网络存储篇(中)
文章插图

为 Syncthing 配置 Grafana 监控面板Syncthing 在 Grafana 官方面板市场中并没有配置被上传,我将 Syncthing 开源项目配套的面板配置进行了修改,并上传至了 GitHub。
将这个 JSON 配置中的所有内容复制,然后使用 Grafana 导入配置的方式,在导入配置的文本框中粘贴进去上面的内容,Syncthing 的监控面板就搞定了。
prometheus|装在笔记本里的私有云环境:网络存储篇(中)
文章插图

NextCloud 的搭建以及监控配置上篇文章中想偷个懒,直接使用了之前为国际学术顶会使用的 NextCloud 方案。但是有同学提出“我只有少量用户(比如自己)使用 NextCloud,能否不使用独立的数据库,使用轻量的 SQLite ,节约一些系统资源”。
答案是可以的, NextCloud 默认支持使用 SQLite 进行数据存储,在注意定期备份数据的前提下,作为自用的方案问题不大。
NextCloud 单人使用简单配置为了让同学们能偷个懒,这里先补充一个 NextCloud 的简单配置,完整配置已上传至 GitHub:
version: "3.6"services:nextcloud:image: ${DOCKER_NEXTCLOUD_IMAGE_NAME}container_name: ${DOCKER_NEXTCLOUD_HOSTNAME}restart: alwaysexpose:- 80volumes:# Linux 环境下使用# - /etc/localtime:/etc/localtime:ro# - /etc/timezone:/etc/timezone:ro- ./data:/var/www/html:rwextra_hosts:- "${DOCKER_NEXTCLOUD_DOMAIN}:127.0.0.1"networks:- traefiklabels:- "traefik.enable=true"- "traefik.docker.network=traefik"- "traefik.http.routers.www-nextcloud.entrypoints=http"- "traefik.http.routers.www-nextcloud.rule=Host(`${DOCKER_NEXTCLOUD_DOMAIN}`)"- "traefik.http.routers.ssl-nextcloud.entrypoints=https"- "traefik.http.routers.ssl-nextcloud.tls=true"- "traefik.http.routers.ssl-nextcloud.rule=Host(`${DOCKER_NEXTCLOUD_DOMAIN}`)"- "traefik.http.services.www-nextcloud-backend.loadbalancer.server.scheme=http"- "traefik.http.services.www-nextcloud-backend.loadbalancer.server.port=80"logging:driver: "json-file"options:max-size: "1m"networks:traefik:external: true