运维123 - 运维监控
type: channel
link: https://www.sddts.cn/index.php/category/Applications/
items: 庆祝夜莺监控 5 周年
items: monitorix - 单机版全能监控选手带WEB
items: 使用夜莺插件监控阿里云资源遇到告警不告问题
items: tianji监控服务器
items: 部署tianji实现网站访问统计
items: nagios容器时区不正确
items: 容器化部署夜莺监控v6.5.0
items: 升级夜莺监控从6.4.0到6.5.0
items: 从n9e版本v6 ga升级到6.4.0
items: 当wget遇到ipv6与ipv4

庆祝夜莺监控 5 周年
type: item
date: 2025-04-28T02:36:58+00:00
description: 1 感想伴随着数字化的发展，逐渐成为生产、生活等方方面面的底座支撑。就像国家电网在保障电力供应，运维保障数字稳定。运维的过程包括架构分析、业务部署、监控、备份、安全等方面，而监控既是保障业务运行的探针，也是伴随数字生命周期的哨兵。数字基础设施包括计算和通信，基于 TCP/IP 等协议协同工作。保障数字基础设施稳定运行的指标也是基于 TCP/IP协议等，涉及 CPU、MEM、DISK 等操作系统监控物理资源；数据库、中间件等应用监控等。夜莺监控系统拥有扎实的架构设计，包含丰富的监控插件，为运维保障数字基础设施稳定运行提供了重要工作支持。2 方案当前，我在进行的是物联网公司的运维监控工作，涉及测试、生产、学习等环境。因此，分别部署测试夜莺、生产夜莺、学习夜莺共三套夜莺监控系统，相互隔离，降低复杂度。另外，针对不同监控类型，也部署多套 nagios、uptime-kuma。最终，统一接入 FlashDuty 实现统一告警平台。图：整体监控方案每天起床第一件事，也是查看 FlashDuty 告警。每天上班第一件事就是打开 FlashDuty 查看是否有告警。图：办公电脑浏览器页面（包含 uptime-kuma6 套，nagios2 套，夜莺监控 3 套）每天下班第一件事也是打开 FlashDuty 查看是否有告警。下班途中，我会经常关注 FlashDuty 手机客户端以及飞书告警通知信息。夜莺系统已经伴随整个运维保障工作。工作过程中，我会有一台单独的笔记本电脑放在我在左手边，作为运维监控大屏以及告警信息通知。图：现场办公环境照片3 实践3.1 部署监控代理在一台主机中，部署 agent 并调整 config.toml 文件。将 categraf 文件夹打包，放到 123pan。开启 123pan 直链功能。实际部署中就可以直接刷命令了。部署 agent 之后，可以在夜莺监控平台“基础设施-机器列表”里打标签，也可以通过在 categraf 的config.toml中打标签。监控对象少的情况下，使用第一种方式方便一些。机器多得时候，使用后者直接在 categraf 配置文件打标签会方便一些。3.2 配置其他监控日常使用到的中间件包括 Nginx、Mongodb、MySQL 等。为了方便监控配置，使用飞书整理了一张表格，竖列是中间件的名称，横列是针对中间件的部署、配置、运行以及夜莺监控配置等内容。categraf 监控配置也十分清晰，只需要找到对应目录对应文件，参考配置方法并修改相关参数即可。图： 包含中间件部署夜莺监控内容的飞书表格3.3 定制监控仪表夜莺监控系统部署过程方便，默认内置大量仪表盘开箱即用。日常工作中，面对多项目，多主机等环境，进行了若干实践调整，主要包括：针对主机监控，标签使用“项目名称-服务名称-主机名称”。针对中间件监控，标签使用“项目-中间件类型-实例名称”。图：Host 监控仪表盘页面图：中间件 RabbitMQ 监控仪表盘页面3.4 统一告警接收将部署各种监控的告警，包括 nagios、uptime-kuma、夜莺等纷纷接入 FlashDuty，实现统一告警平台。图：FlashDuty 集成中心页面4 实战4.1 数据支撑判断在物联网系统中，数十万设备通过连接服务接入平台。平台中的 JAVA 程序有内存泄露，通过剩余内存判断是否需要紧急重启。不着急的话就尽量在凌晨重启（可以下班了。可以睡觉了。）。图：长连接服务器集群监控仪表盘页面4.2 监控避免失误去年出了档子事儿，一大早7 点起来满手机全是告警。稳了稳神儿，发现原来是云平台没有续费。说来也巧，接手这一摊子时，费用告警不在我这里，包括手机短信和邮箱统统不在。而且，客户经理正在休假。好家伙，通过支付宝快速充值后，恢复了足足 4 个小时，好在集群和服务最终恢复了。亡羊补牢为时不晚，除了修改云平台费用相关告警通知外，使用夜莺监控通过云平台 SDK 设置费用告警。图：剩余金额监控仪表盘另外，举一反三，把第三方短信剩余条数也做了监控。图：剩余短信监控仪表盘5 祝愿数字化已经进入到了人工智能时代，数字基础设施与电力基础设施一样越来越重要。保障数字基础设施稳定运行的重要支撑力量落在了夜莺身上。祝愿夜莺监控越来越好。祝愿夜莺的兄弟们工作顺利，身体健康。愿与夜莺的兄弟们一起努力，共筑数字基础设施稳定运行保障防线。

