百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

docker安装prometheus和grafana

wptr33 2025-02-10 14:37 19 浏览

  1. 安装docker

我使用的是ubuntu系统安装。

通常我们安装都是在root用户下面的:

#1. 从普通用户切换到root用户。

sudo su

#2. 更新apt

apt-get update

#3. 使用命令来安装docker

sudo apt-get install docker-ce docker-ce-cli containerd.io

可以用docker -v来测试docker是否安装成功。

#4. 然后可以随便拉取一个镜像来进行测试。

docker pull ubuntu

#5. 这个时候会提示你登录docker,你只需要进行docker的注册,然后就可以在这边进行登录了。

#6. 镜像源切换。通常docker默认使用的是国外的镜像,我们拉取镜像的时候很慢,这个时候需要切换到国内的一些可替代的镜像源。

对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{"registry-mirrors":["https://reg-mirror.qiniu.com/"]}

更多的可以参考一下阿里云:
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

  1. 安装prometheus

上面我们的docker已经安装好了,接下来就是安装prometheus。

  • prometheus(普罗米修斯):天生为采集存储监控数据而生的时序数据库。prometheus通过各种Exporter采集到监控数据,然后存储进prometheus中,以供查询展示
  • grafana:一个监控仪表系统。grafana的数据来源可以有很多(如:Prometheus、Graphite、OpenTSDB、InfluxDB、MySQL/PostgreSQL、Microsoft SQL Serve等等),其中用得最多的数据源是prometheus

注:prometheus也有自己的UI,不过功能没有grafana强大

  1. 使用命令来搜索prometheus:

docker search prometheus

  1. 我们拉取第一个:

docker pull bitnami/prometheus

查看刚才来去的镜像:

docker images

