本章将讲解基础数据结构的实现。众所周知,程序=数据结构+算法。数据结构为算法提供服务,算法围绕数据结构操作。因此,掌握数据结构并用代码实现是至关重要的。
基于Telegraf+Influxdb+Prometheus+Grafana的服务器看板部署概览
0. 方案比较
由于被监控唯一端口暴露,所以需要基于 push 的方案。
0.1 Prometheus
Prometheus 中有一个 Pushgateway 组件,大致流程为被监控节点实现脚本将数据推送到 Pushgateway,Prometheus 从 Pushgateway pull 数据:
优点 :
- 开源框架成熟;
- PromQL 支持复杂的查询和分析。
缺点 :
- 多个节点汇总到 Pushgateway,如果它挂了就全完了;
- Prometheus 拉取状态只针对 Pushgateway,无法对所有目标有效;
- Pushgateway 会持久化数据,如果监控下线,Prometheus 会拉取到旧的数据,因此需要手动清理 Pushgateway 不要的数据。
0.2 InfluxDB+Telegraf
在被监控节点上设置 Telegraf 代理,将数据 push 到 InfluxDB 的 API。
优点 :
- Telegraf 轻量级,易于部署;
缺点 :
- 与 Pushgateway 相比,Telegraf 可能会有轻微延迟。
- 可能不如 Prometheus 灵活度高。
- Influxdb 查询效率低。
3. Telegraf+Influxdb+Prometheus
使用 Telegraf 获取并推送数据到 Prometheus 。使用 Influxdb 做可持久化存储。
优点 :
- 继承了前两者的优点。
- 使用 Prometheus 查询,效率高。
1. 监控节点部署 InfluxDB
- 新建文件夹
/data/influxdb
- 执行
docker run -d --name=influxdb -p 8086:8086 -v /data/influxdb:/root/.influxdb2 influxdb:1.8-alpine
- 部署的是1.8 版本,不用可视化。
docker exec -it influxdb /bin/bash
进入容器,influx
启动 Influxdb 命令行交互。CREATE DATABASE mydb;
CREATE DATABASE telegraf;
创建数据库
2. 监控节点部署 Prometheus
- 创建
/data/prometheus/prometheus.yml
12345678910111213141516171819202122232425# my global configglobal:scrape_interval: 10s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 10s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# A scrape configuration containing exactly one endpoint to scrape:# Here it's Prometheus itself.scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["<监控节点IP>:9090"]storage:tsdb:out_of_order_time_window: 12h# When running prometheus in Agent mode, remote-write is required.remote_write:# Agent is able to run with a invalid remote-write URL, but, of course, will fail to push timeseries.- url: "http://<监控节点IP>:9090/api/v1/write" - 执行
docker run -d -p 9090:9090 -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml --name=prometheus prom/prometheus:v2.47.2 --enable-feature=remote-write-receiver --config.file=/etc/prometheus/prometheus.yml --query.max-concurrency=10 --storage.tsdb.retention.time=6d
(–web.enable-remote-write-receiver/–enable-feature=remote-write-receiver)
3. 被监控节点部署 telegraf
-
wget https://dl.influxdata.com/telegraf/releases/telegraf-1.28.3_linux_amd64.tar.gz
-
tar xf telegraf-1.28.3_linux_amd64.tar.gz
-
vim ~/.bashrc
添加export TELEGRAF_PATH=/data/telegraf/telegraf-1.28.3/usr/bin
并source ~/.bashrc
$TELEGRAF_PATH/telegraf version
查看版本- 编写 telegraf.conf 文件,样例。
/data/telegraf/telegraf-1.28.3/usr/bin/telegraf --config /data/telegraf/telegraf.conf
启动服务
4. 监控节点部署 Grafana
- 建立存储目录
mkdir /data/grafana & chmod 777 -R /data/grafana
-
执行
docker run -d -p 3000:3000 --name=grafana -v /data/grafana:/var/lib/grafana grafana/grafana:main
-
进入登录界面,输入初始密码 admin/admin 登录。
- 建立 Grafana 和 Prometheus 的连接
- 建立看板
Prometheus 学习笔记
洛谷入门计划自测题解
3. 基础算法
Day1 模拟,枚举,递归,贪心,分治,二分三分
0.简介
本文介绍竞赛中最基本的算法:模拟,枚举,递归,贪心,分治,二分/三分。
其中,模拟和枚举是最基本的。它甚至可以说不是一个算法,而是考察选手的思维逻辑能力和代码实现能力。所以对于这一部分,本文不做讲解。读者可以从各大OJ寻找模拟题进行训练。值得注意的是,模拟题虽然只考察语法,但是它的实现难度未必简单。如著名的斗地主、猪国杀等等。
接下来我们介绍后面的四个基础算法。
文章目录组件开发
k8s实践报告
docker+k8s 随记
2. 初赛知识点
摘抄自《CCF CSP第一轮认证一本通》丁向民编著,仅供学习交流,请勿侵权传播。