首页
关于
统计
留言
更多
友链
直播
壁纸
Search
1
单机部署milvus(向量数据库)
12 阅读
2
Nginx部署
11 阅读
3
MySQL部署
9 阅读
4
源码编译安装ansible
9 阅读
5
typecho 部署
8 阅读
Linux
Typecho
小程序
生活
其他
k8s
登录
Search
clouds
累计撰写
18
篇文章
累计收到
15
条评论
首页
栏目
Linux
Typecho
小程序
生活
其他
k8s
页面
关于
统计
留言
友链
直播
壁纸
搜索到
18
篇与
的结果
2025-06-20
单机部署milvus(向量数据库)
这里使用的docker-compose方式部署官网下载docker-compose配置文件 wget https://raw.githubusercontent.com/milvus-io/milvus/master/deployments/docker/standalone/docker-compose.yml -O docker-compose.yml准备镜像包不通外网,可以先在本地服务配置docker镜像加速器拉取以下镜像: docker pull quay.io/coreos/etcd:v3.5.18 docker pull minio/minio:RELEASE.2023-03-20T20-16-18Z docker pull milvusdb/milvus:v2.5.13 docker pull zilliz/attu:v2.4.0文件内容version: '3.5' services: etcd: container_name: milvus-etcd image: quay.io/coreos/etcd:v3.5.18 environment: - ETCD_AUTO_COMPACTION_MODE=revision - ETCD_AUTO_COMPACTION_RETENTION=1000 - ETCD_QUOTA_BACKEND_BYTES=4294967296 - ETCD_SNAPSHOT_COUNT=50000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd command: etcd -advertise-client-urls=http://10.0.0.124:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd healthcheck: test: ["CMD", "etcdctl", "endpoint", "health"] interval: 30s timeout: 20s retries: 3 minio: container_name: milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin ports: - "9001:9001" - "9000:9000" volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data command: minio server /minio_data --console-address ":9001" healthcheck: test: ["CMD", "curl", "-f", "http://10.0.0.124:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 standalone: container_name: milvus-standalone image: milvusdb/milvus:v2.5.13 command: ["milvus", "run", "standalone"] security_opt: - seccomp:unconfined environment: MINIO_REGION: us-east-1 ETCD_ENDPOINTS: 10.0.0.124:2379 MINIO_ADDRESS: 10.0.0.124:9000 volumes: - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus healthcheck: test: ["CMD", "curl", "-f", "http://10.0.0.124:9091/healthz"] interval: 30s start_period: 90s timeout: 20s retries: 3 ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio" networks: default: name: milvus 启动服务docker-compose up -d其它一些相关命令docker-compose ps 查看容器 docker-compose stop 停止容器 docker-compose start 启动容器 docker-compose down 停止并删除容器(特别注意以免误删容器)使用ps命令查看容器如果想查看milvus的日志,可以使用如下命令docker logs -f milvus-standalone启动attuattu为milvus的一款图形化管理工具,非常方便对milvus的一些管理。 docker run -d \ --name=attu \ -p 8000:3000 \ -e MILVUS_URL=10.0.0.124:19530 \ zilliz/attu:v2.4.0web访问地址http://10.0.0.124:8000/我们还可以访问minio对象存储的管理界面,查看milvus存储内容http://10.0.0.124:9001/login 账户和密码:minioadmin
2025年06月20日
12 阅读
0 评论
1 点赞
2025-06-18
typecho 部署
1.使用docker-compose部署1.安装docker和docker-compose,博主# https://clouds.emal.cc/index.php/archives/13/ 这个地址有安装详情 2.这里将原有的typecho代理成了https 3.docker images下载地址 mysql: https://package.emal.cc/httpd/img/mysql.tar typecho: https://package.emal.cc/httpd/img/typecho.tar nginx: https://package.emal.cc/httpd/img/nginx.tar2.准备目录mkdir -p {certificates,mysql,typecho} certificates 证书存放目录 mysql 数据库数据存放目录 typecho 博客主题插件存放目录3.创建文件config.inc.php php配置文件 mysql.env mysql配置文件 nginx.conf nginx配置文件 for i in config.inc.php mysql.env nginx.conf do touch $i done 添加权限: chmod -R 755 ./4.文件内容1.config.inc.php <?php //start debug //define('__TYPECHO_DEBUG__', true); // site root path define('__TYPECHO_ROOT_DIR__', dirname(__FILE__)); /** 开启HTTPS */ define('__TYPECHO_SECURE__',true); // plugin directory (relative path) define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins'); // theme directory (relative path) define('__TYPECHO_THEME_DIR__', '/usr/themes'); // admin directory (relative path) define('__TYPECHO_ADMIN_DIR__', '/admin/'); // register autoload require_once __TYPECHO_ROOT_DIR__ . '/var/Typecho/Common.php'; // init \Typecho\Common::init(); // config db $db = new \Typecho\Db('Pdo_Mysql', 'typecho_'); // 由于我们的typecho后续也是允许在docker里,所以根据之前的网络配置我们可以写db来连接同在docker部署的mysql,注意端口时docker内的端口,而不是映射到docker外的 $db->addServer(array ( 'host' => 'db', 'port' => 3306, 'user' => 'root', 'password' => 'your_password', 'charset' => 'utf8mb4', 'database' => 'typecho', 'engine' => 'InnoDB', ), \Typecho\Db::READ | \Typecho\Db::WRITE); \Typecho\Db::set($db); /** 开启HTTPS */ define('__TYPECHO_SECURE__'true); define('__TYPECHO_SECURE__',true); 2.mysql.env # MySQL的root用户默认密码,这里自行更改 MYSQL_ROOT_PASSWORD=your_password # MySQL镜像创建时自动创建的数据库名称 MYSQL_DATABASE=typecho # MySQL镜像创建时自动创建的用户名 MYSQL_USER=typecho # MySQL镜像创建时自动创建的用户密码 MYSQL_PASSWORD=your_password 3.nginx.conf ############################## 公共资源 ############################## # SSL优化参数 共享SSL参数(减少重复配置) ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-ECDSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; server { listen 443 ssl; server_name demo.cloud.com; ssl_certificate /etc/nginx/ssl/fullchain.pem; # 将这路径替换为你的证书路径 ssl_certificate_key /etc/nginx/ssl/privkey.pem; # 将这路径替换为你的证书私钥路径 # 关闭直接IP访问 if ($host != "demo.cloud.com") { return 444; } # 全站反向代理配置 location / { proxy_pass http://10.1.8.2:8003; } # 强制HTTPS跳转 error_page 497 https://$host$request_uri; } server { listen 8003; server_name demo.cloud.com; return 301 https://$server_name$request_uri; } ############################## 公共资源 ############################## # 公共代理参数文件 proxy_params proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 可选:WebSocket支持 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; 4.docker-compose.yml version: '2.1' services: typecho: image: joyqi/typecho:1.2.0-php7.4-apache restart: always volumes: - ./typecho:/app/usr environment: - TYPECHO_SITE_URL=https://demo.cloud.com networks: xy: ipv4_address: 172.18.0.10 logging: driver: "json-file" options: max-size: "50m" max-file: "3" db: image: mysql:5.7.21 restart: always ports: - 5425:3306 volumes: - ./mysql:/var/lib/mysql env_file: - mysql.env networks: xy: ipv4_address: 172.18.0.11 logging: driver: "json-file" options: max-size: "50m" max-file: "3" nginx: image: nginx:latest restart: always ports: - 5424:80 - 5423:443 volumes: - ./nginx.conf:/etc/nginx/conf.d/default.conf - ./certificates:/etc/nginx/ssl networks: xy: ipv4_address: 172.18.0.12 depends_on: - typecho networks: xy: driver: bridge ipam: config: - subnet: 172.18.0.0/165.typecho文件设置编辑Typecho站点根目录下的文件config.inc.php加入下面一行配置,否则网站后台还是会调用HTTP资源。 /* 开启HTTPS / define('__TYPECHO_SECURE__',true);6.启动服务docker-compose up -d7.Typecho设置登录Typecho后台 -> 设置 -> 基本设置 -> 站点地址改成https的域名是必须的8.修改你们的地址和域名wget https://packages.emal.cc/package/typecho/blogc-20250527.tar.gz # 更换域名 sed -i 's/demo.cloud.com/你的域名/g' docker-compose.yml sed -i 's/demo.cloud.com/你的域名/g' nginx.conf sed -i 's/10.1.8.2/你部署机器的IP/g' nginx.conf # 部署typecho docker-compose up -d
2025年06月18日
8 阅读
0 评论
1 点赞
2025-06-17
rabbitmq集群部署
1.安装rabbitmq#在所有节点安装 yum install -y epel-release erlang rabbitmq-server --downloadonly --downloaddir=./ yum -y localinstall ./*.rpm2.配置 hosts 文件在每个节点上修改 /etc/hosts,添加所有节点的 IP 和主机名映射: 10.0.0.141 nodes_141 10.0.0.142 nodes_142 10.0.0.143 nodes_1433. 配置 RabbitMQ Cookie#这里如果本身没有需要手动创建 (1) 生成随机字符串作为 cookie 值 tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 20 > /tmp/cookie (2) 拷贝到其他节点 scp /tmp/cookie 10.0.0.142:/tmp scp /tmp/cookie 10.0.0.143:/tmp (3) 复制到对应路劲下并且改名为.erlang.cookie cp /tmp/cookie /var/lib/rabbitmq/.erlang.cookie (4) 设置文件权限(必须为 400) chmod 400 /var/lib/rabbitmq/.erlang.cookie (5) 设置文件所有者为 rabbitmq 用户 chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie (6) 验证文件信息 ls -l /var/lib/rabbitmq/.erlang.cookie # 输出应类似:-r-------- 1 rabbitmq rabbitmq 20 Jun 17 15:38 /var/lib/rabbitmq/.erlang.cookie4.启动集群1.启动rabbitmq并切设置开机自启 (所有节点) systemctl start rabbitmq-server systemctl enable rabbitmq-server 2.在其他两个节点上执行加入集群命令 (nodes_142,nodes_143) rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@nodes_141 rabbitmqctl start_app 3.查看集群状态 rabbitmqctl cluster_status5.设置管理界面访问与用户配置1.启动插件管理 rabbitmq-plugins enable rabbitmq_management 2.验证服务监听状态 netstat -tnulp|grep 15672 #默认端口 15672 3.通过浏览器访问 http://<节点IP>:15672 初始默认账户: 用户名:guest 密码:guest # guest 账户默认只能从localhost访问。若需远程访问,需修改配置: # 编辑配置文件(若不存在则创建) vim /etc/rabbitmq/rabbitmq.conf # 添加以下内容 loopback_users.guest = false # 重启服务 systemctl restart rabbitmq-server 4.创建新用户 # 创建管理员用户 rabbitmqctl add_user admin <your_password> rabbitmqctl set_user_tags admin administrator rabbitmqctl set_permissions -p / admin ".*" ".*" ".*" # 查看用户列表 rabbitmqctl list_users 5. 删除默认 guest 用户 rabbitmqctl delete_user guest 6.通过浏览器验证访问 用户名:admin 密码:<your_password> 7.日志目录路劲 /var/log/rabbitmq/
2025年06月17日
5 阅读
2 评论
2 点赞
2025-06-17
编译安装nginx并配置Keepalived
1.环境准备:所有服务器需安装必要依赖:yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel wget #如果虚拟机不通外网,可以在本地虚拟机下载离线安装包 yum install -y gcc gcc-c++ make pcre-devel zlib-devel openssl-devel wget --downloadonly --downloaddir=./ #下载完成后将所有的单rpm包传到服务器上,然后安装 yum -y localinstall ./*.rpm2.编译安装 Nginx在所有 Nginx 服务器上执行: (1) 下载并解压源码 wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz -C /data && cd /data/nginx-1.24.0 (2) 配置编译参数 ./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_gzip_static_module \ --with-http_stub_status_module (3) 编译并安装 make && make install (4) 创建软链接方便使用 ln -s /usr/local/nginx/sbin/nginx /usr/sbin/nginx3. 配置 Nginx 负载均衡 (主备负载均衡配置相同)cat /usr/local/nginx/conf/load.conf http { upstream backend { server 10.0.0.143:80 weight=5; # 应用服务器1 server 10.0.0.71:80 weight=5; # 应用服务器2 } server { listen 80; server_name 10.0.0.100; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } }4.安装并配置 Keepalivedyum install -y keepalived # 不通外网同上 (1)主负载均衡器配置 cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100 # VIP地址 } } virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 10.0.0.141 80 { weight 1 SSL_GET { url { path /; digest ff20ad2481f8cd3a1864ed534ff456 } url { path /mrtg/; digest 9b3a0c85a887256d6939da88aabd8cd } connect_timeout 3 retry 3 delay_before_retry 3 } } } (2)备用负载均衡器配置 cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.0.0.100 # VIP地址 } } virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo rr lb_kind NAT persistence_timeout 50 protocol TCP real_server 10.0.0.141 80 { weight 1 SSL_GET { url { path /; digest ff20ad2481f8cd3a1864ed534ff456 } url { path /mrtg/; digest 9b3a0c85a887256d6939da88aabd8cd } connect_timeout 3 retry 3 delay_before_retry 3 } } } # router_id主备要保持一致;state主是MASTER,备是BACKUP;priority优先级备低于主服务器5.启动服务1.启动nginx /usr/sbin/nginx 2.启动Keepalived并设置开机自启 systemctl start keepalived systemctl enable keepalived6.验证部署1.检查 VIP 状态 ip -c a 或者 ip addr show eth0 inet 10.0.0.100/32 scope global eth0 # 主服务器应显示VIP 2.测试负载均衡 curl http://10.0.0.100 # 多次请求应轮询到不同后端服务器 3.模拟故障转移 # 在主服务器上停止Keepalived systemctl stop keepalived # 检查VIP是否漂移到备用服务器 ip -c a 或者 ip addr show eth0
2025年06月17日
1 阅读
0 评论
1 点赞
2025-06-16
Prometheus部署
1.安装chrony时间同步服务器1.所有节点安装chrony服务 [root@prometheus_servers_131 ~]# yum -y install chrony [root@prometheus_servers_132 ~]# yum -y install chrony [root@prometheus_servers_133 ~]# yum -y install chrony [root@prometheus_nodes_141 ~]# yum -y install chrony [root@prometheus_nodes_142 ~]# yum -y install chrony [root@prometheus_nodes_143 ~]# yum -y install chrony #有外网可以直接yum安装 [root@prometheus_servers_131 ~]# yum -y install chrony --downloadonly --downloaddir=./ #安装离线rpm包 [root@prometheus_servers_131 ~]# ll total 312 -rw-r--r-- 1 root root 256528 Aug 23 2019 chrony-3.4-1.el7.x86_64.rpm -rw-r--r-- 1 root root 57460 Apr 4 2020 libseccomp-2.3.1-4.el7.x86_64.rpm 2.添加hosts文件解析,注:这里也是所有节点配置hosts文件解析 [root@prometheus_servers_131 ~]# echo 10.0.0.131 prometheus_server_131 >> /etc/hosts 3.修改时间服务器配置文件 [root@prometheus_servers_131 ~]# vim /etc/chrony.conf ... #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst # 将默认的时间服务器注释掉,因为可能你的虚拟机无法联网 # 此处我将当前节点设置为时间服务器。 server prometheus_server_131 iburst # 指定允许访问的客户端地址列表 allow 10.0.0.0/24 # 当远程时间服务器和本地时间服务器冲突时,优先使用本地。 local stratum 10 4.重启chrony服务 [root@prometheus_servers_131 ~]# systemctl restart chronyd 5.修改客户端配置,注:所有节点修改配置文件 [root@prometheus_nodes_141 ~]# vim /etc/chrony.conf ... #server 0.centos.pool.ntp.org iburst #server 1.centos.pool.ntp.org iburst #server 2.centos.pool.ntp.org iburst #server 3.centos.pool.ntp.org iburst # 将默认的时间服务器注释掉,因为可能你的虚拟机无法联网 # 此处指定我们自定义的时间服务器 server prometheus_server_131 iburst 6.重启chrony [root@prometheus_nodes_141 ~]# systemctl restart chronyd 7.测试时间服务器是否生效 (1) 在服务端修改时间 [root@prometheus_servers_131 ~]# date -s "2024-10-01 08:30:00" (2) 重启服务 [root@prometheus_servers_131 ~]# systemctl restart chronyd (3) 查看其他节点是否同步服务端,与服务端时间一致,有的可能比较慢,重启服务即可 [root@prometheus_nodes_141 ~]# data -R (4) 将时间修改当前时间 [root@prometheus_servers_131 ~]# ntpdata ntp.aliyun.com (5) 查看其他节点时间也服务端一直,回到当前时间 [root@prometheus_nodes_141 ~]# data -R2.安装Prometheus1.准备工作目录 [root@prometheus_servers_131 ~]# mkdir -pv /zy/{app,data,logs} 2.二进制部署prometheus-server https://prometheus.io/download #官方安装地址 [root@prometheus_servers_131 ~]# wget https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz 3.解压软件包 [root@prometheus_servers_131 ~]# tar xf prometheus-2.53.3.linux-amd64.tar.gz -C /zy/app/ 4.启动Prometheus [root@prometheus_servers_131 ~]# cd /zy/app/prometheus-2.53.3.linux-amd64/ && ./prometheus 5.通过浏览器访问9090端口 http://10.0.0.131:9090/ 6.编写启动脚本,使用systemctl管理Prometheus [root@prometheus_servers_131 ~]# cat /etc/systemd/system/prometheus-server.service [Unit] Description=Linux Prometheus Server Documentation=https://prometheus.io/docs/introduction/overview/ After=network.target [Service] Restart=on-failure ExecStart=/zy/app/prometheus-2.53.3.linux-amd64/prometheus --config.file=/zy/app/prometheus-2.53.3.linux-amd64/prometheus.yml --web.enable-lifecycle LimitNOFILE=65535 [Install] WantedBy=multi-user.target 7.重新加载并开机自启Prometheus [root@prometheus_servers_131 ~]# systemctl daemon-reload [root@prometheus_servers_131 ~]# systemctl enable --now prometheus-server 8.验证9090端口是否监听 [root@prometheus_servers_131 ~]# ss -ntl 9. 使用API请求重载(要求启动服务时开启"--web.enable-lifecycle "参数) [root@prometheus_servers_131 ~]# curl -X POST http://10.0.0.131:9090/-/reload3.prometheus server监控服务实战1.监控node-exporter1.下载node-exporter,注:以下操作均为所有节点需要操作 官方地址:https://prometheus.io/download/#node_exporter [root@prometheus_nodes_141 ~]# wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz 2.创建工作目录 [root@prometheus_nodes_141 ~]# mkdir -pv /zy/{app,data,logs} 3.解压软件包 [root@prometheus_nodes_141 ~]# tar xf node_exporter-1.8.2.linux-amd64.tar.gz -C /zy/app/ 4.启动服务node_exporter [root@prometheus_nodes_141 ~]# cd /zy/app/node_exporter-1.8.2.linux-amd64/ && ./node_exporter 5.编写启动脚本,使用systemctl管理node_exporter [root@prometheus_nodes_141 ~]# cat /etc/systemd/system/node-exporter.service [Unit] Description=Linux Node Exporter Documentation=https://prometheus.io/docs/introduction/overview/ After=network.target [Service] ExecStart=/zy/app/node_exporter-1.8.2.linux-amd64/node_exporter [Install] WantedBy=multi-user.target 6.将服务设置为开机自启动 [root@prometheus_nodes_141 ~]# systemctl daemon-reload [root@prometheus_nodes_141 ~]# systemctl enable --now node-exporter.service2.Prometheus配置监控node-exporter1.修改Prometheus配置文件 [root@prometheus_servers_131 ~]# vim /zy/app/prometheus-2.53.3.linux-amd64/prometheus.yml ... global: # prometheus server采集数据的间隔时间 scrape_interval: 3s ... scrape_configs: ... # 指定任务的名称 - job_name: "node-exporter" # 指定静态配置 static_configs: # - targets: ["10.0.0.141:9100","10.0.0.142:9100"] - targets: - "10.0.0.141:9100" - "10.0.0.142:9100" - "10.0.0.143:9100" 2. 重新加载配置文件,也可以直接重启服务 [root@prometheus_servers_131 ~]# curl -X POST http://10.0.0.131:9090/-/reload [root@prometheus_servers_131 ~]# systemctl restart prometheus-server 3.访问服务端9090端口3.Prom QL语句prometheus监控中采集过来的数据统一称为Metrics数据,其并不是代表具体的数据格式,而是一种统计度量计算单位。 当我们需要为某个系统或者某个服务做监控是,就需要使用到metrics。 prometheus支持的metrics包括但不限于以下几种数据类型: guage: 最简单的度量指标,只是一个简单的返回值,或者叫瞬时状态。 比如说统计硬盘,内存等使用情况。 couter: 就是一个计数器,从数据量0开始累积计算,在理想情况下,只能是永远的增长,不会降低(有特殊情况,比如粉丝量)。 比如统计1小时,1天,1周,1一个月的用户访问量,这就是一个累加的操作。 histograms: 是统计数据的分布情况,比如最小值,最大值,中间值,中位数等,代表的是一种近似百分比估算数值。 通过histograms可以分别统计处在一个时间段(1s,2s,5s,10s)内nginx访问用户的响应时间。 summary: summary是histograms的扩展类型,主要弥补histograms不足。PromQL初体验 1.查看某个特定的key node_cpu_seconds_total 2.查看某个节点的指标 node_cpu_seconds_total{instance="10.0.0.141:9100"} 3.查看某个节点的某刻CPU的某种状态 node_cpu_seconds_total{instance="10.0.0.141:9100",cpu="0",mode="idle"} 4.查询最近10s内某个节点CPU的某种状态时间 node_cpu_seconds_total{instance="10.0.0.141:9100",cpu="0",mode="idle"}[10s] 5.统计1分钟内,使用标签过滤器查看"10.0.0.142:9100"节点的第0颗CPU,非空闲状态使用的总时间 node_cpu_seconds_total{mode!="idle",cpu="0", instance="10.0.0.142:9100"}[1m] 6.统计1分钟内,使用标签过滤器查看"10.0.0.142:9100"节点的第0颗CPU,mode名称以字母"i"开头的所有CPU核心。 node_cpu_seconds_total{mode=~"i.*",cpu="0", instance="10.0.0.142:9100"}[1m]4.Prometheus常用的函数1.increase increase函数: 用来针对counter数据类型,截取其中一段时间总的增量。 举个例子: increase(node_cpu_seconds_total{mode="idle",cpu="0", instance="10.0.0.42:9100"}[1m]) 统计1分钟内,使用标签过滤器查看"10.0.0.42:9100"节点的第0颗CPU,空闲状态使用的总时间增量。 2. sum sum函数: 加和的作用。 举个例子: sum(increase(node_cpu_seconds_total{mode="idle",cpu="0"}[1m])) 统计1分钟内,使用标签过滤器查看所有节点的第0颗CPU,空闲状态使用的总时间增量,并将返回结果累加。 3.by by函数: 将数据进行分组,类似于MySQL的"GROUP BY"。 举个例子: sum(increase(node_cpu_seconds_total{mode="idle",cpu="0"}[1m])) by (instance) 统计1分钟内,使用标签过滤器查看第0颗CPU空闲状态,并将结果进行累加,基于instance进行分组。 4.rate rate函数: 它的功能是按照设置的时间段,取counter在这个时间段中平均每秒的增量。 举个例子: rate(node_cpu_seconds_total{mode="idle",cpu="0", instance="10.0.0.42:9100"}[1m]) 统计1分钟内,使用标签过滤器查看"10.0.0.42:9100"节点的第0颗CPU,空闲状态使用的每秒的增量。 5.topk topk函数: 取前几位的最高值,实际使用的时候一般会用该函数进行瞬时报警,而不是为了观察曲线图。 举个例子: topk(3, rate(node_cpu_seconds_total{mode="idle",cpu="0"}[1m])) 统计1分钟内,使用标签过滤器查看第0颗CPU,所有状态使用的每秒的增量,只查看前3个节点。 6.count count函数: 把数值符合条件的,输出数目进行累加加和,一般用它进行一些某户的监控判断。 比如说企业中有100台服务器,如果只有10台服务器CPU使用率高于80%时候是不需要报警的,但是数量操作70台时就需要报警了。 举个例子: count(oldboyedu_tcp_wait_conn > 500): 假设oldboyedu_tcp_wait_conn是咱们自定义的KEY。 若TCP等待数量大于500的机器数量就判断条件为真。 count(rate(node_cpu_seconds_total{cpu="0",mode="idle"}[1m])) 对统计的结果进行计数。 7.其他函数: 推荐阅读: https://prometheus.io/docs/prometheus/latest/querying/functions/4.使用grafana展示数据grafana简介 grafana是一个图形化展示工具,可以直接连接prometheus server,支持基于PromQL语法进行数据查询。 下载地址: https://grafana.com/grafana/download1.下载grafana [root@grafana71 ~]# yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-11.4.0-1.x86_64.rpm 2. 启动grafana [root@grafana71 ~]# systemctl enable --now grafana-server1。访问grafana的WebUI2.配置grafana的数据源为prometheus3.保存测试成功4.部署grafana并导入node-exporter模板5. grafana官网查询dashboard模板idhttps://grafana.com/grafana/dashboards6.选择相应的模板ID18607.选择应用模板的数据源8.查看导入后的模板ID的dashboard
2025年06月16日
4 阅读
1 评论
1 点赞
1
2
3
4