内容
活动
关注

Linux监控之夜莺

简介: Linux监控之夜莺

安装前置依赖

  • mysql
  • redis

二进制方式部署(推荐)

在网站现在最新安装包https://flashcat.cloud/download/nightingale/

# 下载 wget https://download.flashcat.cloud/n9e-v6.3.1-linux-amd64.tar.gz # 创建个 n9e 的目录,后面把 n9e 相关的文件解压到这里 mkdir -p /opt/n9e mv n9e-v6.3.1-linux-amd64.tar.gz n9e cd n9e # 解压 tar -zxvf n9e-v6.3.1-linux-amd64.tar.gz # 解压缩之后,可以看到 n9e.sql 是建表语句,导入数据库 mysql -uroot -p1234 < n9e.sql # 启动 n9e,先使用 nohup 简单测试,如果需要 systemd 托管,请自行准备 service 文件 nohup ./n9e &> n9e.log & # 检查 n9e.log 是否有异常日志,检查端口是否在监听,正常应该监听在 17000 ss -tlnp|grep 17000 

如果日志和端口都没啥问题,恭喜,你完成了夜莺的安装!通过浏览器访问这个机器的 17000,理论上就可以看到登录页面了。

访问http://ip:17000

image-20231018113109193

默认账号密码:root root.2020

image-20231018113202192

夜莺日志位置

n9e/n9e.log

安装 VictoriaMetrics

VictoriaMetrics 下载地址在 github releases 上,作为技术人员,我想,你应该可以下载的到。我的环境是 x86_64 的 linux,所以选择下载:victoria-metrics-linux-amd64-v1.93.6.tar.gz (撰写这个文档的时候,最新版本是 v1.93.6)。

VictoriaMetrics 解压缩之后,里边就一个二进制:

mkdir victoria cd victoria wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.93.6/victoria-metrics-linux-amd64-v1.93.6.tar.gz tar -zxvf victoria-metrics-linux-amd64-v1.93.6.tar.gz 

查看解压后文件

# ll total 32476 -rw-r--r-- 1 root root 11579644 Oct 18 11:44 victoria-metrics-linux-amd64-v1.93.6.tar.gz -rwxr-xr-x 1 1000 1000 21669672 Oct 17 05:45 victoria-metrics-prod 

启动

nohup ./victoria-metrics-prod &> stdout.log & 

查看端口8428

# ss -tlnp|grep 8428 LISTEN 0 32768 *:8428 *:* users:(("victoria-metric",pid=726,fd=7)) 

访问接口http://ip:8428

image-20231018114759187

如上,就表示 VictoriaMetrics 安装成功,当然,我仅仅使用 nohup 简单启动的,如果生产环境,建议使用 systemd 托管并设置开机自启动。

打通夜莺和 VictoriaMetrics

分两个步骤,首先就类似上面配置 Prometheus 数据源那种方式,在夜莺里配置一个 VictoriaMetrics 的数据源,比如我的配置:

image-20231018114854988

image-20231018114927994

填写信息并保存

image-20231018115156792

进入夜莺的配置目录/opt/n9e/etc

cd /opt/n9e/etc 

修改配置文件

vim config.toml # 在 [Pushgw] 下,添加信息 [[Pushgw.Writers]] Url = "http://172.16.24.214:8428/api/v1/write" 

重启

pkill n9e nohup ./n9e &> n9e.log & 

安装Categraf

在网站https://flashcat.cloud/download/categraf/下载最新版本

安装依赖

sudo yum install -y libpcap 

下载命令

mkdir categraf && cd categraf wget https://download.flashcat.cloud/categraf-v0.3.32-linux-amd64-with-cgo-plugin.tar.gz 

部署