monitorix - 单机版全能监控选手带WEB
type: item
date: 2024-06-14T06:43:00+00:00
description: 要部署和配置 Monitorix 来监控 CPU、硬盘、内存、GPU 等资源的使用情况，并设置邮件告警，请按以下步骤操作：1. 安装 Monitorix在 Ubuntu 上安装更新软件包列表：sudo apt update安装 Monitorix：sudo apt install monitorix在 CentOS/RHEL 上安装安装 EPEL 仓库：sudo yum install epel-release安装 Monitorix：sudo yum install monitorix2. 配置 Monitorix打开 Monitorix 配置文件进行编辑：sudo nano /etc/monitorix/monitorix.conf配置系统资源监控部分：# 确保以下部分已启用 (值为 'Y') <graph_enable> ... cpu = y disk = y memory = y gpu = y ... </graph_enable>配置邮件告警：<mail> enabled = y from = monitorix@example.com to = alert@example.com ... # 配置告警条件 <alerts> enabled = y ... <cpu> alert = 90 ... </cpu> <disk> alert = 90 ... </disk> <memory> alert = 90 ... </memory> <gpu> alert = 90 ... </gpu> </alerts> </mail>3. 配置邮件传输代理（MTA）Monitorix 需要一个邮件传输代理来发送告警邮件。你可以使用 Postfix 或 sendmail 等。安装并配置 Postfix安装 Postfix：sudo apt install postfix配置 Postfix：sudo dpkg-reconfigure postfix选择 "Internet Site" 并输入你的域名。编辑 Postfix 配置文件：sudo nano /etc/postfix/main.cf确保以下行已正确配置：myhostname = example.com mydestination = example.com, localhost.com, , localhost relayhost = 重启 Postfix：sudo systemctl restart postfix4. 启动和测试 Monitorix启动 Monitorix 服务：sudo systemctl start monitorix确保 Monitorix 服务在系统启动时自动启动：sudo systemctl enable monitorix打开浏览器，访问 Monitorix 的 Web 界面：http://your_server_ip:8080/monitorix测试邮件告警是否工作：手动调整告警阈值以触发告警，或使用命令行工具（如 stress）来模拟高负载情况。示例：使用 stress 模拟 CPU 高负载安装 stress 工具：sudo apt install stress运行 stress 以模拟 CPU 高负载：stress --cpu 8 --timeout 60Monitorix 配置完成后，你应该能够通过 Web 界面监控系统资源使用情况，并在达到设定阈值时收到邮件告警。是的，Monitorix 支持配置使用 SMTP TLS 发送邮件。以下是如何在 Monitorix 配置文件中设置 SMTP TLS 的步骤：1. 配置 Monitorix 使用 SMTP TLS编辑 Monitorix 配置文件：sudo nano /etc/monitorix/monitorix.conf找到邮件配置部分，并进行如下设置：<mail> enabled = y from = monitorix@example.com to = alert@example.com smtp_server = smtp.example.com smtp_port = 587 smtp_user = your_username smtp_password = your_password smtp_tls = y ... </mail>smtp_server: 你的 SMTP 服务器地址（例如：smtp.gmail.com）smtp_port: 你的 SMTP 服务器端口（通常为 587 用于 TLS）smtp_user: 你的 SMTP 账户用户名smtp_password: 你的 SMTP 账户密码smtp_tls: 是否启用 TLS（设置为 y）2. 重启 Mo…

