首页 > 其他分享 >docker 部署prometheus和grafana

docker 部署prometheus和grafana

时间:2023-06-02 19:14:13浏览次数:36  
标签:deploy app grafana prometheus docker config

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

一: 安装prometheus
第1步:确保安装有docker
查看docker版本

docker -v

第2步: 拉取镜像

docker pull prom/prometheus:v2.41.0

第3步: 准备相关挂载目录

# /deploy/app/prometheus/data目录,准备用来挂载放置prometheus的数据
# /deploy/app/prometheus/config目录,准备用来放置prometheus的配置文件
# /deploy/app/prometheus/rules目录,准备用来挂载放置prometheus的规则文件
# /deploy/app/prometheus/ClientAll目录,准备用来放置采集节点的配置文件
mkdir -p /deploy/app/prometheus/{data,config,rules,ClientAll}
# 授权相关文件夹权限
chmod -R 777 /deploy/app/prometheus/data
chmod -R 777 /deploy/app/prometheus/config
chmod -R 777 /deploy/app/prometheus/rules
chmod -R 777 /deploy/app/prometheus/ClientAll

第4步 准备文件

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


alerting:
  alertmanagers:
    - static_configs:
        - targets: ["192.168.80.86:9093"]

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

# 采集配置
scrape_configs:
  - job_name: "公司内部服务器"
    file_sd_configs:    #基于文件发现服务方式
      - files:
        - /prometheus/ClientAll/*.json  #用json格式文件方式发现服务,下面的是用yaml格式文件方式,都可以
        refresh_interval: 10m
      - files:
        - /prometheus/ClientAll/*.yaml
        refresh_interval: 10m

EOF

# 查看一下配置文件
cat /deploy/app/prometheus/prometheus.yml
prometheus配置项说明
global:全局配置 (如果有内部单独设定,会覆盖这个参数)
alerting:告警插件定义。这里会设定alertmanager这个报警插件
rule_files:告警规则。 按照设定参数进行扫描加载,用于自定义报警规则,其报警媒介和route路由由alertmanager插件实现
scrape_configs:采集配置。配置数据源,包含分组job_name以及具体target。又分为静态配置和服务发现
remote_write:用于远程存储写配置
remote_read:用于远程读配置

第5步 启动容器

docker run --name prometheus -d \
    -p 9090:9090 \
    -v /etc/localtime:/etc/localtime:ro \
    -v /deploy/app/prometheus/data:/prometheus/data \
    -v /deploy/app/prometheus/config:/prometheus/config \
    -v /deploy/app/prometheus/rules:/prometheus/rules \
    -v /deploy/app/prometheus/ClientAll:/prometheus/ClientAll \
    prom/prometheus:v2.41.0 --config.file=/prometheus/config/prometheus.yml --web.enable-lifecycle     

第6步 访问测试
访问 {ip}:9090即可

二:安装grafana
第1步:拉取镜像

docker pull grafana/grafana:9.3.2

第2步 准备相关挂载目录

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

第3步 准备配置文件

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

# 修改配置文件(需要的话)
vim /opt/grafana/config/grafana.ini

第4步 启动容器

docker run -d \
    -p 3000:3000 \
    --name=grafana \
    -v /etc/localtime:/etc/localtime:ro \
    -v /deploy/app/grafana/data:/var/lib/grafana \
    -v /deploy/app/grafana/plugins/:/var/lib/grafana/plugins \
    -v /deploy/app/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:9.3.2    

第5步 访问测试
访问{ip}:3000 即可,使用账号密码 admin/admin进行登录即可

第6步 使用测试
添加数据源


选择普罗米修斯作为数据源

制作(或导入)仪表盘
grafana官网提供了很多模板,选择你喜欢的样式,直接输入Dashboard Id即可直接导入
这里使用的本人常用的 Dashboard Id 16098:Linux主机详情



此时,界面就出来了
提示:这会儿还没有数据,是因为prometheus里面本来就没有数据,后面我们只需要使用相应的exporter往prometheus录入一些监控数据(如:安装node-exporter),这里就会显示出来了

三 安装exporter监控采集程序,采集数据进prometheus
node-exporter
官方不建议通过Docekr方式部署node-exporter,因为它需要访问主机系统node-exporter 可以采集机器(物理机、虚拟机、云主机等)的监控指标数据,能够采集到的指标包括 CPU, 内存,磁盘,网络,文件数等信息

安装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" &

访问一下,确保node-exporter已正常启动

在prometheus中配置当前采集项
编辑配置文件

vim /deploy/app/prometheus/ClientAll/node.json
填写你已安装采集程序的机器ip与端口

[
       {"targets": [ "192.168.80.86:9100" ]},
       {"targets": [ "192.168.80.111:9100" ]},
       {"targets": [ "192.168.80.232:9100" ]},
       {"targets": [ "192.168.80.69:9100" ]},
       {"targets": [ "192.168.80.236:9100" ]}

]

使得最新的prometheus配置生效
你可以重启prometheus或者使用热加载使新配置生效,这里我们使用热加载的方式

# 前提条件:启动prometheus时,启用了web.enable-lifecycle
# 发送post请求到prometheus的/-/reload下触发热加载配置
curl -X POST http://192.168.80.86:9090/-/reload

注:若你触发热加载后,过个一会儿还没看到监控的变化, 那么你可以使用docker logs {prometheus容器}查看prometheus日志,看到底是否触发了热加载
验证一下
此时,我们再在grafana上看监控面板,就会发现有数据了

标签:deploy,app,grafana,prometheus,docker,config
From: https://www.cnblogs.com/hi-lijq/p/17452709.html

相关文章

  • 手把手docker安装nginx
    记录下一步步流程,没有使用dockerfile,直接命令安装。1、下载nginx镜像,不指定版本默认拉取最新版本dockerpullnginx 2、创建nginx挂载目录,目录可以自己随便建mkdir-p/usr/local/nginx 3、启动nginx容器,如果非80端口则使用自己实际端口dockerrun--name......
  • Docker下安装MySQL
    0x01:Docker安装MySQL下载MySQL镜像dockerpullmysql默认是下载latest标签的mysql,那么版本是多少呢?访问以下链接:https://hub.docker.com/_/mysql/启动MySQL镜像,指定密码为123456,映射目录/home/xxljobwork,指定默认编码为utf-8dockerrun-eMYSQL_ROOT_PASSWORD=123456-p3306......
  • 部署docker的过程/命令
    在linux的ubuntu上安装docker参考如何在Ubuntu20.04上安装和使用Docker-知乎(zhihu.com)配置:防火墙、selinux、容器镜像加速器(如果软件镜像下载pull的慢,去阿里云的容器镜像服务配置镜像加速器)、网卡转发(在/etc/sysctl.d/docker.conf下配置然后sysctl-p/etc/sysctl.......
  • 云原生之使用Docker部署Ghost个人博客
    (云原生之使用Docker部署Ghost个人博客)一、检查本地系统版本[root@docker~]#cat/etc/os-releaseNAME="CentOSLinux"VERSION="7(Core)"ID="centos"ID_LIKE="rhelfedora"VERSION_ID="7"PRETTY_NAME="CentOSLinux7(Core)&qu......
  • Docker常用软件安装
    jdk dockerepullopenjdk:11 dockerrun-d-t--namejava-11openjdk:11MySQL 可以从dockerhup中查找自己想要安装的版本 dockerpullmysql:5.7 拉取镜像 创建容器 #在/root目录下创建mysql目录用于存储mysql数据信息 mkdir/root/mysql  cd/root/mysql  do......
  • Docker 常用命令
    信息命令dockerinfo:显示Docker的系统信息,包括镜像和容器的数量。dockerversion:显示Docker的版本信息。帮助命令docker命令--help:帮助命令。镜像命令dockerimages:查看所有本地主机上的镜像。可以使用dockerimagels代替。dockersearch:搜索镜像。dockerp......
  • Docker常见问题
    1、容器内无法输入中文当在Docker容器内输入中文或者复制中文内容时,有时会出现无法识别的情况。以下是解决方案:进入容器时在命令中添加环境变量:dockerexec-itcontainer_nameenvLANG=C.UTF-8/bin/bash在Dockerfile中使用ENV命令设置环境变量:ENVLANG=C.UTF-8这个......
  • 基于Grafana的WebUI添加Prometheus数据源(三)
    基于Grafana的WebUI添加Prometheus数据源(三)1、Grafana介绍1.1什么是GrafanaGrafana是一款近几年比较流行的开源数据绘图工具平台。Grafana原生支持包括但不限于InfluxDB,MySQL,OpenTSDB,PostgreSQL和Prometheus等多种数据源作为输入源数据。官方地址:https://grafana.com......
  • Docker 安装nacos
    dockerrun-d--name=gch-aas-nacos\--envSPRING_DATASOURCE_PLATFORM=mysql\--envMYSQL_SERVICE_HOST=127.0.0.1\--envMYSQL_SERVICE_PORT=3306\--envMYSQL_SERVICE_DB_NAME=nacos\--envMYSQL_SERVICE_USER=root\--envMYSQL_SERVICE_PAS......
  • springboot gradle dockerfle
    本地打包FROMopenjdk:8-jdk-alpineRUNset-eux&&sed-i's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g'/etc/apk/repositoriesRUNmkdir/appCOPYbuild/libs/dataExChangePlatform-0.0.1-SNAPSHOT.jar/app/dataExChangePlatform-0.0.1-SNAPSHOT.......