首页
推荐
GitHub加速
IT工具
PDF工具
Search
1
随身wifi刷debian系统
106 阅读
2
debian 系统使用 fail2ban 教程
47 阅读
3
白嫖Cloudflare优选IP给Vercel网站加速
41 阅读
4
centos7.6 部署python3.12环境——实施方案
41 阅读
5
docker-compose快速安装typecho
23 阅读
docker
cloudflare
linux
nginx
typecho
登录
Search
标签搜索
docker-compose
docker
typecho
sqlite
浏览器
Firefox
homebrew
proxy
gh-proxy
prometheus
grafana
vps
us.kg
cloudflare
eu.org
debian
随身 wifi
Gotify
老阳
累计撰写
35
篇文章
累计收到
0
条评论
首页
栏目
docker
cloudflare
linux
nginx
typecho
页面
推荐
GitHub加速
IT工具
PDF工具
搜索到
28
篇与
的结果
2024-06-20
自建消息推送工具 Gotify 实现消息私有化通知
前言之前分享了如何通过 Webhook 将 VPS 与 NAS 上部署的应用消息推送到钉钉、飞书、企业微信,但是对于部分用户来说,可能因为以下种种原因,不方便使用常见的办公 IM 软件来进行消息推送:消息涉及隐私敏感信息,不希望推送到公开的服务上日常用不到钉钉、飞书、企业微信钉钉、飞书、企业微信提示音 PTSD...对于这些用户而言,Gotify 或许是更好的选择,作为私有化消息推送工具,它有以下特点:Docker 一键部署,自己掌控数据对于 NAS 用户来说,可以直接将 Gotify 部署在局域网内,通过局域网就可以完成消息的推送Gotify 同时拥有网页端与安卓端TIPGotify 安卓 APP 可以直接在 Play Store 下载,网络不顺畅的用户可以选择下载我转存的 UC 网盘Gotify 官方无 iOS 端,苹果用户可以使用网页端或选择其他推送工具,例如 Bark、ntfy安装通过以下 Docker 命令直接启动docker run -p 8080:80 -v /var/gotify/data:/app/data gotify/server也可以通过 Docker Compose 启动version: "3" services: gotify: image: gotify/server ports: - 8080:80 volumes: - "./gotify_data:/app/data"其中环境变量可以参照官方文档(https://gotify.net/docs/config#environment-variables)TIP由于一些众所周知的原因最近 Docker Hub 的访问可能不是那么顺畅,可以尝试一下 ghcr.io/gotify/server对于 armv7 和 arm64 设备,则需要拉取 gotify/server-arm7 与 gotify/server-arm64初始化通过 http://ip:8080 进入 Gotify 的网页端,默认用户名与密码均为 admin登录成功后,首先要点击上方的 ADMIN 按钮,修改登录密码点击 APPS,创建一个应用用于区分不同应用发送的消息,其中 Default Priority 为通知优先级,在网页端表现为不同颜色标记;安卓 APP 通知中表现为静音消息与默认消息。创建完毕后,复制 Token 备用消息推送适配应用对于适配了 Gotify 的应用,使用非常简单,只需填入刚才复制的 Token 以及服务器的地址即可完成推送未适配应用对于未适配 Gotify 的应用,则需要通过 POST 请求来发送通知,请求格式参考 Swagger UI 中 /message 的 POST 请求请求 URL 为 http://ip:8080/message?token=安卓端从 Play Store 或 UC 网盘 下载安装后打开 APP,输入 Gotify URL 以及刚才修过的用户名密码进行登录,也同样可以看到之前收到的消息
2024年06月20日
7 阅读
0 评论
0 点赞
2024-06-19
VPS 常用脚本及配置
TIP以下的大部分脚本都可以使用多合一脚本直接运行 curl -Lso zc.sh https://link.zhichao.org/sh && bash zc.sh常用软件Dockercurl -sSL https://get.docker.com/ | sh测速脚本HyperSpeed# 三网测速 bash <(curl -Lso- https://bench.im/hyperspeed)Bench# 国内外测速 + 硬盘读写 curl -Lso- bench.sh | bash路由追踪NextTrace安装# /usr/local/bin/nexttrace bash -c "$(curl http://nexttrace-io-leomoe-api-a0.shop/nt_install_v1.sh)"使用# 基本使用 nexttrace ip/domain # 北上广(电信+联通+移动+教育网)IPv4 / IPv6 ICMP 快速测试 nexttrace --fast-traceBackTrace安装# 三网回程直接显示 # /usr/bin/backtrace curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh使用backtrace解锁测试流媒体解锁bash <(curl -L -s check.unlock.media)OpenAI 解锁bash <(curl -Ls https://github.com/ludashi2020/OpenAI-Checker/raw/main/openai.sh)MTProto安装bash <(wget -qO- https://git.io/mtg.sh)卸载systemctl disable mtg systemctl stop mtg rm -f /usr/local/bin/mtg /etc/systemd/system/mtg.service /etc/mtg.tomlChrony 时间同步安装apt-get install chrony使用# /etc/chrony/chrony.conf # 添加 NTP 服务器 server ntp.aliyun.com minpoll 4 maxpoll 10 iburst server us.pool.ntp.org minpoll 4 maxpoll 10 iburst启动systemctl start chronyd systemctl enable chronyd验证chronyc tracking chronyc -n sources -v参考资料阿里云 - 管理时间同步服务BBR# Linux 内核版本大于 4.9 echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf sysctl -p sysctl net.ipv4.tcp_available_congestion_control lsmod | grep bbr更新内核bash <(curl -Lso- https://git.io/kernel.sh)
2024年06月19日
0 阅读
0 评论
0 点赞
2024-06-18
教你申请永久免费的 us.kg 域名 支持接入 Cloudflare
前言之前的永久免费域名 eu.org 已经很久没有审批新的域名了,今天给大家推荐的 us.kg 不需要审批,注册账号申请域名后直接可以使用,并且它也可以像 eu.org 一样接入 Cloudflare在申请之前需要注意以下几点:每个账号可以注册 3 个域名永久免费,但每年需要提前 180 天手动续期 1 次注册时需要 KYC,但目前没有验证,可以随意填写免费域名不能保证长期稳定,请勿用于生产环境申请步骤打开申请页面(https://register.us.kg/),点击下方的 Sign up填写相关信息,注意邮箱不可以使用临时邮箱,其余信息可以使用这个工具生成登录后可能需要 KYC ,内容可以任意填写,图片也可以随意上传一张,系统会自动通过审核完成 KYC 进入后台后,可以直接点击左侧的 Domain Registration 申请域名填写 NS,将 Cloudflare 的 NS 填入即可完成以上步骤后,就能看到域名申请成功了等待片刻之后,会收到 Cloudflare 邮件,提示域名成功接入,此时就可以直接在 Cloudflare 解析使用域名了
2024年06月18日
1 阅读
0 评论
0 点赞
2024-06-18
获取免费的 eu.org 域名
今天教大家白嫖一个二级域名,申请的域名后缀为【.eu.org】,可能大家比较熟悉的只是【.org】,【.eu.org】应该是没见到过的吧!PS:eu.org 是欧盟组织下面的域名,EU 代表欧盟,Paul Mockapetris 在 1996 年的 9-10 月份创建了这个域名的 DNS 服务器,计划是专门给无力承担费用的一些组织使用的。所以它对个人和组织是免费注册的。目前已经被谷歌,cf 等一些大公司认可为顶级域名。🔺 打开注册地址:https://nic.eu.org/,然后点击【here】。🔺 然后在出现的这个页面点击【Register】按钮。🔺 然后就来到了注册页面。该注册页面需要填写的信息非常简单,除了【E-mail】哪项需要填写自己真实的邮箱,其它的直接使用一个英国地址生成器网站:https://www.meiguodizhi.com/uk-address 就可以搞定了。对应的填写方法如下:Name:全名+性别(中间是空格)E-mail:自己真实的邮箱,等下需要收取验证链接的。我用的 QQ 邮箱,实测没有问题Address (line 1):街道+城市(中间是空格)Address (line 2):州Phone 和 Fax:电话号码“I have read and I accept the domain policy”需要勾选起来“Password”填写的是你的登录密码;“Confirm Password”是确认密码,这个等下就会用到的,请务必记下来填完后点击【Create】按钮。🔺 然后你填写的邮箱就会收到一封邮件,如果你超过 30 秒还没收到,就去你邮箱里面的垃圾箱找找看。我这面的 QQ 邮箱几乎是 3 秒就有提示了,点开后是英文邮件,好在 QQ 邮箱自带翻译,所以我点击了“立即翻译”按钮。🔺 翻译之后可以看到它其实是一个激活邮件,我们按照提示点击它给出的链接进行激活验证。🔺 点击“Validate”(验证)按钮。🔺 点击"Login"(登录)按钮。🔺 然后在这个页面输入登录的账号和密码。Handle(账号):就是给你发的电子邮件“nic-hdl”后面的信息就是Password(密码):前面你注册的时候填写的登录密码完成之后点击“Login”按钮进入下一步。🔺 点击“New Domain”(创建)按钮。🔺 然后在该页面输入你想注册的域名,数字或者字母都可以。需要注意的是:后面必须加上【.eu.org】后缀。比如我这里填写的是“smzdm.eu.org”🔺 然后重新打开浏览器另外一个标签页,打开腾讯 DNSPOD:https://www.dnspod.cn/,登录自己的账号(没有就直接注册一个,可以微信扫码快速注册,非常简单),然后点击右上角的“管理控制台”。🔺 点击“我的域名”。🔺 点击“添加域名”🔺 在方框内输入我们在上个网站需要注册的那个域名,然后点击“确定“按钮”。🔺 然后就会弹出这个“未使用 DNSPod 解析服务“的提示,我们可以暂时不管,但是需要复制图片红色方框里面的两个网址。🔺 然后回到我们刚刚创建域名的网站,还是同一页面的下方,也就是上图的位置,首选选择“server names”,然后在 Name1 和 Name2 里面分别填入我们刚刚在腾讯 DNSPOD 复制的两个网址(其实这个是为我们申请到的域名托管到 cloudflare 做准备)。完成之后点击“Submit”按钮。🔺 当出现上图中"No error...Done",就说明成功了~然后就是等待审核时间。审核快点的可能不到一天,慢点的需要一个月也有可能。🔺 不过我可以告诉大家一个小技巧,你完成之后可以回到这个页面继续创建另外一个域名,也是同样的操作。一个账号貌似可以创建 4 个域名,这样的好处就是你总会有个域名短时间内就能通过审核的。🔺 比如说我其中另外一个不到一天就通过审核了。通过审核的域名会直接通过邮箱来通知我们的。🔺 并且在我们创建域名的那个网站下面也能看到。🔺 当我们使用通过审核的这个域名再添加到腾讯 DNSPOD 的时候,看见没有,直接显示正常了,也就是说可以解析了。🔺 最后给大家看看我群晖 NAS 上添加的 DDNS ,用的就是申请的这个域名,完全没有问题!🔺 外网访问当然也是没有任何问题的。简单来说,就是白 P 成功!不过需要说明的是,这个域名也只是不花钱,随意玩玩而已,貌似国内是无法备案的。但是 NAS 用户用它来作为 DDNS 的域名解析还是没有任何问题的。
2024年06月18日
0 阅读
0 评论
0 点赞
2024-06-18
通过 ddns-go 动态域名解析 实现公网访问内网服务
前言如今 IPv6 的普及度越来越高,与 IPv4 不同的是,大部分人获取到的 IPv6 是公网 IP 并且每一个设备都有一个属于自己的公网 IPv6,因此我们无需再进行内网穿透、端口转发等操作,直接通过设备的公网 IPv6 就可以成功访问到内网服务。但是直接记住这么长 IPv6 的地址来访问显然不现实,我们可以将域名通过 AAAA 解析到我们的 IPv6 地址上,这样访问时,只需要输入域名,DNS 就会帮我们解析到响应的 IP 地址了。即便如此,几天之后你就会发现域名又无法访问了,这是因为运营商分配的 IPv6 地址是动态的,过几天 IPv6 就会变动一次,所以就需要 DDNS 了,它可以定时获取我们当前的 IPv6 地址,并将该地址同步到 DNS 服务商。安装 ddns-goddns-go 是一个使用 Go 语言编写的 DDNS 客户端,支持多种 DNS 服务商,通过 Docker 可以直接安装docker run -d --name ddns-go --restart=always --net=host -v /opt/ddns-go:/root jeessy/ddns-go使用 ddns-go在使用 DDNS 之前,需要确保正常获取到 IPv6,并能正常访问 IPv6,通过 http://[ipv6]:port 的形式,能够访问即可。若访问失败,则需要检查光猫或路由器的 IPv6 防火墙配置是否正确。在浏览器中打开 http://ip:9876 即可进入到 ddns-go 的管理界面,按照以下步骤依次配置:首先,选择对应的 DNS 服务商,本文以 Cloudflare 为例,点击 创建令牌 -> 编辑区域 DNS (使用模板) 跳转到 Cloudflare 创建一个 Token点击 Create Token 创建 Token选择 Edit zone DNS,点击 Use template选择自己需要的域名最后会出现一个 Token,将该值填入到 ddns-go 中即可返回 ddns-go,来到下方的 IPv4 与 IPv6 设置,一般没有公网 IPv4 的可以取消勾选 IPv4,勾选 IPv6,将域名填入下方的 Domains 中,稍等片刻,就可以直接用该域名访问到内网服务了(部分地区 80、443 端口没有开放,需要使用非标端口)
2024年06月18日
0 阅读
0 评论
0 点赞
2024-06-18
随身wifi刷debian系统
0. 前言最近我在网上看到一款骁龙 410 SoC 的随身 WiFi,性价比高,领券后十元以下就能买到。更重要的是,这款 SoC 的随身 WiFi 能刷 Debian 系统。你可以在上面搭建网站甚至 MC 服务器,也可以接上扩展版当 Linux 开发板用,可玩性很高。随身 WIFI 的优势就是价格低廉,性能和树莓派 zero2、树莓派 3b 差不多。本文记录一下刷机的步骤和注意事项。1. 硬件配置这款随身 WiFi 配置如下:SoC骁龙 410(MSM8916)四核 Cortex-A53,64 位内存512MB存储4GB版号UFI001C、UFI001B、UFI003、UZ801、SP970不是骁龙 410 SoC 的随身 WiFi 无法刷机,请知悉。2. 所需文件高通 9008 驱动ADB 工具Miko 备份工具Debian 刷机包这些软件可以在下边的百度网盘链接中下载链接:https://pan.baidu.com/s/1xSkiQ8fJo3vx3c0HiDZs8A?pwd=kuvn提取码:kuvn3. 查看板子型号如果不确定下载哪个,请先查看板子型号再下载刷机包。用螺丝刀将随身 WiFi 的外壳拆开,查看板子上方的丝印,型号一般以 UFI、UZ 或 SP 开头。如红框中所示,我买到的型号是 UFI003。4. 安装 9008 驱动执行 driver.exe,并点击立即安装。在弹出如下窗口中,点击“安装”。5. 安装 ADB 工具解压 platform-tools_r34.0.5-windows.zip,并将解压目录添加到环境变量。打开命令提示符,执行 adb version。有如下输出,则表明配置正确。C:\Users\Thinkpad>adb version Android Debug Bridge version 1.0.41 Version 34.0.5-10900879 Installed as D:\platform-tools\adb.exe Running on Windows 10.0.190456. 安装 Miko 备份工具解压 MiKo_Loder Pro.zip,运行 miko.exe 安装备份工具。安装完成后,桌面上会出现 Miko 备份工具的快捷方式。在图标上右键,打开文件所在位置,将解压得到的 Loader.exe 复制到 Miko 安装目录即可。7. 开启 ADB将随身 WiFi 插入电脑 USB 接口。打开设备管理器,如果此时多了一个名叫 Android Composite ADB Interface 的设备,则表明随身 WiFi 已经开启 ADB,无需执行其他操作。如果没有出现这个设备,则需要手动开启 ADB。以 UZ801 型号为例,连上随身 WiFi 的热点,并访问 http://192.168.100.1/usbdebug.html 即可开启 ADB,再次访问即可关闭。8. 备份原厂固件为避免刷错固件变砖等情况,强烈建议备份原厂固件。打开命令提示符,执行 adb reboot edl,此时设备管理器中会多出高通 9008 设备。我们运行上文所提到的 Loader.exe(即 Miko 工具)进行备份数据。此时窗口右侧显示设备信息,表明随身 WiFi 已被成功识别。如果显示 Not Found 字样,请重新安装 9008 驱动并再次尝试。依次点击 Read –>Partition Backup/Erase–>Load Partition Structure。然后双击红色 Option 下面的灰条,选择备份目录,并点击 Read Full Image。再次选择备份目录,并取一个文件名,点击确定,即可开始备份。等待几分钟,直到进度条达到 100%,右侧输出 Sucess 字样和用时,则表明备份完成 。9. 刷入 Debian拔掉随身 WiFi 并重新插入 USB 接口,解压 Debian 刷机包。打开命令提示符,执行 adb reboot bootloader 进入 fastboot 模式。运行刷机包中的 flash.bat 刷入系统,等待刷机完成。输出 all done! 则表明刷机完成。10. 安装 RNDIS 网络驱动刷入完成后,重新插入随身 WiFi,打开设备管理器,若显示 网络设配器->基于远程 NDIS 的 Internet 共享设备 则跳过步骤 2,3;若显示 其他设备->RNDIS/未知设备 则跳过步骤 2;若显示 ADB Interface 则继续操作找到 ADB Interface 将其进行卸载,勾选 尝试删除此设备的驱动程序 ,然后重新插入随身 WiFi找到 其他设备->RNDIS/未知设备,选择 更新驱动程序->浏览我的电脑以查找驱动程序->让我从计算机上的可用驱动程序列表中选取->网络适配器->基于远程 NDIS 的 Internet 共享设备至此,RNDIS 驱动安装成功。11. 连接随身 WiFi 终端驱动安装成功后,电脑上会多出一个名叫 4G_UFI_123456 的 NDIS 设备,同时会出现一个同名的热点,密码为 12345678。Debian 默认用户名为 user,密码为 1,root 密码也为 1。请务必及时修改密码(命令:passwd)。此时可以通过 adb 或 ssh 连接到 Debian 终端。12. 通过 adb 连接将随身 WiFi 插入电脑 USB 接口,使用以下命令查看已连接 adb 设备:adb devicesC:\Users\Thinkpad>adb devices List of devices attached 0123456789 device有新设备出现时,使用以下指令进入 bash:adb shell通过 adb 连接时,使用 nmtui、htop 等需要显示图形的命令,可能会出现如下错误:root@openstick:~# nmtui TERM environment variable needs set.设置 TERM 环境变量即可解决。export TERM=linux13. 通过 ssh 连接将随身 WiFi 插入电脑 USB 接口并连接上随身 WiFi 的热点,使用以下指令进行连接:ssh root@192.168.68.1如果连不上说明系统还在启动,请稍后再试。14. 随身 wifi 联网此时随身 WiFi 并没有联网,必须要关闭热点才能连接 WiFi。下面介绍详细步骤。首先打开命令提示符,执行 adb shell 进入 Debian 终端。然后设置 TERM 环境变量:export TERM=linux。执行 nmtui,选择“编辑连接”。左侧使用方向键选择 bridge,右侧选择“编辑”。并回车。删除其中的 wifi,并选择确定。。返回,选择启用连接,则可连接 WiFi。15. 优化系统删除无效软件包仓库rm -rf /etc/apt/sources.list.d/\*删除多余软件包apt autopurge -y adoptopenjdk-8-hotspot更换软件源cat <<EOF> /etc/apt/sources.list deb http://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free # deb-src http://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free deb http://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free # deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free #deb http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free # deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free deb http://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free # deb-src http://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free EOF更新软件包apt update && apt upgrade -y安装常用软件包apt install -y nano curl删除软件包缓存apt clean16. 关闭 LED 灯(可选)随身 WiFi 开机后,LED 灯会不停地闪烁,如果不喜欢的话,执行以下命令即可关闭。echo none > /sys/class/leds/blue:wifi/trigger echo none > /sys/class/leds/red:os/trigger执行后会立即生效。为避免重启后失效,建议设置开机自动执行。编辑 /etc/rc.local 文件,并将以上两行命令添加到 exit 0 之前,并保存。17. 后记感谢 HandsomeHacker 大佬的 OpenStick 开源项目和苏苏小亮亮大佬 的刷机包,能在随身 WiFi 上用上 Linux 系统离不开他们的努力。参考文章https://blog.iamsjy.com/2023/12/11/snapdragon-410-portable-wifi-hotspot-flash-debian-and-optimize/https://zhichao.org/posts/mifi.html
2024年06月18日
106 阅读
0 评论
0 点赞
2024-06-18
自动切换usb的otg模式
将下面的内容加到/etc/rc.local 的 exit 0 上面# usb auto otg echo host > /sys/kernel/debug/usb/ci_hdrc.0/role sleep 5 lsusb | grep -v Foundation if [ $? -eq 1 ] then echo gadget > /sys/kernel/debug/usb/ci_hdrc.0/role fi注:看一下第一行是不是#!/bin/sh -e,如果是需要删除-e这样插电脑的时候则是 usb 共享,用公对公或者 hub 的时候就可以接 usb 设备
2024年06月18日
0 阅读
0 评论
0 点赞
2024-06-18
开机检测自动切换主机模式
开机检查是否连接到电脑,没有连接就切换成主机模式可以用公对公接 usb 设备将下面的内容加到/etc/rc.local 的 exit 0 上面# usb auto otg sleep 3 grep 0 /sys/kernel/debug/usb/ci_hdrc.0/device | grep speed if [ $? -eq 0 ] then echo host > /sys/kernel/debug/usb/ci_hdrc.0/role fi
2024年06月18日
0 阅读
0 评论
0 点赞
2024-06-18
一、使用docker-compose快速部署Prometheus+grafana环境
由于最近公司服务频繁出问题,老板很生气,下面的人都很不好过,于是老大让加一下业务监控,来观察线上数据状态。但是由于 qa 环境数据量太少,所以自己搭建了一套环境做相关监控,并且写了个脚本模仿生产上的数据,并且做了很多指标,写了一些 Grafana 的 PromQL 语法,网上的资料也很少,我就来补充一下,这个下一章再讲。注意:docker 和 docker-compose 请自行下载安装创建相关目录并给予权限,持久化目录需要给 777 权限,否则容器启动失败cd ~ && mkdir prometheus && chmod 777 prometheus cd prometheus && mkdir grafana_data prometheus_data && chmod 777 grafana_data prometheus_data./docker-compose.ymlversion: "3.7" services: node-exporter: image: prom/node-exporter:latest container_name: "node-exporter0" ports: - "9100:9100" restart: always prometheus: image: prom/prometheus:latest container_name: "prometheus0" restart: always ports: - "9090:9090" volumes: - "./prometheus.yml:/etc/prometheus/prometheus.yml" - "./prometheus_data:/prometheus" grafana: image: grafana/grafana container_name: "grafana0" ports: - "3000:3000" restart: always volumes: - "./grafana_data:/var/lib/grafana"注:prometheus 主机需要部署以上容器,其他被监控主机只需要部署 node-exporterprometheus 配置文件(根据自己的服务器 ip 进行修改 targets 内容)./prometheus.ymlglobal: scrape_interval: 15s # 默认抓取周期 external_labels: monitor: 'codelab-monitor' scrape_configs: - job_name: 'node-exporter' #服务的名称 scrape_interval: 5s metrics_path: /metrics #获取指标的url static_configs: - targets: ['139.224.224.229:9100'] # 这个为监听指定服务服务的ip和port,需要修改为自己的ip,貌似云服务必须用公网ipdocker-compose 启动docker-compose up -d # 挂载目录给权限,不然会启动失败如果启动报如下的"没有权限"错误:grafana0 | You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later grafana0 | mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied grafana0 | GF_PATHS_DATA='/var/lib/grafana' is not writable. grafana0 | You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later grafana0 | mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied grafana0 | GF_PATHS_DATA='/var/lib/grafana' is not writable. grafana0 | You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later grafana0 | mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied grafana0 | GF_PATHS_DATA='/var/lib/grafana' is not writable. grafana0 | You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later grafana0 | mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied grafana0 | GF_PATHS_DATA='/var/lib/grafana' is not writable. grafana0 | You may have issues with file permissions, more information here: http://docs.grafana.org/installation/docker/#migrate-to-v51-or-later grafana0 | mkdir: can't create directory '/var/lib/grafana/plugins': Permission denied则需要将挂载目录赋予权限,即:chmod 777 grafana_data/ prometheus_data/ #个人根据配置文件中具体的挂在目录进行权限修改访问主机的 9090 端口可以查到 Prometheus 监控到的数据,访问 3000 端口是 grafana 的界面账密admin/admin配置监控,点击齿轮,选择 Data Sources点击 Add data source填写 prometheus 地址 ip+端口或者主机名+端口(需要配置 hosts)点击 save&test点击+号,选择 import输入模板号 9276,点击 load。 8919导入模板完成
2024年06月18日
1 阅读
0 评论
0 点赞
2024-06-18
二、使用脚本模拟数据
1.这里使用golang写的一个脚本模拟生产上的不同租户ID,不同渠道及不同门店的订单数据在订单服务流转耗时,代码如下:代码结构: C:. │ go.mod │ go.sum │ main.go └─metrics metrics.gometrics.go package metrics import ( "github.com/prometheus/client_golang/prometheus" "strconv" "time" ) var SyncExecuteLatencyTimeBuckets = []float64{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} var orderSyncPosTimeFromAcceptVec = prometheus.NewHistogramVec( prometheus.HistogramOpts{ Name: "order_sync_pos_time_from_accept", Help: "订单在OMS系统的流转时间", Buckets: SyncExecuteLatencyTimeBuckets, }, []string{"partner_id", "channel_id", "store_id", "cost_time"}, ) var orderSyncPosFailTotalVec = prometheus.NewCounterVec( prometheus.CounterOpts{ Name: "order_sync_pos_fail_total", Help: "下发订单至POS请求失败", }, []string{"partner_id", "channel_id", "store_id", "is_time_out"}, ) // TODO: 添加补偿相关的metric, 如补偿次数(hist) func init() { prometheus.MustRegister(orderSyncPosTimeFromAcceptVec) prometheus.MustRegister(orderSyncPosFailTotalVec) } func AddOrderSyncPosTimeFromAccept(partnerId, channelId, storeId string, costTime time.Duration) { orderSyncPosTimeFromAcceptVec.WithLabelValues(partnerId, channelId, storeId, "cost_time").Observe(costTime.Seconds()) } func AddOrderSyncPosFailTotal(partnerId, channelId, storeId string, isTimeOut bool) { orderSyncPosFailTotalVec.WithLabelValues(partnerId, channelId, storeId, strconv.FormatBool(isTimeOut)).Inc() }main.go package main import ( "example.com/m/metrics" "fmt" "gitee.com/yutiandou/wdtools/wdsys" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "log" "math/rand" "net/http" "time" ) func IndexHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "hello world") } func main() { http.Handle("/metrics", promhttp.Handler()) http.HandleFunc("/", IndexHandler) //新建一个容器,设置name diskPercent := prometheus.NewGaugeVec(prometheus.GaugeOpts{ Name: "cpu_percent", Help: "cpu use percent", }, []string{"percent"}, ) //将容器注入到prometheus中 prometheus.MustRegister(diskPercent) go func() { log.Fatal(http.ListenAndServe(":1010", nil)) }() for i := 0; i < 5; i++ { go func() { for { rand.Seed(time.Now().Unix()) nowTime := time.Now() time.Sleep(time.Second * time.Duration(rand.Intn(10))) //partnerIdList := []string{"200", "201", "206", "211", "231", "236", "251", "256", "261", "266", "281", "292", "311", "316", "366", "376", "381", "241", "336"} partnerIdList := []string{"200", "201", "206", "211", "231"} //channelIdList := []string{"1001", "1002", "1003", "1004", "1005"} //storeIdList := []string{"2001", "2002", "2003", "2004", "2005"} channelIdList := []string{"1001"} storeIdList := []string{"2001"} partnerId := partnerIdList[rand.Intn(len(partnerIdList))] channelId := channelIdList[rand.Intn(len(channelIdList))] storeId := storeIdList[rand.Intn(len(storeIdList))] metrics.AddOrderSyncPosTimeFromAccept(partnerId, "channel"+channelId, "store"+storeId, time.Since(nowTime)) metrics.AddOrderSyncPosFailTotal(partnerId, "channel"+channelId, "store"+storeId, time.Now().Second()%2 == 0) time.Sleep(3 * time.Second) } }() } for true { //获取cpu使用百分比 percent, _ := wdsys.GetCpuPercent() //设置到容器中 diskPercent.WithLabelValues("usedCPU").Set(percent) fmt.Println("cpu usd percent:", percent) <-time.After(time.Second * 3) } }2.主要是用了这两个文件,操作步骤例如(前提自行安装golang,如yum install golang): cd ~ && mkdir demo03 && cd demo03 go mod init example.com/m vim main.go(将main.go的内容复制进去) mkdir metrics && cd metrics vim metrics.go(将metrics.go的内容复制进去) cd .. go mod tidy go run main.go 3.接第一章,接下来,需要修改prometheus.yml文件,然后docker-compose restart3.1修改prometheus.yml global: scrape_interval: 15s external_labels: monitor: 'codelab-monitor' scrape_configs: - job_name: 'go' scrape_interval: 5s metrics_path: /metrics static_configs: - targets: ['150.158.96.97:1010'] 接下来看第三章
2024年06月18日
0 阅读
0 评论
0 点赞
1
2
3