容器|装在笔记本里的私有云环境:监控篇( 四 )


还是使用 docker-compose up -d 将应用运行起来即可。如果你使用 docker-compose logs -f 查看日志,看到类似下面的内容,那么你的应用就已经在正常工作啦。
nodeexporter| level=info ts=2021-10-30T04:42:11.428Z caller=node_exporter.go:182 msg="Starting node_exporter" version="(version=1.2.2, branch=HEAD, revision=26645363b486e12be40af7ce4fc91e731a33104e)"nodeexporter| level=info ts=2021-10-30T04:42:11.428Z caller=node_exporter.go:183 msg="Build context" build_context="(go=go1.16.7, user=root@b9cb4aa2eb17, date=20210806-13:44:18)"nodeexporter| level=info ts=2021-10-30T04:42:11.428Z caller=filesystem_common.go:110 collector=filesystem msg="Parsed flag --collector.filesystem.mount-points-exclude" flag=^/(sys|proc|dev|host|etc)($|/)nodeexporter| level=info ts=2021-10-30T04:42:11.428Z caller=filesystem_common.go:112 collector=filesystem msg="Parsed flag --collector.filesystem.fs-types-exclude" flag=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$nodeexporter| level=info ts=2021-10-30T04:42:11.428Z caller=node_exporter.go:108 msg="Enabled collectors"nodeexporter| level=info ts=2021-10-30T04:42:11.429Z caller=node_exporter.go:115 collector=arpnodeexporter| level=info ts=2021-10-30T04:42:11.429Z ...nodeexporter| level=info ts=2021-10-30T04:42:11.429Z caller=node_exporter.go:115 collector=zfsnodeexporter| level=info ts=2021-10-30T04:42:11.429Z caller=node_exporter.go:199 msg="Listening on" address=:9100nodeexporter| level=info ts=2021-10-30T04:42:11.434Z caller=tls_config.go:191 msg="TLS is disabled." http2=false
当服务运行完毕之后,我们访问 http://monitor.lab.com:9100,可以看到类似下面的文本日志数据,这些就是当前主机的实时运行状态啦。
容器|装在笔记本里的私有云环境:监控篇
文章插图

如果你的服务器是 Windows ,那么建议使用它专用的 Exporter,或者如果你需要监控 Nvidia GPU,也可以使用显卡官方提供的 Exporter。
容器采样应用:cAdvisorcAdvisor(Container Advisor)是谷歌技术团队出品的一个“容器探针”。可以让用户了解到正在运行过程中的容器资源使用情况,以及某一时刻下的性能状况。将 c Advisor 和 Prometheus 一起使用,我们就能够对系统中的容器运行状态有更直观的了解啦。
version: "3"services:cadvisor:image: google/cadvisor:v0.33.0container_name: cadvisorprivileged: truedevices:- /dev/kmsg:/dev/kmsgvolumes:- /:/rootfs:ro- /var/run:/var/run:ro- /sys:/sys:ro- /var/lib/docker:/var/lib/docker:ro# 仅限 Linux 环境使用- /cgroup:/cgroup:rorestart: alwaysports:- 8080:8080expose:- 8080networks:- monitorlogging:driver: "json-file"options:max-size: "1m"networks:monitor:external: true
将上面的配置保存为 docker-compose.yml ,然后使用 docker-compose up -d 启动应用,我们直接打开浏览器,访问应用页面,不出意外的话,你将看到类似下面的界面。
容器|装在笔记本里的私有云环境:监控篇
文章插图

推送网关:Push-Gateway上面的采样工具和 Prometheus 配合工作的时候,使用的都是默认的拉取模式。如果我们的服务只需要在某一个时刻进行数据记录,那么这个拉取模式就显得比较“啰嗦”了,相比之下“推送”模式会更适合。
官方文档中对于 Push Gateway 的使用建议非常保守,主要原因有两个:服务可靠性需要做额外的工作,使用推送而非默认的拉取模型不利于使用 prometheus 进行统一、自动的服务监控管理。官方对于推送模型的建议使用场景仅限低频非周期性的批处理任务。
其实可靠性还是比较好处理的,使用 Traefik 或者传统的负载均衡很容易快速完成水平
version: '3'services:pushgateway:image: prom/pushgateway:v1.4.2container_name: pushgatewayrestart: alwaysports:- 9091:9091expose:- 9091networks:- monitorlogging:driver: "json-file"options:max-size: "1m"networks:monitor:external: true