专业编程基础技术教程

网站首页 > 基础教程 正文

docker安装prometheus和grafana(docker如何安装)

ccvgpt 2025-05-03 12:44:05 基础教程 28 ℃
  1. 安装docker

我使用的是ubuntu系统安装。

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

docker安装prometheus和grafana(docker如何安装)

#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}

Tags:

最近发表
标签列表