tar -zxvf categraf-v0.3.32-linux-amd64-with-cgo-plugin.tar.gz cd categraf-v0.3.32-linux-amd64-with-cgo-plugin mv ./* .. 

修改配置文件

修改文件conf/config.toml

[writer_opt] # default: 2000 batch = 2000 # channel(as queue) size chan_size = 10000 [[writers]] # 修改为夜莺n9e安装的服务器IP地址 url = "http://N9E:17000/prometheus/v1/write" # Basic auth username basic_auth_user = "" # Basic auth password basic_auth_pass = "" # timeout settings, unit: ms timeout = 5000 dial_timeout = 2500 max_idle_conns_per_host = 100 

设置Linux Systemd托管

cp conf/categraf.service /etc/systemd/system sudo systemctl daemon-reload # 以服务方式启动 systemctl start categraf # 停止服务 systemctl stop categraf # 重启服务 systemctl restart categraf # 查看状态 systemctl status categraf 

启动时可能报错:/opt/categraf/categraf: error while loading shared libraries: libpcap.so.0.8: cannot open shared object file: No such file or directory

没有 libpcap.so.0.8

解决方法

# 安装 sudo yum install libpcap -y # 查看安装版本 ls -al /usr/lib64/libpcap.so* # 软连接到需要的版本 ln -s /usr/lib64/libpcap.so.1.5.3 /usr/lib64/libpcap.so.0.8 

查看运行状态

# systemctl status categraf ● categraf.service - "Categraf" Loaded: loaded (/etc/systemd/system/categraf.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2023-10-18 13:33:22 CST; 3s ago Main PID: 2104 (categraf) CGroup: /system.slice/categraf.service └─2104 /opt/categraf/categraf Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.mem started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.net started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.netstat started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.nfsclient started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.processes started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.self_metrics started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.sockstat started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 metrics_agent.go:299: I! input: local.system started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 agent.go:47: I! [*agent.MetricsAgent] started Oct 18 13:33:22 centos7.9-template categraf[2104]: 2023/10/18 13:33:22 agent.go:50: I! agent started 

安装完成后可以在基础设施中查看到机器的状态

image-20231018134445978

查看时序指标

image-20231018141241344

也可以在这个页面快速查看

image-20231018141338727

多节点监控

与上面步骤相同,只需要部署多个Categraf即可

配置服务器监控

上面步骤我们已经在页面通过Victoria查询出数据,这里我们选择展示仪表盘

image-20231018142404401

选择前三个模板,点击批量导出

image-20231018142426094

选择业务组后点击克隆

image-20231018142440592

仪表盘->监控仪表盘中可以看到三个仪表盘

image-20231018142519568

点进去后可以看到不同展示监控页面

image-20231018142536458

监控MySQL

官方配置说明:https://flashcat.cloud/docs/content/flashcat-monitor/categraf/plugin/mysql/

修改categraf配置文件

vim conf/input.mysql/mysql.toml 

内容如下(真实监控的配置文件)

# # collect interval # interval = 15 # [[queries]] # mesurement = "users" # metric_fields = [ "total" ] # label_fields = [ "service" ] # timeout = "3s" # request = ''' # select 'n9e' as service, count(*) as total from n9e_v5.users # ''' [[instances]] address = "172.1.2.1:3306" username = "root" password = "root" # # set tls=custom to enable tls parameters = "tls=false" extra_status_metrics = true extra_innodb_metrics = false gather_processlist_processes_by_state = false gather_processlist_processes_by_user = false gather_schema_size = true gather_table_size = true gather_system_table_size = false gather_slave_status = true # # timeout timeout_seconds = 3 # # interval = global.interval * interval_times interval_times = 1 # important! use global unique string to specify instance # labels = { instance="n9e-10.2.3.4:3306" } ## Optional TLS Config # use_tls = false # tls_min_version = "1.2" # tls_ca = "/etc/categraf/ca.pem" # tls_cert = "/etc/categraf/cert.pem" # tls_key = "/etc/categraf/key.pem" ## Use TLS but skip chain & host verification # insecure_skip_verify = true #[[instances.queries]] # mesurement = "lock_wait" # metric_fields = [ "total" ] # timeout = "3s" # request = ''' #SELECT count(*) as total FROM information_schema.innodb_trx WHERE trx_state='LOCK WAIT' #''' # [[instances.queries]] # mesurement = "users" # metric_fields = [ "total" ] # label_fields = [ "service" ] # # field_to_append = "" # timeout = "3s" # request = ''' # select 'n9e' as service, count(*) as total from n9e_v5.users # ''' 

配置文件说明如下:

# # 定义mysql采集周期 interval = 15 # 定义全局要执行的sql [[queries]] mesurement = "users" metric_fields = [ "total" ] label_fields = [ "service" ] timeout = "3s" request = ''' select 'n9e' as service, count(*) as total from n9e_v5.users ''' # 定义instance, 一个instance对应一个mysql实例 # 指定mysql的地址,用户名,密码 [[instances]] address = "127.0.0.1:3306" username = "root" password = "1234" # # 是否使用tls 等定制参数 parameters = "tls=false" # 通过 show global status监控mysql,默认抓取一些基础指标, # 如果想抓取更多global status的指标,把下面的配置设置为true extra_status_metrics = true # 通过show global variables监控mysql的全局变量,默认抓取一些常规的 # 常规的基本够用了,扩展的部分,默认不采集,下面的配置设置为false extra_innodb_metrics = false # 监控processlist,关注较少,默认不采集 gather_processlist_processes_by_state = false gather_processlist_processes_by_user = false # 监控各个数据库的磁盘占用大小 gather_schema_size = true # 监控所有的table的磁盘占用大小 gather_table_size = false # 是否采集系统表的大小,通常不用,所以默认设置为false gather_system_table_size = false # 通过 show slave status监控slave的情况,比较关键,所以默认采集 gather_slave_status = true # # 超时时间 timeout_seconds = 3 # 采集周期的倍数,比如设置为2,那么采集周期就是 interval * 2 interval_times = 1 # 为mysql实例附一个instance的标签,因为通过address=127.0.0.1:3306不好区分 labels = { instance="n9e-10.2.3.4:3306" } # # tls相关配置 可选配置 # Optional TLS Config use_tls = false tls_min_version = "1.2" tls_ca = "/etc/categraf/ca.pem" tls_cert = "/etc/categraf/cert.pem" tls_key = "/etc/categraf/key.pem" # Use TLS but skip chain & host verification insecure_skip_verify = true # 定义当前instance的sql [[instances.queries]] mesurement = "lock_wait" metric_fields = [ "total" ] timeout = "3s" request = ''' SELECT count(*) as total FROM information_schema.innodb_trx WHERE trx_state='LOCK WAIT' ''' 

配置仪表盘

image-20231018151732438

选择克隆

image-20231018151922549

image-20231018151929277

在仪表盘页面进入该监控,可以看到MySQL监控

image-20231018152026903

监控进程

官方说明:https://flashcat.cloud/docs/content/flashcat-monitor/categraf/plugin/procstat/

修改categraf配置文件

vim conf/input.procstat/procstat.toml 

监控categrafcategraf进程

注意:如果配置多个监控,要将下面每个详细配置都单独配置一遍

# # collect interval interval = 15 [[instances]] search_cmdline_substring ="categraf" gather_total = true gather_per_pid = false gather_more_metrics = [ "threads", "fd", "io", "uptime", "cpu", "mem", "limit", "jvm" ] [[instances]] # # executable name (ie, pgrep <search_exec_substring>) #search_exec_substring = "nginx" # # pattern as argument for pgrep (ie, pgrep -f <search_cmdline_substring>) search_cmdline_substring ="paddlenlp" # # windows service name # search_win_service = "" # # search process with specific user, option with exec_substring or cmdline_substring # search_user = "" # # append some labels for series # labels = { region="cloud", product="n9e" } # # interval = global.interval * interval_times # interval_times = 1 # # mode to use when calculating CPU usage. can be one of 'solaris' or 'irix' # mode = "irix" # sum of threads/fd/io/cpu/mem, min of uptime/limit gather_total = true # will append pid as tag gather_per_pid = false # gather jvm metrics only when jstat is ready gather_more_metrics = [ "threads", "fd", "io", "uptime", "cpu", "mem", "limit", "jvm" ] 

选择仪表盘

image-20231018173414017

克隆

image-20231018173425439

点击进入可以看到监控状态

image-20231018173510049

告警配置

进入 系统配置 -> 通知设置 -> SMTP设置

image-20231018171757953

配置发送预警邮箱

image-20231018171846780

进入告警管理->内置规则

image-20231018171914038

选择 Procstat

image-20231018172008856

选择第二个,并点击克隆,这个选项为当监控进程数为零则认为异常

image-20231018172033428

导入到指定业务组

image-20231018172122355

选择告警管理->告警规则可以看到我们克隆的预警规则

image-20231018172144703

这里我们先设置一下人员组织,设置接收预警的人员

设置用户

image-20231018172554441

添加两个用户,并设置邮箱

image-20231018172719400

设置团队

image-20231018172405896

点击新增、输入名称

image-20231018172425006

新增成员

image-20231018172510271

image-20231018172739711

回到告警管理->告警规则,点击名称进入规则

image-20231018172918233

保存,点击启用

image-20231018172943172

上面我设置监控预警规则为进程数为1 时进行预警,为了测试效果,生产改为0。

过一会在邮件中可以看到预警邮件

image-20231018173159245

配置指定机器

上面的预警配置,默认会应用的所有机器,下面介绍如何监控指定的机器进行预警。

给机器配置标签

选择基础设置->机器列表

image-20231019100821808

勾选我们需要设置标签的服务器,点击右上角批量操作->绑定标签

image-20231019100900687

输入需要设置的标签名,标签格式需要为key=value这样,key要是使用数字字母开头

image-20231019101809938

这里我设置成ip=xxxx,每台机器都添加一个,方便后面设置区分。我们也可以根据服务器部署服务类型来这是其他的标签如type=开发环境Hadoop集群

image-20231019102309124

时序指标->即时查询,搜索我们需要预警的指标

image-20231019143653664

image-20231019143800873

可以看到指标下有具体的参数。

在告警规则中配置告警条件,选择我们刚刚配置的标签

procstat_lookup_count{ip="xxx",search_string="paddlenlp"} == 0 or procstat_lookup_count{ip="xxx",search_string="paddlenlp"} == 0 or procstat_lookup_count{ip="xxx",search_string="paddlenlp"} == 0

image-20231019143906546

保存,这时预警就会根据设置的具体条件进行预警。

多台机器告警时显示异常机器

https://flashcat.cloud/docs/content/flashcat-monitor/nightingale-v6/usage/alert/alert-rule/

image-20231019155943036

配置样例:

image-20231022135327727

常用命令总结

# 以服务方式启动 systemctl start categraf # 停止服务 systemctl stop categraf # 重启服务 systemctl restart categraf # 查看状态 systemctl status categraf 
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
6月前
|
运维 监控 中间件
Linux运维笔记 - 如何使用WGCLOUD监控交换机的流量
WGCLOUD是一款开源免费的通用主机监控工具,安装使用都非常简单,它可以监控主机、服务器的cpu、内存、磁盘、流量等数据,也可以监控数据库、中间件、网络设备
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
11月前
|
Prometheus 监控 Cloud Native
Prometheus+Grafana监控Linux主机
通过本文的步骤,我们成功地在 Linux 主机上使用 Prometheus 和 Grafana 进行了监控配置。具体包括安装 Prometheus 和 Node Exporter,配置 Grafana 数据源,并导入预设的仪表盘来展示监控数据。通过这种方式,可以轻松实现对 Linux 主机的系统指标监控,帮助及时发现和处理潜在问题。
968 7
|
11月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
1612 3
|
监控 安全 Linux
使用NRPE和Nagios监控Linux系统资源的方法
通过遵循以上步骤,可以有效地使用NRPE和Nagios监控Linux系统资源,确保系统运行稳定,并及时响应任何潜在的问题。这种方法提供了高度的可定制性和灵活性,适用于从小型环境到大型分布式系统的各种监控需求。
244 2
|
监控 Ubuntu Unix
Linux |Nethogs 监控网络使用情况
Linux |Nethogs 监控网络使用情况
Linux |Nethogs 监控网络使用情况
|
存储 监控 Linux
监控Linux服务器
详细介绍了如何监控Linux服务器,包括监控CPU、内存、磁盘存储和带宽的使用情况,以及使用各种系统监控工具如vmstat、iostat、sar、top和dstat来分析系统性能,并推荐了一些开源监控系统。
290 0
监控Linux服务器
|
Prometheus 监控 网络协议
在Linux中,如何监控网络服务的状态和性能?
在Linux中,如何监控网络服务的状态和性能?
|
存储 Prometheus 监控
在Linux中,如何进行系统资源的监控?
在Linux中,如何进行系统资源的监控?
|
存储 监控 Ubuntu
在Linux中,如何进行用户行为监控?
在Linux中,如何进行用户行为监控?
下一篇