创建挂载目录以及文件(因为如果是默认利用拉取镜像的空间的话,在docker重启的时候可能出现数据丢失。

#/opt/prometheus/data目录,准备用来挂载放置prometheus的数据

#/opt/prometheus/config目录,准备用来放置prometheus的配置文件

#/opt/prometheus/rules目录,准备用来挂载放置prometheus的规则文件

mkdir -p /opt/prometheus/{data,config,rules}

#授权相关文件夹权限

chmod -R 777 /opt/prometheus/data

chmod -R 777 /opt/prometheus/config

chmod -R 777 /opt/prometheus/rules

  1. 准备文件:
# 配置文件
cat > /opt/prometheus/config/prometheus.yml << \EOF
global:
  # 数据采集间隔
  scrape_interval:     45s
  # 告警检测间隔
  evaluation_interval: 45s

# 告警规则
rule_files:
  # 这里匹配指定目录下所有的.rules文件
  - /prometheus/rules/*.rules

# 采集配置
scrape_configs:
  # 采集项(prometheus)
  - job_name: 'prometheus'
    static_configs:
      # prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
      - targets: ['localhost:9090']
EOF

# 查看一下配置文件
cat /opt/prometheus/

prometheus配置项说明

global:全局配置 (如果有内部单独设定,会覆盖这个参数)

alerting:告警插件定义。这里会设定alertmanager这个报警插件

rule_files:告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现

scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现

remote_write:用于远程存储写配置

remote_read:用于远程读配置

  1. 启动容器
# 启动prometheus
# config.file:指定容器中,配置文件的位置
# web.enable-lifecycle:启动此项后,当配置文件发生变化后,可通过HTTP API 发送 post 请求到 /-/reload,实现热加载,如:curl -X POST http://47.105.39.189:9090/-/reload
# -v /etc/localtime:/etc/localtime:ro表示让容器使用宿主机的时间, :ro表示只读(注:此方式只针对宿主机和容器的时区文件均为/etc/localtime)
docker run --name prometheus -d \
    -p 9090:9090 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/prometheus/data:/prometheus/data \
    -v /opt/prometheus/config:/prometheus/config \
    -v /opt/prometheus/rules:/prometheus/rules \
    bitnami/prometheus --config.file=/prometheus/config/prometheus.yml --web.enable-lifecycle
  1. 测试并访问:

{ip}:9090来进行访问:

  1. 安装grafana
  1. 拉取镜像:

搜索grafana镜像:

docker search grafana

然后拉取第一个:

docker pull grafana/grafana 
  1. 准备挂载文件
# /opt/grafana/data目录,准备用来挂载放置grafana的数据
# /opt/grafana/plugins目录,准备用来放置grafana的插件
# /opt/grafana/config目录,准备用来挂载放置grafana的配置文件
mkdir -p /opt/grafana/{data,plugins,config}
# 授权相关文件夹权限
chmod -R 777 /opt/grafana/data
chmod -R 777 /opt/grafana/plugins
chmod -R 777 /opt/grafana/config

如果这个时候我们想要grafana默认的模版的话(也就是默认的配置文件,当然你也可以自己手动创建一个类似的文文件的,我这里使用的是创建一个默认的方式)

这里的命令要一条一条的执行。

# 先临时启动一个容器
docker run --name grafana-tmp -d -p 3000:3000 grafana/grafana
# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/grafana/config/grafana.ini
# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp

# 修改配置文件(需要的话)
# vim /opt/grafana/config/grafana.ini
  1. 启动容器:
# 启动prometheus
# 环境变量GF_SECURITY_ADMIN_PASSWORD:指定admin的密码
# 环境变量GF_INSTALL_PLUGINS:指定启动时需要安装得插件
#         grafana-clock-panel代表时间插件
#         grafana-simple-json-datasource代表json数据源插件
#         grafana-piechart-panel代表饼图插件
docker run -d \
    -p 3000:3000 \
    --name=grafana \
    -v /etc/localtime:/etc/localtime:ro \
    -v /opt/grafana/data:/var/lib/grafana \
    -v /opt/grafana/plugins/:/var/lib/grafana/plugins \
    -v /opt/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
    -e "GF_SECURITY_ADMIN_PASSWORD=admin" \
    -e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource,grafana-piechart-panel" \
    grafana/grafana:

然后进行访问:{ip}:3000

  1. 倒入数据源

然后写入这个:

然后效果:

  1. 安装系统采集服务
  1. 安装采集服务:node-exporter
# 下载
wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
# 解压
tar -xvf node_exporter-1.1.2.linux-amd64.tar.gz
cd node_exporter-1.1.2.linux-amd64
# 启动
nohup ./node_exporter  --web.listen-address=":9100" &

访问:{ip}:9100

  1. 将数据采集到prometheus:
vim /opt/prometheus/config/prometheus.yml
global:
# 数据采集间隔
  scrape_interval: 45s
# 告警检测间隔
  evaluation_interval: 45s

# 告警规则
rule_files:
  # 这里匹配指定目录下所有的.rules文件
  - /prometheus/rules/*.rules

# 采集配置
scrape_configs:
  # 采集项(prometheus)
  - job_name: 'prometheus'
    static_configs:
      # prometheus自带了对自身的exporter监控程序,所以不需额外安装exporter就可配置采集项
      - targets: ['localhost:9090']
  - job_name: tenxun-node'
    static_configs:
      - targets: ['localhost:9100']

可以通过重启prometheus或者手动热加载:

# 前提条件:启动prometheus时,启用了web.enable-lifecycle
# 发送post请求到prometheus的/-/reload下触发热加载配置
curl -X POST http://47.105.39.189:9090/-/reload
# 重启的方式:
# 先用docker ps -a来查看prometheus的CONTAINER ID。
docker restart {CONTAINER ID}

相关推荐

什么是Java中的继承?如何实现继承?

什么是继承?...

Java 继承与多态:从基础到实战的深度解析

在面向对象编程(OOP)的三大支柱中,继承与多态是构建灵活、可复用代码的核心。无论是日常开发还是框架设计,这两个概念都扮演着至关重要的角色。本文将从基础概念出发,结合实例与图解,带你彻底搞懂Java...

Java基础教程:Java继承概述_java的继承

继承概述假如我们要定义如下类:学生类,老师类和工人类,分析如下。学生类属性:姓名,年龄行为:吃饭,睡觉老师类属性:姓名,年龄,薪水行为:吃饭,睡觉,教书班主任属性:姓名,年龄,薪水行为:吃饭,睡觉,管...

java4个技巧:从继承和覆盖,到最终的类和方法

日复一日,我们编写的大多数Java只使用了该语言全套功能的一小部分。我们实例化的每个流以及我们在实例变量前面加上的每个@Autowired注解都足以完成我们的大部分目标。然而,有些时候,我们必须求助于...

java:举例说明继承的概念_java继承的理解

在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物,同理,...

从零开始构建一款开源的 Vibe Coding 产品 Week1Day4:业界调研之 Agent 横向对比

前情回顾前面两天我们重点调研了了一下Cursor的原理和Cursor中一个关键的工具edit_file的实现,但是其他CodingAgent也需要稍微摸一下底,看看有没有优秀之处,下...

学会这几个插件,让你的Notepad++使用起来更丝滑

搞程序开发的小伙伴相信对Notepad++都不会陌生,是一个占用空间少、打开启动快的文件编辑器,很多程序员喜欢使用Notepad++进行纯文本编辑或者脚本开发,但是Notepad++的功能绝不止于此,...

将 node_modules 目录放入 Git 仓库的优点

推荐一篇文章Whyyoushouldcheck-inyournodedependencies[1]...

再度加码AI编程,腾讯发布AI CLI并宣布CodeBuddy IDE开启公测

“再熬一年,90%的程序员可能再也用不着写for循环。”凌晨两点半,王工还在公司敲键盘。他手里那份需求文档写了足足六页,产品经理反复改了三次。放在过去,光数据库建表、接口对接、单元测试就得写两三天。现...

git 如何查看stash的内容_git查看ssh key

1.查看Stash列表首先,使用gitstashlist查看所有已保存的stash:...

6万星+ Git命令懒人必备!lazygit 终端UI神器,效率翻倍超顺手!

项目概览lazygit是一个基于终端的Git命令可视化工具,通过简易的TUI(文本用户界面)提升Git操作效率。开发者无需记忆复杂命令,即可完成分支管理、提交、合并等操作。...

《Gemini CLI 实战系列》(一)Gemini CLI 入门:AI 上命令行的第一步

谷歌的Gemini模型最近热度很高,而它的...

deepin IDE新版发布:支持玲珑构建、增强AI智能化

IT之家8月7日消息,深度操作系统官方公众号昨日(8月6日)发布博文,更新推出新版deepin集成开发环境(IDE),重点支持玲珑构建。支持玲珑构建deepinIDE在本次重磅更...

狂揽82.7k的star,这款开源可视化神器,轻松创建流程图和图表

再不用Mermaid,你的技术文档可能已经在悄悄“腐烂”——图表版本对不上、同事改完没同步、评审会上被一句“这图哪来的”问得哑口无言。这不是危言耸听。GitHub2025年开发者报告显示,63%的新仓...

《Gemini CLI 实战系列》(五)打造专属命令行工具箱

在前几篇文章中,我们介绍了GeminiCLI的基础用法、效率提升、文件处理和与外部工具结合。今天我们进入第五篇...