基于 docker 搭建 grafana+prometheus 监控资源之node_exporter配置(一)(超详细版)

写在最前面感慨一下!!!博主刚毕业一年,但实际工作已有两年(实习工作与正式员工无异),工作中也早就接触了grafana以及prometheus,并没有实操过,但其实工作中一直有实操的内容,自己一直在逃避,或者说找人帮忙,后来就以至于听到这两个单词就恐惧,可能对于实操害怕出问题背锅,但我更觉得是自己懒,私下里没有好好去学习,每次遇到这个问题,找人解决了也就不了了之了。近期,无意之间,朋友请教我grafana的知识,虽然我没实操,但我理论多少知道一些,打脸充胖子给人家讲的头头是道,突然多了一丝乐趣,正好这段时间工作并不多,就开始着手学习了(其实是海口已经夸出去,自己不学学,难以收场😂),也很感谢这次机会,让我自己终于跨过了这个坎(能发这么一段话,充分体现出了它对我的意义,以及当初对我的阻拦到底有多大)
言归正传,本文会基于docker去进行安装和配置监控,与本地化部署其实大差不差,部署其实都很简单,主要是几个组件之间内部如何调用和流向才是最应该弄懂的,但要弄懂这个,其实在配置监控的时候基本也就明白了。

环境信息

hostnameip
linux_204xxx.204
linux_207xxx.207

服务基本信息

服务作用端口(默认)
Prometheus普罗米修斯的主服务器9090
Node_Exporter负责收集Host硬件信息和操作系统信息9100
MySqld_Exporter负责收集mysql数据信息收集9104
Cadvisor负责收集Host上运行的docker容器信息8080
Grafana负责展示普罗米修斯监控界面3000
Altermanager等待接收prometheus发过来的告警信息,altermanager再发送给定义的收件人9093

Prometheus 是一套开源的监控 + 预警 + 时间序列数据库的组合,现在越来越多的公司或组织开始采用 Prometheus,现在常见的 kubernetes 容器管理系统,也会搭配 Prometheus 来进行监控。
Prometheus 本身不具备收集监控数据功能,需要使用 http 接口来获取不同的 export 收集的数据,存储到时序数据库中。

一、下载镜像

docker pull prom/prometheus
docker pull grafana/grafana
docker pull prom/node-exporter   //下载到需要被监控的机器上
docker pull prom/mysqld-exporter  //下载到需要被监控的机器上
docker pull google/cadvisor   //下载到需要被监控的机器上
docker pull prom/alertmanager   //下载到需要被监控的机器上

二、部署Prometheus

# 启动容器
docker run -itd --name docker_prometheus prom/prometheus

# 复制容器内部的配置文件到宿主机,不用事先创建$PWD/prometheus目录(后续的配置主要在该目录下展开,因此一定要拉到本地)
docker cp -a docker_prometheus:/etc/prometheus/ $PWD/prometheus

# 删除容器
docker rm -f docker_prometheus

# 启动容器 设置端口
docker run -itd --name docker_prometheus --restart=always -p 9090:9090 -v $PWD/prometheus:/etc/prometheus/ prom/prometheus

# docker run 运行
# --name 容器的名称
# -p 指定容器的端口映射
# -v 将本地路径映射到容器内(这样如果修改了本地的文件,只需restart容器即可在容器内生效)
# --restart  容器重启策略 no不重启,always 退出时总是重启
# prom/prometheus  选择镜像名称启动容器(默认镜像后面会加latest  如果拉取自己创建的镜像后面要加自己的版本号)

查看容器是否启动成功

docker psgrep docker_prometheus

在这里插入图片描述
浏览器输入http://ip:9090/targets进入页面
在这里插入图片描述

三、部署Grafana

# 启动grafana
docker run -itd --name grafana grafana/grafana

# 复制容器内部的配置文件到宿主机,不用事先创建$PWD/prometheus目录
docker cp -a grafana:/var/lib/grafana $PWD/grafana-storage

# 删除容器
docker rm -f grafana

# 添加目录权限(不添加权限不够,容器无法启动)
chmod -R 777 grafana-storage

# 启动容器 设置端口
docker run -itd --name=grafana --restart=always -p 3000:3000 -v $PWD/grafana-storage:/var/lib/grafana grafana/grafana

# docker run 运行
# --name 容器的名称
# -p 指定容器的端口映射
# -v:挂载宿主机目录和docker容器中的目录; $PWD/grafana-storage:本地宿主机绝对目录;/var/lib/grafana:容器目录(将容器目录挂载到本地)
# --restart 容器重启策略  no:不重启,always:退出时总是重启
# grafana/grafana  选择镜像名称启动容器

