首页 文章 精选 留言 我的

精选列表

搜索[Vibe Coding 平台构建],共10007篇文章
优秀的个人博客,低调大师

构建高大上的黑盒监控平台

概述 在监控体系里面,通常我们把监控分为:白盒监控和黑盒监控: 黑盒监控:主要关注的现象,一般都是正在发生的东西,例如出现一个告警,业务接口不正常,那么这种监控就是站在用户的角度能看到的监控,重点在于能对正在发生的故障进行告警。 白盒监控:主要关注的是原因,也就是系统内部暴露的一些指标,例如redis的info中显示redis slave down,这个就是redis info显示的一个内部的指标,重点在于原因,可能是在黑盒监控中看到redis down,而查看内部信息的时候,显示redis port is refused connection。 白盒监控:有很多种,有中间件,有存储,有web服务器例如redis可以使用info暴露内部的指标信息;例如mysql可以使用show variables暴露内部指标信息;例如nginx可以使用nginx_status来暴露内部信息,系统业务指标可以通过埋点或者命令进行采集。 Blackbox Exporter 在前面的知识中,我们介绍Prometheus下如何进行白盒监控:我们监控主机的资源用量、容器的运行状态、数据库中间件的运行数据,通过采集相关指标来预测我们的服务健康状态。在黑盒监控方面。Blackbox Exporter是Prometheus社区提供的官方黑盒监控解决方案,其允许用户通过:HTTP、HTTPS、DNS、TCP以及ICMP的方式对网络进行探测。 Blackbox_exporter 应用场景 HTTP 测试定义 Request Header 信息判断 Http status / Http Respones Header / Http Body 内容 TCP 测试业务组件端口状态监听应用层协议定义与监听 ICMP 测试主机探活机制 POST 测试接口联通性 SSL 证书过期时间 结合grafana 生成的相关模板: 1、首先看下我们这边的相关图表,门户多项指标与ssl监控: 2、线路监控: 3、接口状态监控: Blackbox Exporter 部署: 1、安装Exporter: [root@cinder1 src]# wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.16.0/blackbox_exporter-0.16.0.linux-amd64.tar.gz [root@cinder1 src]#tar -zxvf blackbox_exporter-0.16.0.linux-amd64.tar.gz -C /usr/local [root@cinder1 src]#mv /usr/local/blackbox_exporter-0.16.0.linux-amd64 /usr/local/blackbox_exporter 2、添加到启动项: [root@cinder1 src]# cat /etc/systemd/system/blackbox_exporter.service [Unit] Description=blackbox_exporter After=network.target [Service] WorkingDirectory=/usr/local/blackbox ExecStart=/usr/local/blackbox/blackbox_exporter \ --config.file=/usr/local/blackbox/blackbox.yml [Install] WantedBy=multi-user.target 3、检测是否正常启动: [root@cinder1 src]# ss -tunlp|grep 9115 tcp LISTEN 0 128 :::9115 :::* users:(("blackbox_export",pid=2517722,fd=3)) icmp监控 通过icmp 这个指标的采集,我们可以确认到对方的线路是否有问题。这个也是监控里面比较重要的一个环节。我们要了解全国各地到我们机房的线路有哪条有问题我们总结了两种方案:1、全国各地各节点ping 和访问数据采集。这种类似听云运营商有提供这类服务,但是要花钱。2、我现在用的方法就是:找各地测试ping 的节点,我们从机房主动ping 看是否到哪个线路有故障,下面我们开始。 一、prometheus 添加相关监控,Blackbox 使用默认配置启动即可: - job_name: "icmp_ping" metrics_path: /probe params: module: [icmp] # 使用icmp模块 file_sd_configs: - refresh_interval: 10s files: - "/home/prometheus/conf/ping_status*.yml" #具体的配置文件 relabel_configs: - source_labels: [__address__] regex: (.*)(:80)? target_label: __param_target replacement: ${1} - source_labels: [__param_target] target_label: instance - source_labels: [__param_target] regex: (.*) target_label: ping replacement: ${1} - source_labels: [] regex: .* target_label: __address__ replacement: 192.168.1.14:9115 二、相关ping节点配置: [root@cinder1 conf]# cat ping_status.yml - targets: ['220.181.38.150','14.215.177.39','180.101.49.12','14.215.177.39','180.101.49.11','14.215.177.38','14.215.177.38'] labels: group: '一线城市-电信网络监控' - targets: ['112.80.248.75','163.177.151.109','61.135.169.125','163.177.151.110','180.101.49.11','61.135.169.121','180.101.49.11'] labels: group: '一线城市-联通网络监控' - targets: ['183.232.231.172','36.152.44.95','182.61.200.6','36.152.44.96','220.181.38.149'] labels: group: '一线城市-移动网络监控' #这些数据是从全国各地ping 网站进行采集,大家可以从那些网站获取 三、添加grafana 这个grafana是自己定义的,看到网上没有就自己定义了一个。大家可以从github上下载,再看看效果: http 相关指标监控: 一、prometheus 配置http_get访问: - job_name: "blackbox" metrics_path: /probe params: module: [http_2xx] #使用http模块 file_sd_configs: - refresh_interval: 1m files: - "/home/prometheus/conf/blackbox*.yml" relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 192.168.1.14:9115 二、相关配置文件,类似举例如下: [root@cinder1 conf]# cat /home/prometheus/conf/blackbox-dis.yml - targets: - https://www.zhibo8.cc - https://www.baidu.com #配置相关URL 三、添加grafana模板: 可以选择模板的9965模板,这个模板我们也看到前面的,提供了相关的ssl 过期检测。 接口get请求检测 一、prometheus 配置,其实跟我们之前的配置一样,我们直接看配置文件: - job_name: "check_get" metrics_path: /probe params: module: [http_2xx] # Look for a HTTP 200 response. file_sd_configs: - refresh_interval: 1m files: - "/home/prometheus/conf/service_get.yml" relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 192.168.1.14:9115 二、相关接口配置参考: [root@cinder1 conf]# cat service_get.yml - targets: - http://10.10.1.123:10000/pmkb/atc_tcbi - http://10.10.1.123:10000/pmkb/get_ship_lock_count - http://10.10.1.123:10000/pmkb/get_terminal_count_by_city - http://10.10.1.123:10000/pmkb/get_terminal_monitor?industry=1 - http://10.10.1.123:10000/pmkb/get_terminal_comparison?industry=1 - http://10.10.1.123:10000/pmkb/get_terminal_city_count_industry?industry=1 - http://10.10.1.123:10000/pmkb/industry_stat?industry=1 - http://10.10.1.123:10000/pmkb/get_company_car_count?industry=1 - http://10.10.1.123:10000/pmkb/get_terminal_month_countbyi?industry=1 labels: group: 'service' 三、grafana 和前面一样自己订制的,可以从github上下载。 接口post 请求状态检测: 一、这里首先我们要改一下post 相关接口的blackbox.yml配置,我们自己定义一个模块: [root@cinder1 blackbox]# cat blackbox.yml modules: http_2xx: prober: http http_post_2xx: #这个模块名称可以自己定义 prober: http http: method: POST headers: Content-Type: application/json #添加头部 body: '{"username":"admin","password":"123456"}' #发送的相关数据,这里我们以登录接口为例 二、添加到prometheus: - job_name: "check_service" metrics_path: /probe params: module: [http_post_2xx] # 这里要对应配置文件里,定义的模块 file_sd_configs: - refresh_interval: 1m files: - "/home/prometheus/conf/service_post.yml" relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 192.168.1.14:9115 三、相关配置: [root@cinder1 conf]# cat service_post.yml - targets: - http://10.2.4.103:5000/devops/api/v1.0/login labels: group: 'service' 四、添加grafana相关配置,这个也是自己定义的,可以从github上下载。 tcp端口状态检测: 个人理解的是这个跟telnet差不多都是检测端口是否在线 一、prometheus 配置: - job_name: 'port_status' metrics_path: /probe params: module: [tcp_connect] #使用tcp模块 static_configs: - targets: ['10.10.1.35:8068','10.10.1.35:8069'] #对应主机接口 labels: instance: 'port_status' group: 'tcp' relabel_configs: - source_labels: [__address__] target_label: __param_target - target_label: __address__ replacement: 192.168.1.14:9115 二、图表: 图表可以集成到前面的grafana 9965模板: 告警规则定义: 一、业务正常性:icmp、tcp、http、post 监测是否正常可以观察probe_success 这一指标probe_success == 0 ##联通性异常probe_success == 1 ##联通性正常告警也是判断这个指标是否等于0,如等于0 则触发异常报警 二、通过http模块我们可以获取证书的过期时间,可以根据过期时间添加相关告警 probe_ssl_earliest_cert_expiry :可以查询证书到期时间。 #经过单位转换我们可以得到一下,按天来计算:(probe_ssl_earliest_cert_expiry - time())/86400 三、所以我们结合上面的配置可以定制如下告警规则 [root@cinder1 rules]# cat blackbox.yml groups: - name: blackbox_network_stats rules: - alert: blackbox_network_stats expr: probe_success == 0 for: 1m labels: severity: critical annotations: summary: "接口/主机/端口 {{ $labels.instance }} 无法联通" description: "请尽快检测" ##ssl检测 [root@cinder1 rules]# cat ssl.yml groups: - name: check_ssl_status rules: - alert: "ssl证书过期警告" expr: (probe_ssl_earliest_cert_expiry - time())/86400 <30 for: 1h labels: severity: warn annotations: description: '域名{{$labels.instance}}的证书还有{{ printf "%.1f" $value }}天就过期了,请尽快更新证书' summary: "ssl证书过期警告" 四、重启完成之后我们可以登录web界面查看下: 五、我们发现有个接口已经存在问题,这个时候我们也收到了一条相应的微信告警: 总结: 黑盒监控相较于白盒监控最大的不同在于黑盒监控是以故障为导向当故障发生时,黑盒监控能快速发现故障,所以我们监控时候以粒度比较细的,如端口、接口、线路等进行监控。通过Prometheus Blackbox Exporter可以快速实现和定制我们很多相关策略,大家可以按照上述流程测试一下。