使用夜莺插件监控阿里云资源遇到告警不告问题
type: item
date: 2024-04-30T08:32:00+00:00
description: 哥们发来消息，最近使用夜莺阿里云插件对云服务，包括ECS、RDS等进行了监控，但是设置告警的时候没有告警产生。首先，通过添加一个process_total的本地监控指标设置了一个告警，测试是否可以告警，以此检查alarm功能是正常的。然后，哥们说看下categraf的配置。一行一行看了下，发现了一个delay指标。这个指标过去还真没有遇到过。读了几遍官方文档的介绍，说真，理解水平有限，还是无法准确理解。但是，有一点是了解到了。与传统得categraf采集host指标不一样，阿里云插件工作的时候采集到的阿里云资源指标可能不是实时的，而这个地方的2m就是2m。哈哈，[scode type="blue"]猜测，categraf使用agent拉取阿里云的时候，因为阿里云的监控数据不是实时的，所以会设置delay参数，查询10分钟前的数据。对，如此一来，监控告警失效以及时序指标查询出不来 两个问题就对上了。[/scode]然后，哥们重新设置了采集参数，将delay设置成2m，把告警规则频率设置成了300s。观察中...观察到了60s一次的数据采集。监控指标出现了一批。看来这个delay参数以及告警策略生效参数有点搞头。删除了测试告警设置。修改了监控指标，告警恢复了一批。然后就是全部恢复了。最终，设置delay 2m，采集period 60s，告警规则执行频率60s，持续时长120s。有时间把老秦的视频再看一遍，进一步学习夜莺工作的原理。

tianji监控服务器
type: item
date: 2023-12-29T07:45:00+00:00
description: tianji对于服务器的监控短小够用，只需要在后台，点击添加Server后会弹出执行命令不过这个地方要注意，这段curl+bash指令会自动安装系统服务，但是上报接口就是当前访问管理后台的地址，除了把协议变成了http。所以，如果tianji系统部署后设置了只允许https访问，那么就要设置bt面板同样允许http访问或者修改sed -i 's:http:https:g' /lib/systemd/system/tianji-reporter.service systemctl daemon-reload systemctl restart tianji-reporter 最终效果是这样的

