利用docker快速部署prometheus

[TOC]

配置过程

部署prometheus

  • 第1步,安装docker环境
curl -sL 'http://iso.sqlfans.cn/docker/install_docker_2401.sh' | bash
curl -sL 'http://iso.sqlfans.cn/docker/install_docker_compose_2181.sh' | bash
docker-compose --version
  • 第2步,准备配置文件
mkdir -p /data/docker/prometheus/{alertmanager,prometheus_etc/rules,dingtalk/templates}
curl -sL http://iso.sqlfans.cn/docker/yml/prometheus/docker-compose.yml -o /data/docker/prometheus/docker-compose.yml
curl -sL http://iso.sqlfans.cn/docker/yml/prometheus/black_box_config.yml -o /data/docker/prometheus/black_box_config.yml
curl -sL http://iso.sqlfans.cn/docker/yml/prometheus/prometheus_etc/prometheus.yml -o /data/docker/prometheus/prometheus_etc/prometheus.yml
curl -sL http://iso.sqlfans.cn/docker/yml/prometheus/prometheus_etc/rules/alert.rules -o /data/docker/prometheus/prometheus_etc/rules/alert.rules
curl -sL http://iso.sqlfans.cn/docker/yml/prometheus/dingtalk/config.yml -o /data/docker/prometheus/dingtalk/config.yml
curl -sL http://iso.sqlfans.cn/docker/yml/prometheus/dingtalk/templates/templates.tmpl -o /data/docker/prometheus/dingtalk/templates/templates.tmpl
curl -sL http://iso.sqlfans.cn/docker/yml/prometheus/alertmanager/alertmanager.yml -o /data/docker/prometheus/alertmanager/alertmanager.yml

# [优化] 替换为我司的harbor镜像,避免无法访问github导致的超时问题
# sed -i "s/image: /image: harbor-dev.fusionfintrade.com:6443\/ops\//" /data/docker/prometheus/docker-compose.yml
  • 第3步,调整要监控的资源
cat /data/docker/prometheus/prometheus_etc/prometheus.yml | egrep "(http|10.)"
  • 第4步,启动容器 prometheus v2.43.1
chmod 777 -R /data/docker/prometheus
docker-compose -f /data/docker/prometheus/docker-compose.yml down
docker-compose -f /data/docker/prometheus/docker-compose.yml up -d

#.如果有容器状态为Restarting,可尝试重复执行上面3条命令
cd /data/docker/prometheus
docker-compose ps -a
  • 第5步,登录控制台,将 127.0.0.1 改为实际的ip地址
地址:http://127.0.0.1:3000/login
账号:admin
初始密码:cat /data/docker/prometheus/docker-compose.yml | grep PASSWORD
重置命令:docker exec -it grafana /bin/bash -c 'grafana-cli admin reset-admin-password Admin_147'
重置密码:Admin_147

导入自定义模板

这里演示如何导入一个自定义的模板(只有http状态码之类的pull监控,cpu内存等需要客户端主动push所以并未配置)为例,详细步骤如下:

#.监控指标如下
TCP响应时间检测,比如 192.168.3.9:3389
UDP响应时间检测,比如 192.168.4.168:1194
icmp检测,比如 ping 223.5.5.5
http检测,比如 https://www.baidu.com 包括连通性、响应时间、http状态码、证书有效期等
  • 第1步,登录控制台,依次选择 Home - Connections - Your connections - Data sources,点击 Add data source,选择类型为 Prometheus 的数据源,将其命名为 Prometheus、配置URL为 http://prometheus:9090,保存并退出
  • 第2步,依次选择:Home - Administration - Service accounts - 点击 Add service account,输入名称:apikey,角色:Admin,然后点击 Create
  • 第3步,在弹出的页面,点击 Add service account token,输入名称:apikey,然后点击 Generate token,在弹出的页面 Copy clipboard 该token,比如:glsa_XKrkMpHxzbzntaWtgGi10SRqP3ZzEJT2_5e84f036
  • 第4步,调用 Grafana API 获取 Prometheus 这个 datasource 的 uid
[root@localhost ~]# addr=127.0.0.1:3000
[root@localhost ~]# token=glsa_XKrkMpHxzbzntaWtgGi10SRqP3ZzEJT2_5e84f036
[root@localhost ~]# curl -s -X GET -H "Authorization: Bearer $token" http://$addr/api/datasources/name/Prometheus | python -m json.tool | grep uid
    "uid": "b6901334-50d6-433b-9fa6-1d7a900450a9",
  • 第5步,下载提前制作的 自定义的json模板 到本地
  • 第6步,依次选择 Home - Dashboards,点击右上角的 +,选择 Import dashboard,导入下载的模板文件
  • 第7步,在新导入的 Dashboard 页面,点击右上角的 Dashboard Settings - JSON Model - 替换datasource类型为prometheus中的uid为 Grafana API 获取获取的uid,然后点击 Save changes
    "datasource": {
        "type": "prometheus",
        "uid": "b6901334-50d6-433b-9fa6-1d7a900450a9"
    }
  • 第8步,返回Dashboards首页,确认监控已ok

配置钉钉告警

  • 第1步,创建钉钉群聊(比如 测试群),添加机器人 选择 自定义(通过Webhook接入自定义服务),保存 Webhook地址
机器人名字:事件通知
接收群组:测试群
消息推送:开启
Webhook:https://oapi.dingtalk.com/robot/send?access_token=3da7216e1c31362935f55c5ccfae23b3a307a799c4eed13ec560ec3a6a5b832c
安全设置:
    自定义关键词:
    加签:
    IP地址(端):103.25.65.102   #.部署prometheus的服务器出口ip
  • 第2步,测试一下钉钉消息推送
url=https://oapi.dingtalk.com/robot/send?access_token=3da7216e1c31362935f55c5ccfae23b3a307a799c4eed13ec560ec3a6a5b832c
curl $url -H 'Content-Type: application/json' -d '{"msgtype": "text", "text": {"content": "钉钉机器人群消息测试"}}'
  • 第3步,修改配置文件 ./dingtalk/config.yml替换url为上面的 Webhook地址,无需重启服务,即刻生效
[root@localhost ~]# cat /data/docker/prometheus/dingtalk/config.yml | grep url
    url: https://oapi.dingtalk.com/robot/send?access_token=3da7216e1c31362935f55c5ccfae23b3a307a799c4eed13ec560ec3a6a5b832c

遇到的问题

  • 问题1:如何全部铲掉
docker-compose -f /data/docker/prometheus/docker-compose.yml down
docker rmi -f $(docker images | grep ops | awk '{print $3}')
rm -rf /data/docker/prometheus
  • 问题2:启动容器提示 permission denied
错误:执行 docker logs -f prometheus 看到 active err="open /prometheus/queries.active: permission denied"
解决:执行 chmod -R 777 /data/docker/prometheus 然后重启容器
  • 问题3:导入模板之后提示 Failed to upgrade legacy queries Datasource xxx was not found
错误:导入json格式的dashboards模板之后,打开dashboards报错 Failed to upgrade legacy queries Datasource xxx was not found
解决:将 json 文件中所有的 uid更换为当前监控数据的数据源名称,然后再将其导入
     "datasource": { "type": "prometheus", "uid": "PSDF93FB590B2093" },
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2024-06-25 15:42:47

results matching ""

    No results matching ""