优秀的个人博客,低调大师

使用openstack构建私有云计算平台

一、系统 ubuntu 10.04 Desktop 机器ip:10.1.29.15 二、nova的安装 1.安装所用的信息服务器:Rabbitmq sudo apt-get install rabbitmq-server 2.安装nova 1)nova包安装 sudo apt-get install python-software-properties sudo add-apt-repository ppa:nova-core/trunk sudo apt-get update 注意:如果sudo add-apt-repository ppa:nova-core/trunk不行,换成sudo add-apt-repository ppa:nova-core/release 2)nova依赖包安装 sudo apt-get install python-nova sudo apt-get install python-greenlet python-mysqldb python-nova nova-common nova-doc nova-api nova-network nova-objectstore nova-scheduler nova-compute euca2ools unzip 3)配置nova(/etc/nova/nova.conf) 这个文件是安装nova后自动生成的,如果没有,估计是系统问题。 vim /etc/nova/nova.conf 机器上内容如下: daemonize=1 dhcpbridge_flagfile=/etc/nova/nova.conf dhcpbridge=/usr/bin/nova-dhcpbridge loggdir=/var/log/nova state_path=/var/lib/nova verbose sql_connection=mysql://root:nova@10.1.29.15/nova s3_host=10.1.29.15 rabbit_host=10.1.29.15 ec2_host=10.1.29.15 verbose ec2_url=http://10.1.29.15:8773/services/Cloud network_manager=nova.network.manager.VlanManager fixed_range=10.0.0.0/12 network_size=8 注意:10.1.29.15是我电脑ip,替换成你自己的ip即可 4)创建群组并授权 addgroup nova chown -R root:nova /etc/nova chmod 644 /etc/nova/nova.conf 3.安装mysql 1)绕过所有安装提示,加快安装速度 bash MYSQL_PASS=nova cat mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS mysql-server-5.1 mysql-server/start_on_boot boolean true MYSQL_PRESEED 2)安装mysql apt-get install -y mysql-server 3)编辑/etc/mysql/my.cnf,绑定地址 sed -i s/127.0.0.1/0.0.0.0/g /etc/mysql/my.cnf service mysql restart 注:sed -i s/127.0.0.1/0.0.0.0/g /etc/mysql/my.cnf表示在行内全面用127.0.0.1代替0.0.0.0 4)mysql配置 创建nova数据库 mysql -uroot -p$MYSQL_PASS -e CREATE DATABASE nova; root用户为超级用户权限 mysql -uroot -p$MYSQL_PASS -e GRANT ALL PRIVILEGES ON *.* TO root@% WITH GRANT OPTION; 设置root用户密码 mysql -uroot -p$MYSQL_PASS -e SET PASSWORD FOR root@% = PASSWORD($MYSQL_PASS); 注意:mysql的root用户初始密码为空,在设置密码时候,最好自己设定一个密码来代替$MYSQL_PASS 4.网桥配置 vim /etc/network/interfaces 修改后内容如下: # The loopback network interface auto lo iface lo inet loopback # Networking for NOVA auto br100 iface br100 inet static address 10.1.29.15 netmask 255.0.0.0 network 10.0.0.0 broadcast 10.255.255.255 gateway 10.1.0.254 bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 59.108.119.3 注意:在官方配置介绍用的是DHCP,这里使用静态ip地址,根据实际情况,修改相应的address、netmask、network、broadcast、gateway、dns等。 最后,重启mysql:sudo /etc/init.d/networking restart 5.nova环境配置 /usr/bin/nova-manage db sync /usr/bin/nova-manage user admin dub /usr/bin/nova-manage project create dubproject dub /usr/bin/nova-manage network create 192.168.0.0/24 1 255 注意:数据名、用户名、项目名等都可以自己设定。 6.nova认证 mkdir –p /root/creds /usr/bin/python /usr/bin/nova-manage project zipfile $NOVA_PROJECT $NOVA_PROJECT_USER /root/creds/novacreds.zip unzip /root/creds/novacreds.zip -d /root/creds/ cat /root/creds/novarc >> ~/.bashrc source ~/.bashrc 注意:要在root下能建立目录,必须是root用户,可以用以下命令: sudo passwd root su root 输入密码,进入root用户 7.重启相关服务 /etc/init.d/libvirt-bin restart; service nova-network restart; service nova-compute restart; service nova-api restart; service nova-objectstore restart; service nova-scheduler restart 注意:/etc/init.d/libvirt-bin代替libirtd,ubuntu中没有libirtd 8.授权ping和ssh命令给VMS euca-authorize -P icmp -t -1:-1 default euca-authorize -P tcp -p 22 default (不能ping或ssh时候,使用以下命令) killall dnsmasq service nova-network restart chgrp kvm /dev/kvm chmod g+rwx /dev/kvm 配置防火墙 # iptables -t nat -A PREROUTING -d 169.254.169.254/32 -p tcp -m tcp dport 80 -j DNAT to-destination 10.1.29.15:8773 注意:10.1.29.15改成你自己机器的ip 8.安装后测试 1)查看mysql中services表数据 mysql -u$root-p$nova nova -e select * from services; 注意:root是用户名,nova是密码,用你自己设定的mysql用户名和密码即可。 2)获取image image=ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz wget http://smoser.brickies.net/ubuntu/ttylinux-uec/$image uec-publish-tarball $image mybucket 3)为ssh创建安全认证 euca-add-keypair mykey > mykey.priv chmod 0600 mykey.priv 4)查看镜像 euca-describe-images 5)运行 euca-run-instances $emi -k mykey -t m1.tiny 注意:$emi用实际的代替,如:ami-u5o8a5lg euca-describe-instances ssh -i mykey.priv root@10.1.29.15 euca-terminate-instances ami-u5o8a5lg-id 到此,nova的私有云就安装完毕 本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/archive/2011/11/24/2262016.html,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册