部署tianji实现网站访问统计
type: item
date: 2023-12-29T07:25:00+00:00
description: tianji是一个借鉴uptime-kuma实现的网站服务器、网站服务的监控，尤其是后者，对于访问来源、页面、次数有统计，对于站长了解当前网站访问情况有帮助。部署tianjiversion: '3' services: tianji: image: moonrailgun/tianji # ports: # - "12345:12345" environment: DATABASE_URL: postgresql://tianji:tianji@postgres:5432/tianji JWT_SECRET: xxx ALLOW_REGISTER: "false" ALLOW_OPENAPI: "true" SERVER_URL: depends_on: - postgres restart: always networks: tianji-network: ipv4_address: 172.19.3.31 postgres: image: postgres:15.4-alpine environment: POSTGRES_DB: tianji POSTGRES_USER: tianji POSTGRES_PASSWORD: tianji volumes: - ./data/postgres:/var/lib/postgresql/data restart: always healthcheck: test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] interval: 5s timeout: 5s retries: 5 networks: tianji-network: ipv4_address: 172.19.3.51 networks: tianji-network: driver: bridge ipam: config: - subnet: 172.19.3.0/24 在后台，新建网站，会得到一段code，实际是一段script调用脚本，放到html文件中就可以了。为了简单，我们也可以使用nginx的http_sub_module模块实现自动加入统计代码。#PROXY-START/ location ^~ / { proxy_pass http://172.18.7.31:8181; 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 REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; proxy_http_version 1.1; # proxy_hide_header Upgrade; add_header X-Cache $upstream_cache_status; #Set Nginx Cache set $static_fileC8idh6S8 0; if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" ) { set $static_fileC8idh6S8 1; expires 1m; } if ( $static_fileC8idh6S8 = 0 ) { add_header Cache-Control no-cache; } sub_filter ' ' ' '; sub_filter_once on; # 确保替换只发生一次 sub_filter_types text/html; # 确保只处理HTML文件 } #PROXY-END/

nagios容器时区不正确
type: item
date: 2023-12-12T04:45:00+00:00
description: nagios是一款不错的服务探测软件，将本地安装版本的nagios移植到容器版并部署在公有云服务器后，出现了时区不正确的现象。docker-compose文件内容如下：version: '3' services: nagios: #image: harbor.test.stesh.cn/jasonrivers/nagios:4.4.8 image: harbor.test.stesh.cn/jasonrivers/nagios:20230927 container_name: nagios ports: - "8080:80" # 映射到宿主机的端口 #- "5666:5666" # 映射到宿主机的端口 environment: - TZ="Asia/Shanghai" - NAGIOSADMIN_USER=nagiosadmin # Nagios 管理员用户名 - NAGIOSADMIN_PASS=Lab@1234 # Nagios 管理员密码 volumes: - /etc/localtime:/etc/localtime - ./config:/opt/nagios/etc # 配置文件目录 - ./var:/opt/nagios/var - ./run:/var/run #- ./data:/opt/nagios/var # 数据目录 #- ./plugins:/opt/Custom-Nagios-Plugins # 自定义插件目录 - ./libexec:/opt/nagios/libexec #- ./apacheconfig/nagios.conf:/etc/apache2/sites-available/nagios.conf restart: always networks: nagios-network: ipv4_address: 172.18.4.2 entrypoint: - sh - -euc - | rm -rf /opt/nagios/var/* chmod 777 /opt/nagios/var rm -rvf /var/run/* chmod 777 /var/run mkdir -p /var/run/apache2 /usr/local/bin/start_nagios networks: nagios-network: driver: bridge ipam: config: - subnet: 172.18.4.0/24 name: nagios-network根据gpt介绍，nagios会使用当前系统的时间和时区进行调用，修改当前系统时区的方式是：sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime sudo systemctl restart nagios但是容器方式可能有特殊，会使用TZ环境变量。可是，当前的docker-compose.yml文件中明明是有TZ="Asia/Shanghai"的配置的，难道是引号的问题。删掉引号，docker-compose restart后发现还是不行，且容器内的TZ值还是有引号。难道是restart不生效，直接：docker-compose down --remove-orphans docker-compose up -d发现已经可以了。总结：稳妥起见，实现容器时区正确配置的方法是同时使用TZ=Asia/Shanghai和/etc/localtime文件映射。修改docker-compose.yml中的环境变量一般无需引号。且修改后，需要彻底停止容器后再次启动。

