30分钟教你搭建普罗监控系统—股票人气榜实时变化!

发布时间:2026/10/31 14:39:01
30分钟教你搭建普罗监控系统—股票人气榜实时变化! 上次我们已经讲过, 存在很多读者对于它的具体搭建方法以及应用方式缺乏足够的了解, 所以今天我们要结合在一起使用普罗米修斯与采集脚本的方式来进行操作, 来编写一个关于东方财富人气榜的监控系统, 这个规模被设定为较小的程度。跟着这个文章的指引, 静下心来一步一步地往前走, 说不定你仅仅花费三十分钟的时间就能够把环境搭建工作完成, 这种感觉是非常舒适的, 在此首先介绍一些基本的概念。关于普罗米修斯()这个问题, 在上个阶段的时候, 我们曾经使用过整个篇幅的一篇文章把情况详细地说清楚过, 大家也都知道了它其实就是一个开源的用来做监控报警和存储时序数据的数据库系统。要是说此前你还没有去认真读过那篇介绍性的文字的话, 建议你不妨抽出一点时间来读一下, 大体消耗五分钟的时间应该就够了:它是一个数据可视化方面的网络应用程序平台, 并且这个平台是开源的。当用户把要连接的数据源进行配置之后, 就能够通过网络浏览器的方式来把数据对应的图表给展示出来, 同时还能呈现出相关的警告信息。举一个具体的事例来说明, 我这边是利用了普罗米修斯配合监控主机上面的性能指标, 随后去构建了一个用于实时查看主机状态的数据仪表盘, 这个仪表盘呈现出来的样子是下面这样的:关于大家所熟知的那个东方财富人气榜, 它的具体所指内容其实就是下面这个方面。它可以把我们当前在市场上比较活跃的一些股票给提取出来, 这样的话, 就可以供我们作为投资使用时的一个参考因素。然后我们今天所要进行的实际操作, 就是自己来构建一套用于监控的系统, 从而对某一个特定的股票在平台上的实时排名变化情况, 进行不间断的观察与记录。1.搭建要先去创建出那个安装的目录, 然后再进行添加用户这个操作:PROM_PATH/data/prometheusmkdir -p${PROM_PATH}mkdir -p${PROM_PATH}/{data,conf,logs,bin} useradd prometheuscd/usr/local/src进行下载和文件的解压操作, 在此过程中, 我们选用的是在2021年5月18日这个时间节点所更新的最新版本, 具体的版本号为v2.27.1:wget tar -xvf prometheus-2.27.1.linux-amd64.tar.gzcdprometheus-2.27.1.linux-amd64/ cp prometheus promtool${PROM_PATH}/bin/ cp prometheus.yml${PROM_PATH}/conf/ chown -R prometheus.prometheus /data/prometheus首先, 你要进行设置环境变量的操作。cat /etc/profile PATH/data/prometheus/bin:$PATH:$HOME/bin EOF把这个东西配置成系统服务里面的一个, 这样你就能直接用那个特定的命令来管着这个服务的开和关。cat /etc/systemd/system/prometheus.service [Unit] DescriptionPrometheus Documentationhttps://prometheus.io/ Afternetwork.target [Service] Typesimple Userprometheus ExecStart/data/prometheus/bin/prometheus --config.file/data/prometheus/conf/prometheus.yml --storage.tsdb.path/data/prometheus/data --storage.tsdb.retention90d Restarton-failure [Install] WantedBymulti-user.target EOF现在你按照下面的命令, 将系统进行重新加载操作, 然后去观察查看那些服务的启动状态是否是正常的。systemctl daemon-reload systemctlenableprometheus systemctl start prometheus systemctl status prometheus看到了这个状态, 说明一切都是完全正常的。记得把9090端口开放, 这样才可以访问的 Web 端, 访问 http://服务器IP:9090, 查看得到 Web 界面, 说明安装成功:2.安装同时, 我们还选择去采用最新的那个8.0.1版本的东西, 至于具体的装上去的办法, 就像下面这个样子:这系列系统使用的是以下命令来进行安装操作的。cd/usr/local/src wget sudo yum localinstall grafana-6.5.2-1.x86_64.rpm你可以通过使用下面的命令, 来将本模块安装到系列系统当中:cd /usr/local/src sudo apt-get install -y adduser libfontconfig1 wget https://dl.grafana.com/oss/release/grafana_8.0.1_amd64.deb sudo dpkg -i grafana_8.0.1_amd64.deb紧接着, 咱们把系统服务给运行起来就行了。systemctl start grafana-server systemctl status grafana-server看到了这个状态, 说明一切都是完全正常的。你记得要开放 3000 端口, 因为只有这样, 你才可以去访问那个地址, 它就是: http://你的服务器IP:3000, 具体的情况如下所示:你需要输入用户名, 然后输入密码, 接着登录到系统里面去。这里的用户名和密码都设定为admin这个字符串。假如说网页页面能够正常打开的话, 那么就代表软件的安装工作已经顺利完成了。3.初尝为了对这套系统进行初步的尝试和摸索, 我们可以选择从最简单的方式做起, 那就是开始采集主机的性能相关的各类数据。这里有一款官方所推出的、专门用于采集主机性能的数据工具。通过使用该工具, 我们能够比较方便且顺畅地将主机的各类性能指标数据导出并传输到相应的平台或者目的地上去。3.首先进行下载, 然后再完成安装工作。NODE_PATH/data/prometheus/node_exporter/cd/usr/local/src/ mkdir -p${NODE_PATH}wget tar -xvf node_exporter-1.1.2.linux-amd64.tar.gz cp node_exporter-1.1.2.linux-amd64/node_exporter${NODE_PATH}chown -R prometheus.prometheus${NODE_PATH}配置为系统服务cat /lib/systemd/system/node_exporter.service [Unit] Descriptionnode_exporter Documentationhttps://prometheus.io/ Afternetwork.target [Service] Typesimple Userprometheus ExecStart/data/prometheus/node_exporter/node_exporter Restarton-failure [Install] WantedBymulti-user.target EOF现在, 通过调用命令的方式来重新对整个系统的指令集合进行一遍加载工作, 然后去观察那些相关联的服务项目, 看它们是否已经处于正在运行的状态。systemctl daemon-reload systemctlenablenode_exporter systemctl start node_exporter systemctl status node_exporter你可以参照一下图中的样子, 如果情况如图所示, 这就代表了启动已经成功的完成。放行9100端口, 访问http://你的服务器地址:9100/ 看到如下指标页面说明安装成功。配置 .yaml ( 下为 .yml), 让 采集 输出的指标数据vim /data/prometheus/conf/prometheus.yml其相关的设定参数内容如下呈现。# my global configglobal: scrape_interval: 15s# Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s# Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configurationalerting: alertmanagers: - static_configs: - targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global evaluation_interval.rule_files:# - first_rules.yml# - second_rules.yml# A scrape configuration containing exactly one endpoint to scrape:# Here its Prometheus itself.scrape_configs:# The job name is added as a label job to any timeseries scraped from this config.- job_name:prometheus# metrics_path defaults to /metrics# scheme defaults to http.static_configs: - targets: [localhost:9090]# 主要是新增了node_exporter的job如果有多个node_exporter在targets数组后面加即可- job_name:node_exporterstatic_configs: - targets: [localhost:9100]保存后重启:systemctl restart prometheus最后配置在之后的步骤里面, 去选定那个被称作是数据源的东西。你得先把那个所谓的url给它填入进去, 紧接着你就去点击一下那个标有savetest字样的按钮, 以便达成一个保存的动作:随后, 将官方提供的仪表盘进行导入操作, 其中包含的官方模板编号为8919。之后你就能看到本机所展示的, 那些非常漂亮的性能指标数据的仪表盘了。不看的时候真不知道, 一看才发现吓了一大跳的, 原来我是需要升级这台机器的内存的了。4.你要编写采集脚本。为了做到能够采集东方财富人气榜的前100名, 我们需要通过编写一个人气榜的采集脚本的方式来完成这件事, 并且需要让这个脚本以某种特定的方式, 像进行示例展示一样的模式去输出相关的指标信息。为了做到这回事, 我们一定得安装模块:pip3 install prometheus_client大家可以把那部分关于获取股票排名用的代码, 给拿过来看看。# Python实用宝典# 2021-06-13# 文件名: fetch_stock.pyimporttimeimportrequestsfromprometheus_clientimportstart_http_server, CollectorRegistry, Gauge reg CollectorRegistry() gauge Gauge(rank,人气榜排名, [stock_id], registryreg )defprocess_request():url kwargs {appId:appId01,pageNo:1,pageSize:100, } result requests.post(url, jsonkwargs).json()foriinresult.get(data, []): gauge.labels(stock_idi[sc]).set(i[rk]) time.sleep(60)if__name__ __main__: start_http_server(8000, registryreg)whileTrue: process_request()在这里, 大家仅仅捕获人气排行榜的前一百名的数据。并且通过客户端开启一个web服务。这样一来, 当你通过http服务访问第八千端口的时候就可以输出这些指标。为了能使其可以一直不停地去产出那些指标方面的数据, 所以咱们需要把 nohup 给用起来, 好让它能变成一个那种常驻在后台的进程。nohup python3 fetch_stock.py 我们需要开放8000这个端口, 然后去访问那个网址, 就是http加上你的服务器IP地址, 再用冒号接着写8000, 这样就能查看到输出的这些指标数据了:5.应用采集脚本和之前的设定是一样的意思, 我们就得把咱们自己编的那些数据采集的脚本放置好, 具体的步骤是在配置.yaml这个文件里去完成。请设置yaml文件的内容, 来让采集程序输出的那些指标数据。#(CentOS) vim /data/prometheus/conf/prometheus.yamlvim /data/prometheus/conf/prometheus.yml# ubuntu其相关的设定参数内容如下呈现。# my global configglobal: scrape_interval: 15s# Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s# Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configurationalerting: alertmanagers: - static_configs: - targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global evaluation_interval.rule_files:# - first_rules.yml# - second_rules.yml# A scrape configuration containing exactly one endpoint to scrape:# Here its Prometheus itself.scrape_configs:# The job name is added as a label job to any timeseries scraped from this config.- job_name: prometheus# metrics_path defaults to /metrics# scheme defaults to http.static_configs: - targets:[localhost:9090]# 主要是新增了node_exporter的job如果有多个node_exporter在targets数组后面加即可- job_name: node_exporter static_configs: - targets:[localhost:9100]# 新增我们的Python股票采集脚本- job_name: hot_list static_configs: - targets:[localhost:8000]保存后重启:systemctl restart prometheus到了最后配置这个环节, 我们选择新建一个。接着, 来挑那个叫作rank的指标。您单击Use query这一个操作, 就可以把那些股票排好名的折线图全部获取到。6.配置告警为了在某个特定股票抵达指定的排名等级时, 去启动那个通知的动作, 我们是需要先把告警渠道这个事给布置妥当的。接着进行邮件告警的设置操作, 点击 Test 这个按钮, 这个时候会弹出来一个错误提示告诉你有这个问题:说白了, 就是咱们现在还没把SMTP这项服务搞好。得把这SMTP相关服务给配好了, 发邮件这事儿才算能正常运转。你要是确实是跟着这边这篇教程一步一步操作过来的, 那么, 那个ini类型的文件呢, 它就在 /etc//.ini这个位置放着。vim /etc/grafana/grafana.ini接着你需要对smtp部分进行相应的配置, 把那个host填上去, 还有user也要写完整, 并且把下面展示出来的那些设置项一个一个打开, 操作的样子就照着图中所显示的方式进行即可。然后是重启这个操作。systemctl restart grafana-server之后, 再次点击那个“Test”按钮。如果你的邮箱里收道了那样的电子邮件。这就说明通知功能是可以正常发送的。然后我们进入正题, 监控某只股票的排名变化, 比如:然后进行Alert的配置来设置告警信息, 当某个排名的数值高于65名的时候, 系统会自动执行发送邮件的通知操作。完成工作之后, 将光标移到屏幕的右上角区域, 找到并点击标有 save 的那个按钮, 以此来执行保存这一操作行为。然后进入到 告警中心的位置,你会看到刚刚配置好的那些告警规则, 在这里都是可以来进行管理的。你点一下“Pause”这个按钮, 系统就能把当前这条告警停住别响。如果你打算改一改设置警告的条件和规则的话, 你就可以去找那个叫作“Edit alert”的地方进行变动操作。只要这个告警状态一旦被触发, 那么它的状态就会发生改变, 你就会收到电子邮件通知。这个邮件的效果具体表现为下面这个样子。在邮件里, 显示的告警图片没有出现, 这是因为咱们这边没有安装“image”这个东西, 得在你的服务器上执行下面的那些命令来把它装上, 然后还得启动一下机器重启。grafana-cli plugins install grafana-image-renderer systemctl restart grafana-server在后来所收到的告警邮件里面, 是可以看到图片的存在:大家觉得怎么样, 其实用采集搭建一个股票监控系统这件事, 还是非常简单的吧? 通过创新性地监控东方财富人气榜上某只股票的变化并且产生告警这种方式, 是能够让你们熟悉监控策略的配置工作的, 同时也能够让你们见微知著。如果大家跟着本文的教程一步一步来走的话, 那么相信你们是会有不少收获的。假如我们把思路打开一点, 去结合量化投资系列教程里的内容, 那是不是有可能搭建出一些相对更加有价值的策略模型呢, 回答是完全可以的。我们可以对那些价格在一百元人民币以下的所有可转债所对应的股票进行监控工作, 并且如果这些股票出现在了人气榜单或者飙升榜单之上需要说明的是本文并没有对这些数据进行采集, 有兴趣阅读文章的读者可以自己去进行数据采集, 然后再去购买这些价格比较低的可转债产品, 这种用于买入产品的策略也许也是一个不错的办法。你不妨把东方财富的那个榜单分类给丢掉, 然后去搭一个自己专属的排名循环对比增长用来买入的策略, 再去弄一个环形对比下降用来卖出的规则这一点, 我觉得肯定特别有意思。我们的这篇文章至此就算是完结了, 若是你认同或者满意今天所提供的这个实际操作的指导内容, 那么希望你能够继续地关注实用宝典这一官方渠道以便获取更多有用的资料。精选文章

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询