浏览器输入http://ip:3000进入页面
在这里插入图片描述

四、安装node_exporter

node_export 是 Prometheus 的一个 export,主要是用来收集服务器硬件资源使用情况的。所以这个往往会部署再被监控的服务器上。即:grafana、Prometheus 会独立部署在一台机器上,node_export 则被部署在被监控的服务器上,收集被监控的服务器资源数据,给 Prometheus,然后再通过 grafana 展示出来。

# 启动node-exporter
docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter

查看端口是否开放
在这里插入图片描述
访问页面浏览器输入http://ip:9100/metrics查看服务器是否有数据收集
在这里插入图片描述

五、配置 Prometheus+node_exporter收集数据

修改配置文件(通过修改该文件,使prom和node_exporter连接在一起,通过后者收集数据,传送给前者,最后在grafana呈现)

vim prometheus/prometheus.yml

在这里插入图片描述
– targets:[‘xxx.xxx.xxx.xxx’]:服务器ip地址,可添加多台服务器以,分割。eg:[‘xxx.xxx.xxx.xxx’,‘xxx.xxx.xxx.xxx’]
但可以看到,有三个job_name,第一个似乎系统默认自带,其实这里的job_name可以在后续的prom界面以及grafana看到,且我本可以将后两个job_name的ip写在一起,用,隔开。但我还是写了两个,作用后面会看到,这里插个眼
重启Prometheus 容器后 修改后的文件直接同步到容器/etc/prometheus/中(因为我们docker run的时候指定了-v)

docker restart docker_prometheus

完成后在http://ip:9090/targets中查看是否有刚刚配置的job_name: xxx信息出现
在这里插入图片描述
这里我就给一张总图哈,这是我所有的配置完成后的效果图,大家取自己需要的看,后续也就只用这张图了。这里就可以看下endpoint、labels的参数其实就是prometheus.yml中配置的参数,对应关系找到,各位根据需求自行修改,但这个并不是我刚才插眼要解释的地方

六、配置Granfana面板

  • 登录granfana 用户名密码默认为admin
  • 设置–数据源–添加数据源
  • 选择Prometheus并添加http://ip:9090
  • 选择数据展示模版,添加模版
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    模版地址1:(或者直接导入ID:8919)
    模版地址2:(或者直接导入ID:11074)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    最终效果展示:
    在这里插入图片描述
    这里我解释下插眼的那个问题,因为当时插入的模版,我一个-targets写入后,不能在模版中将两台机器信息全部展示出来,后来无奈之举通过起不同的job_name来查看多台机器信息。(文章中推荐的这个模版我发现一个-targets写入后可以呈现多台机器的信息,但标准写法应该是一个job_name多台机器)
    先到这吧,写这个太费精力了。。。
  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,以下是一个基于Docker Compose的搭建PrometheusGrafana、Alertmanager、Blackbox ExporterNode Exporter的示例: ```yaml version: "3" services: prometheus: image: prom/prometheus container_name: prometheus ports: - "9090:9090" volumes: - ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml command: - '--config.file=/etc/prometheus/prometheus.yml' - '--web.enable-admin-api' restart: always grafana: image: grafana/grafana container_name: grafana ports: - "3000:3000" volumes: - ./grafana:/var/lib/grafana restart: always alertmanager: image: prom/alertmanager container_name: alertmanager ports: - "9093:9093" volumes: - ./alertmanager/config.yml:/etc/alertmanager/config.yml command: - '--config.file=/etc/alertmanager/config.yml' restart: always blackbox-exporter: image: prom/blackbox-exporter container_name: blackbox-exporter ports: - "9115:9115" volumes: - ./blackbox-exporter/config.yml:/etc/blackbox-exporter/config.yml command: - '--config.file=/etc/blackbox-exporter/config.yml' restart: always node-exporter: image: prom/node-exporter container_name: node-exporter ports: - "9100:9100" restart: always ``` 需要注意的是,这里的配置文件都需要自己创建并且挂载到对应的容器中。例如,prometheus.yml、config.yml和config.yml分别对应Prometheus、Alertmanager和Blackbox Exporter配置文件。同时,Grafana的数据目录也需要挂载到主机上以便数据持久化。 另外,需要注意的是这只是一个示例,具体的配置文件需要根据实际情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值