容器化部署夜莺监控v6.5.0
type: item
date: 2023-11-29T03:17:00+00:00
description: 一、目标搭建夜莺6.5.0系统部署categraf采集脚本实现云主机数据上报增加监控分类，包括linux云主机、redis、mysql、mongodb、opentsdb等增加告警配置二、搭建夜莺6.5.0系统准备1台云主机，2C4G50GB做好系统参数优化登录服务器192.168.124.145cd /opt/ mkdir n9e cd n9e wget https://download.flashcat.cloud/n9e-v6.5.0-linux-amd64.tar.gz tar xzvf n9e-v6.5.0-linux-amd64.tar.gz cd docker cd compose-bridge docker-compose up -d然后记得删除/opt/n9e/initsql文件夹rm -rvf /opt/n9e/initsql三、部署categraf采集脚本实现云主机数据上报mkdir -p /opt/categraf cd /opt/categraf wget https://download.flashcat.cloud/categraf-v0.3.39-linux-amd64.tar.gz tar xzvf categraf-v0.3.39-linux-amd64.tar.gz cat <<'EOF'> /opt/categraf/conf/config.toml [global] # whetherr print configs print_configs = false # add label(agent_hostname) to series # "" -> auto detect hostname # "xx" -> use specified string xx # "$hostname" -> auto detect hostname # "$ip" -> auto detect ip # "$hostname-$ip" -> auto detect hostname and ip to replace the vars hostname = "$hostname-$ip" # will not add label(agent_hostname) if true omit_hostname = false # s | ms precision = "ms" # global collect interval interval = 15 # input provider settings; optional: local / http providers = ["local"] disable_usage_report = true # [global.labels] # region = "shanghai" # env = "localhost" [writer_opt] batch = 1000 chan_size = 1000000 writers url = "http://192.168.124.145:17000/prometheus/v1/write" # Basic auth username basic_auth_user = "" # Basic auth password basic_auth_pass = "" ## Optional headers # headers = ["X-From", "categraf", "X-Xyz", "abc"] # timeout settings, unit: ms timeout = 5000 dial_timeout = 2500 max_idle_conns_per_host = 100 [http] enable = false address = ":9100" print_access = false run_mode = "release" [ibex] enable = false ## ibex flush interval interval = "1000ms" ## n9e ibex server rpc address Servers = ["192.168.124.145:20090"] ## temp script dir metaDir = "./meta" [http_provider] # HttpRemoteProvider插件，通过Http请求的方式获取Categraf的配置 # 通过设置global中的provider为HttpRemoteProvider启用 # example request: GET /categraf/configs?agent=categraf&host…

升级夜莺监控从6.4.0到6.5.0
type: item
date: 2023-11-29T01:20:00+00:00
description: 备份cd /opt/ mkdir bak.20231129 rsync -avzP n9e /opt/bak.20231129/ rsync -avzP integrations /opt/bak.20231129/ mkdir -p /opt/tmp下载解压cd /opt/tmp wget https://download.flashcat.cloud/n9e-v6.5.0-linux-amd64.tar.gz tar xzvf n9e-v6.5.0-linux-amd64.tar.gz rsync -avzP n9e /opt/ rsync -avzP integrations /opt/重启服务重新启动服务 systemctl status n9e systemctl restart n9e systemctl status n9e查看

从n9e版本v6 ga升级到6.4.0
type: item
date: 2023-11-06T04:56:00+00:00
description: 打开页面，查找升级方法升级方法v6 小版本升级到 下载 页面，下载安装包，直接替换原来的二进制 和 integration 目录，重启进程即可下载https://flashcat.cloud/download/nightingale/cd /opt/ mkdir bak.20231106 rsync -avzP n9e /opt/bak.20231106/ rsync -avzP integrations /opt/bak.20231106/mkdir -p /opt/tmp cd /opt/tmp wget https://download.flashcat.cloud/n9e-v6.4.0-linux-amd64.tar.gz tar xzvf n9e-v6.4.0-linux-amd64.tar.gz rsync -avzP n9e /opt/ rsync -avzP integrations /opt/ 重新启动服务systemctl status n9e systemctl restart n9e systemctl status n9e 检查升级是否成功

当wget遇到ipv6与ipv4
type: item
date: 2023-11-02T03:01:00+00:00
description: wget https://enterprise.proxmox.com/iso/proxmox-ve_7.4-1.iso