Linux监控配置规定_第1页
Linux监控配置规定_第2页
Linux监控配置规定_第3页
Linux监控配置规定_第4页
Linux监控配置规定_第5页
已阅读5页,还剩124页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux监控配置规定一、概述

Linux系统监控是保障系统稳定运行、提升运维效率的关键环节。通过合理的监控配置,管理员可以实时掌握系统资源使用情况、性能指标及潜在风险,从而及时采取干预措施。本规定旨在明确Linux系统监控的配置要求、实施步骤及维护规范,确保监控体系的有效性和可靠性。

二、监控配置要求

(一)监控范围

1.服务器硬件状态:包括CPU使用率、内存占用、磁盘空间、网络流量等。

2.系统进程状态:关键进程的运行状态、CPU和内存占用情况。

3.网络服务状态:HTTP、FTP、SSH等服务的可用性及响应时间。

4.日志监控:系统日志、应用日志的关键错误或警告信息。

(二)监控工具选择

1.常用监控工具:

-Nagios:开源网络监控系统,支持插件扩展。

-Zabbix:分布式监控平台,适用于大型集群。

-Prometheus:基于时间序列的监控系统,配合Grafana可视化。

2.工具选型标准:

-兼容性:需适配目标Linux发行版(如CentOS、Ubuntu)。

-可扩展性:支持自定义监控项和告警规则。

(三)配置参数规范

1.CPU监控:

-核心数阈值:建议设置85%为高负载告警。

-平均负载阈值:1分钟负载超过5(基于CPU核心数)触发告警。

2.内存监控:

-可用内存阈值:低于10%触发告警。

-SWAP使用率阈值:超过50%触发告警。

3.磁盘监控:

-分区使用率:根目录(/)低于20%触发告警。

-I/O延迟:平均延迟超过100ms触发告警。

三、实施步骤

(一)环境准备

1.安装监控客户端:

-Nagios:使用`yuminstallnagios`(CentOS)或`aptinstallnagios`(Ubuntu)。

-Zabbix:配置Agent端,执行`systemctlstartzabbix-agent`。

2.配置监控服务器:

-确保服务器时间同步(`ntpdate`)。

-开放监控端口:Nagios默认端口8080,Zabbix默认端口10050。

(二)监控项配置

1.添加主机:

-Nagios:编辑`/etc/nagios/conf.d/hosts.cfg`,定义主机IP及服务检查项。

-Zabbix:通过UI添加主机,配置Agent监控参数。

2.设置告警规则:

-Nagios:定义服务(如HTTP、CPU)的阈值和告警级别。

-Zabbix:创建触发器,关联告警模板(如高负载模板)。

(三)可视化与告警

1.集成可视化工具:

-Grafana:导入Prometheus数据源,创建仪表盘。

-Nagios:使用Web界面展示服务状态图。

2.告警通知配置:

-邮件通知:配置`sendmail`,发送告警邮件。

-Slack集成:通过Webhook推送告警至Slack频道。

四、维护规范

(一)定期检查

1.监控数据完整性:每日核查监控日志(`/var/log/nagios/`或`/var/log/zabbix/`)。

2.告警有效性:每月复盘告警记录,优化阈值(如高负载阈值从85%调至90%)。

(二)性能优化

1.数据采集频率:默认5分钟采集一次,高负载场景可调整为1分钟。

2.资源占用控制:监控工具自身资源占用不超过5%CPU和10%内存。

(三)文档更新

1.每次配置变更需记录在案,包括变更时间、操作人及参数调整说明。

2.更新监控拓扑图,标注新增监控主机或服务。

五、附录

(一)示例配置文件(Nagios)

definehost{

usegeneric-host

host_nameserver01

address00

max_check_attempts5

retry_interval5

}

(二)示例告警模板(Zabbix)

{CPUusage:percent}>85

{Load[1]:avg}>5

一、概述

Linux系统监控是保障系统稳定运行、提升运维效率的关键环节。通过合理的监控配置,管理员可以实时掌握系统资源使用情况、性能指标及潜在风险,从而及时采取干预措施。本规定旨在明确Linux系统监控的配置要求、实施步骤及维护规范,确保监控体系的有效性和可靠性。

二、监控配置要求

(一)监控范围

1.服务器硬件状态:

-CPU使用率:监控整体使用率及各核心使用率,识别单核或全局性能瓶颈。需设定高、低负载阈值(如正常<50%,高负载>85%)。

-内存占用:监控物理内存使用率、交换空间(Swap)使用率、缓存(Cache)和缓冲区(Buffers)变化。需关注可用内存(Free+Cached)低于安全线(如<10%)的告警。

-磁盘空间:监控根分区(/)、逻辑卷(LVM)、挂载点(如/data)的可用空间。需设定低空间告警阈值(如可用空间<15%)。

-磁盘I/O:监控磁盘读写速率(Read/WriteIOPS)、延迟(Latency)。高I/O延迟(如>100ms)可能指示磁盘瓶颈或坏道。

-网络流量:监控出站和入站流量速率(Bytes/sec)、带宽使用率(%)。需关注异常流量突增或网络接口卡顿。

-温度和风扇:对于物理服务器,监控主板或硬盘仓的温度、风扇转速。需设定过热告警(如温度>60°C)和风扇停转告警。

2.系统进程状态:

-关键进程存活:监控`sshd`、`httpd`(或`nginx`)、`mysqld`(或其他业务进程)是否处于运行状态。进程退出需触发告警。

-进程资源消耗:监控关键进程的CPU使用率、内存占用。需设定单进程资源占用阈值(如CPU>70%、内存>50%)。

-进程数:监控系统中进程总数,异常增长可能指示DoS攻击或进程泄漏。

3.网络服务状态:

-服务可用性:使用TCP连接测试(如`nc-zvtarget_hostport`)或HTTP请求(如`curl-Ihttp://target_host`)检查服务端口或页面是否可达。

-响应时间:监控HTTP/HTTPS、FTP、API等服务的请求响应延迟。需设定可接受的最大响应时间(如HTTP<200ms)。

-SSL证书过期:对于HTTPS服务,监控SSL证书有效期,提前一个月触发告警。

4.日志监控:

-系统日志:监控`/var/log/messages`(或`/var/log/syslog`)、`/var/log/auth.log`中的关键错误(Error)、警告(Warning)信息。

-应用日志:监控Web服务器错误日志、数据库错误日志。需配置日志分析工具(如Logwatch、ELKStack的Beats+Logstash)提取关键事件。

-安全日志:监控`/var/log/secure`或`/var/log/auth.log`中的登录失败、权限变更等安全相关事件。

(二)监控工具选择

1.常用监控工具:

-Nagios:功能全面,插件生态丰富,适合需要精细控制权限和监控项的企业环境。配置主要基于配置文件(XML或CFG)。

-Zabbix:开源性分布式监控系统,自带的Agent轻量,数据采集能力强,适合大型复杂环境。提供图形化界面和丰富的内置监控模板。

-Prometheus:基于时间序列数据库(TSDB)的监控系统,配合Grafana可实现强大的可视化,通过Exporter或自定义脚本来采集指标。适合Kubernetes环境或需要Prometheus生态(如Alertmanager)的场景。

-Prometheus(带Grafana):组合使用,Prometheus负责数据采集和存储,Grafana负责可视化展示。可通过PromQL进行数据查询和告警规则定义。

-Open-Falcon:华为开源的性能监控系统,集数据采集、处理、存储、分析、告警于一体,性能高,适合大规模集群。

2.工具选型标准:

-业务需求匹配度:如需网络层监控,Nagios和Zabbix的网络插件更成熟;如需容器化环境监控,ZabbixAgent或Prometheus+NodeExporter是首选。

-数据类型支持:需明确监控目标是指标(Metrics,如CPU使用率)还是日志(Logs,如错误信息)。Prometheus擅长指标,Zabbix两者兼顾,Nagios需配合Logwatch等工具。

-团队技能栈:评估运维团队对所选工具的熟悉程度和学习成本。

-集成需求:考虑与现有工具(如CMDB、自动化平台)的集成能力。

-可扩展性与成本:评估工具在高可用、分布式环境下的扩展能力,以及可能的商业支持成本。

3.配置参数规范(举例):

-Nagios服务检查(NMS-NagiosMonitoringSystem):

```

defineservice{

usegeneric-service

host_nameserver01

service_descriptionHTTPServiceonPort80

check_commandcheck_http

expected_result0

retry_count3

retry_interval60

normal_check_interval5

min_check_interval1

max_check_interval15

contact_groupsadmins

notes_url/docs/http-check.html

}

```

-ZabbixAgent配置(在被监控主机上):

```bash

安装Agent

sudoaptupdate&&sudoaptinstallzabbix-agent

配置文件/etc/zabbix/zabbix_agentd.conf

Server=0监控服务器地址

ServerActive=0

HostName=server01被监控主机名

启用特定监控项(如CPU)

UserParameter=cpu[],top-bn1|grep"C[0-9]"|awk'{print$2}'|head-n$1

启用日志监控(通过自定义外部检查脚本)

ExternalCheckCommand=/usr/local/bin/check_systemd_logs.sh

```

(三)配置参数规范(详细)

1.CPU监控:

-核心数获取:可通过`lscpu|grep'CPU(s)'`获取。配置时需基于核心数计算百分比阈值。

-负载平均值:`uptime`显示1分钟、5分钟、15分钟负载。Zabbix或Nagios可通过`cpu_load`或`load1`等参数监控。阈值设定需结合CPU核心数(如4核服务器,1分钟负载>8视为高负载)。

-单核负载:Nagios可能需要配合插件(如`check_loadAverage1`)监控。Zabbix可通过自定义脚本来实现。

2.内存监控:

-总内存、可用内存:通过`free-m`或`/proc/meminfo`获取。监控`MemAvailable`或`free`值。

-交换空间:监控`SwapTotal`和`SwapFree`。设定Swap使用率阈值(如<70%)。

-缓存和缓冲区:监控`Cached`和`Buffers`。通常缓存(Cached)增加会降低可用内存读数,但属于内存有效利用,一般不设告警,除非其持续增长导致可用内存过低。

3.磁盘监控:

-文件系统使用率:通过`df-h`或`/proc/mounts`获取。监控`avail`或`Use%`列。需排除`/devtmpfs`、`tmpfs`等临时文件系统。

-I/O性能:使用`iostat-mx`或`iostat-d`获取。监控`await`(平均等待时间)、`rrqm/rwqm`(每秒合并读写请求)、`r/s`(每秒读取次数)、`w/s`(每秒写入次数)。高`await`通常表示I/O瓶颈。

-文件系统类型:注意不同文件系统(ext4,xfs,btrfs)的特性可能影响监控参数的选择。

4.网络监控:

-接口流量:通过`ifconfig`或`ipaddr`获取接口IP。使用`iftop`、`nload`或监控工具的接口流量插件监控`rx_bytes`和`tx_bytes`。

-带宽使用率:结合接口速率计算或使用`nload`实时显示。可设置总出口带宽阈值(如1Gbps网络,持续>900MB/s触发告警)。

-网络延迟和丢包:使用`ping`监控到网关或外部测试点的延迟和丢包率。可配置定期执行`ping`的外部检查。

5.日志监控:

-日志源识别:明确需要监控的日志文件路径(如`/var/log/nginx/error.log`)。

-日志解析规则:定义需要提取的关键信息模式(如正则表达式匹配错误代码、特定关键词)。

-告警触发条件:设定触发告警的日志条目数量或关键词出现频率(如1小时内出现>5次“critical”)。

(四)告警策略

1.告警分级:

-严重(Critical):系统不可用、核心服务中断、磁盘满、关键资源耗尽。

-重要(Major):服务响应缓慢、资源接近阈值、非核心服务异常。

-警告(Minor):资源轻微超标、一般性错误但不影响运行。

-信息(Normal):状态变更通知,无负面含义。

2.告警触发条件:

-超时:连续多次检查失败(如Nagios的`max_check_attempts`)。

-阈值:监控项数值超过预设阈值(如CPU使用率>85%)。

-变化率:监控项数值变化速率过快(如CPU使用率在5分钟内从20%飙升到95%)。

-持续状态:监控项处于特定状态超过一定时间(如服务宕机持续>10分钟)。

3.告警通知渠道:

-邮件:最基础的告警方式,发送给相关运维人员。

-Slack/Teams:集成至即时通讯工具,实现实时告警通知。

-SMS:对于关键事件,可通过短信网关发送给负责人。

-PagerDuty/DingTalk:集成第三方告警平台,提供更完善的告警升级和响应流程。

4.告警抑制与降级:

-抑制:避免短时间内因同一问题触发多次告警。可设置告警冷却时间(如当前告警未解决,短时间内再次触发同类告警则不发送)。

-降级:当严重告警解决后,自动将关联的次要告警状态降级。

三、实施步骤

(一)环境准备

1.监控服务器/客户端安装:

-Nagios服务器:

```bash

安装NagiosCore

sudoaptupdate&&sudoaptinstallnagiosnagios-nscanagios-plugins

安装NagiosWeb界面(可选)

sudoaptinstallnagios-nrpe-servernagios-plugins-extras

```

-Zabbix服务器(Agent模式):

```bash

安装Zabbix服务器和Agent

sudoaptupdate&&sudoaptinstallzabbix-server-pgsqlzabbix-serverzabbix-agentzabbix-frontend-php

初始化数据库并导入数据

sudozabbix-create-db-mysql--dbpasswd=your_password

配置Zabbix服务器

sudozabbix_server.conf

sudozabbix_agentd.conf

sudosystemctlrestartzabbix-serverzabbix-agentnginx启动服务

```

-Prometheus服务器:

```bash

安装Prometheus

sudoaptupdate&&sudoaptinstallprometheusprometheus-node-exporter

配置Prometheus(/etc/prometheus/prometheus.yml)

scrape_configs:

-job_name:'prometheus'

scrape_interval:15s

static_configs:

-targets:['localhost:9090']

-job_name:'node'

scrape_interval:5m

static_configs:

-targets:['<监控节点IP>:9100']

启动Prometheus

sudosystemctlstartprometheus

```

2.监控端口开放:

-确保监控服务器/客户端所需的端口开放,防火墙规则允许。

-Nagios:默认80(Web界面)、5666(NSCA)、4949/6666(NRPE)。

-Zabbix:10050(Agent)、10051(API)、8080(Web)。

-Prometheus:9090(Web)、9100(NodeExporter)。

3.时间同步:

-所有参与监控的机器必须时间同步,否则时间戳差异会导致告警关联和分析问题。

```bash

在所有主机上安装和配置NTP

sudoaptinstallntp

sudontpdate

sudosystemctlenablentp

sudosystemctlstartntp

```

(二)监控项配置

1.添加被监控主机:

-Nagios:编辑`/etc/nagios/conf.d/hosts.cfg`,定义主机名、IP/HostAddress、检查服务(services)。

```cfg

definehost{

usegeneric-host

host_nameweb-server01

address01

hostgroupsservers,webservers

register_type0

output_buffer_size8192

}

```

-Zabbix:通过ZabbixUI的“配置”->“主机”添加主机,输入IP/主机名,选择模板(如“Linuxserver”),配置主机接口(如IP、端口)。

-Prometheus:通常通过`node-exporter`自动发现或手动添加`static_configs`。

2.配置服务检查:

-Nagios:为每个主机定义服务,编辑`/etc/nagios/conf.d/services.cfg`或使用`serviceconf`命令。

```cfg

defineservice{

usegeneric-service

host_nameweb-server01

service_descriptionHTTPServiceonPort80

check_commandcheck_http!80!-I

expected_result0

retry_count3

retry_interval60

normal_check_interval5

contact_groupsadmins

}

```

-Zabbix:在主机下添加“项目”(Items),定义监控项类型(如ZabbixAgent、JMX、SNMP)、键值(如`cpu[0].load`)、数据类型、更新间隔。添加“触发器”(Triggers),定义条件(如`{Linux.CPU[0].load:avg1}>85`)、阈值、等级。

-Prometheus:通过Exporter(如`node-exporter`)暴露指标,Prometheus自动采集。或使用`prometheus-client-go`等库在应用中暴露自定义指标。

3.配置自定义监控:

-对于标准工具不支持的监控项,需配置自定义脚本或插件。

-Nagios:使用`externalcommand`定义外部命令检查,需确保命令路径正确且可执行。

-Zabbix:开发自定义外部检查脚本(需提供返回码和输出),在Zabbix服务器或代理上部署,并在项目配置中引用。

(三)可视化与告警配置

1.可视化配置:

-Nagios:默认提供Web界面展示主机状态、服务状态、历史数据(需配置RRDTool存储)。可使用Grafana等第三方工具对接Nagios的RRD数据或API。

-Zabbix:自带Web界面,提供丰富的图形化展示(Dashboard)。可创建自定义仪表盘,添加图表、地图、趋势图等。

-Prometheus+Grafana:Grafana作为可视化核心。在Grafana中添加Prometheus数据源,创建Dashboard,使用PromQL查询数据,配置面板展示指标。可利用Grafana的告警功能(Alerting),设置告警规则和通知渠道。

2.告警通知配置:

-配置Zabbix或Nagios的联系人(Contact)和联系人组(ContactGroup),定义接收告警的人及通知方式(如邮件模板)。

```cfg

definecontact{

usegeneric-contact

contact_nameadmin1

emailadmin1@

service_notification_commandsnotify-service-by-email

host_notification_commandsnotify-host-by-email

}

```

-配置告警动作(Action),定义告警触发时执行的操作(如发送邮件、执行远程命令、发送到Slack)。

```cfg

defineaction{

actionid10001

actiontype7;eventtype,7meansproblem

descriptionNotifyadminsaboutproblem

command_line/usr/local/nagios/bin/send_email-tadmin1@-s"NagiosAlert:Problem"-m"Host$host_nameisdown!"

}

```

-Prometheus+Alertmanager:在Prometheus配置中启用Alerting,配置Alertmanager地址。在Alertmanager中配置接收器(Receivers,如Email、Slack)、告警级别、路由规则(Route)、模板(Template,用于自定义告警消息)。Alertmanager接收Prometheus推送的告警,按规则处理和发送。

(四)测试与验证

1.手动触发测试:

-Nagios:可通过`service`命令手动触发服务检查,验证告警是否按预期发送。

```bash

手动触发HTTP服务检查

sudoservicenagiosstatus

sudoservicenagiosreload

sudoservicenagiosrestart

```

-Zabbix:可修改项目更新间隔为1秒,手动触发检查;或修改触发器条件使其更容易触发,验证告警。

-Prometheus+Grafana:修改指标值(如通过`echo99|nclocalhost9100`修改NodeExporter的CPU值),观察Grafana面板变化和Alertmanager发送的告警。

2.自动化测试:

-编写脚本模拟服务中断或资源耗尽,验证整个告警链路(监控->触发->通知)是否正常工作。

3.告警确认与抑制测试:

-发送告警后,在监控系统中确认告警,验证告警状态是否更新,后续重复告警是否被抑制。

四、维护规范

(一)定期检查与校准

1.监控数据完整性检查:

-每日检查监控日志文件(如`/var/log/nagios/daemon.log`、`/var/log/zabbix/zabbix.log`、`/var/log/prometheus/prometheus.log`),确认无错误记录。

-每周抽查关键主机或服务的监控数据,验证数据是否连续、准确。

2.告警有效性复盘:

-每月收集近一个月的告警记录,与实际事件关联,分析告警准确率(误报率、漏报率)。

-对于误报告警,分析原因(如阈值设置不合理、监控项配置错误),调整配置或优化规则。

-对于漏报告警,检查监控覆盖是否完整,补充监控项或调整阈值。

3.阈值与规则优化:

-根据业务变化和告警复盘结果,定期(如每季度)审视并调整监控阈值和告警规则。

-例如,业务高峰期可能需要提高CPU使用率告警阈值,而平时则维持较低阈值。

4.工具版本更新与安全:

-监控工具(Nagios,Zabbix,Prometheus)及其依赖组件(如数据库、Web服务器)需定期更新到安全版本。

-更新前进行充分测试,确保兼容性。更新后验证监控服务是否正常。

(二)性能优化

1.监控工具自身资源占用监控:

-定期监控监控服务器本身的CPU、内存、磁盘使用率,确保监控工具运行平稳。

-如发现资源占用过高(如Nagios>15%CPU),分析原因(如监控项过多、配置问题),进行优化(如清理冗余监控、优化配置)。

2.数据采集频率调整:

-默认采集频率可能不是最优,根据实际需求调整。高负载或关键业务节点可提高频率(如1分钟),普通节点可降低频率(如5分钟)以减少网络和资源开销。

3.历史数据清理:

-监控数据(特别是Prometheus的TSDB)会随时间增长,占用大量磁盘空间。根据需要配置数据保留时间(retention),过期数据定期清理。

-Nagios/Zabbix的历史数据通常由RRDTool或数据库管理,需关注存储容量。

(三)文档与知识库更新

1.配置文档化:

-详细记录监控架构图、主机清单、服务配置、告警规则、阈值设置等信息。

-使用版本控制工具(如Git)管理配置文件变更,记录每次修改的原因和内容。

2.故障案例总结:

-对于由告警引发的故障处理过程,记录详细步骤、解决方案、经验教训,形成知识库。

3.操作手册:

-编写监控系统的操作手册,包括日常检查、告警处理流程、配置变更步骤等。

五、附录

(一)常用监控工具对比表

|特性|Nagios|Zabbix|Prometheus+Grafana|Open-Falcon|

||||||

|数据类型|指标、日志(需配合)|指标、日志|指标(TSDB)|指标、日志、配置|

|采集方式|Agent、NRPE、SNMP、ICMP|Agent、SNMP、JMX、ActiveX|Exporter、自定义脚本是主要方式|Agent(轻量)、Agentless|

|可视化|自带Web界面,有限|自带Web界面,丰富|Grafana,高度可定制|自带Web界面,功能强大|

|告警|自带,功能基础|自带,功能完善,支持外部|Alertmanager,灵活强大|自带,功能完善|

|扩展性|良好,插件生态|良好,插件和模板生态|极高,生态丰富(Grafana等)|极高,尤其适合大集群|

|学习曲线|中等|中等|中高(需掌握PromQL、Grafana)|中等|

|适用场景|传统IT环境,稳定性要求高|大型/复杂环境,全栈监控|云原生,微服务,数据分析|大型复杂云环境,运营商网络|

|社区/支持|活跃社区,商业支持多|活跃社区,商业支持多|活跃社区,商业支持多|华为生态,国内支持强|

(二)示例Nagios服务检查配置(HTTP)

```cfg

defineservice{

usegeneric-service

host_nameweb-server02

service_descriptionHTTPServiceonPort80

check_commandcheck_http!80!-I

expected_result0

retry_count3

retry_interval60

normal_check_interval5

max_check_attempts5

check_frozen0

notes_url/docs/http-check.html

register_type0

}

defineservice{

usegeneric-service

host_nameweb-server02

service_descriptionHTTPServiceonPort443(HTTPS)

check_commandcheck_http!443!-I!-khttps

expected_result0

retry_count3

retry_interval60

normal_check_interval5

max_check_attempts5

check_frozen0

notes_url/docs/https-check.html

register_type0

}

```

(三)示例Zabbix项目配置(CPU使用率)

-项目(Item):

|Name|Type|Key|UpdateInterval|DataType|

||||||

|CPULoadAverage1min|ZabbixAgent|cpu[0].load1|60|浮点数|

-触发器(Trigger):

|Name|Condition|Priority|Status|

|CPULoadAverage1minHigh|{Linux.CPU[0].load1:avg1}>85|High|0|

|CPULoadAverage1minVeryHigh|{Linux.CPU[0].load1:avg1}>95|Critical|0|

(四)示例Prometheus指标查询(PromQL)

```promql

查询CPU使用率

rate(container_cpu_usage_seconds_total{job="node",image!="",container!="kube-system",cluster=""}[5m])by(container,image)

查询磁盘I/O

rate(container_fs_stats_bytes_written_total{job="node",device!="",container!="kube-system",cluster=""}[5m])by(container,device)

查询Pod资源使用(Kubernetes)

kube_pod_container_resource_usage{resource="cpu",container!="POD",namespace!="default"}[5m]

过滤特定标签的指标

node_filesystem_size_bytes{fstype="ext4",mountpoint="/"}[1h]

```

一、概述

Linux系统监控是保障系统稳定运行、提升运维效率的关键环节。通过合理的监控配置,管理员可以实时掌握系统资源使用情况、性能指标及潜在风险,从而及时采取干预措施。本规定旨在明确Linux系统监控的配置要求、实施步骤及维护规范,确保监控体系的有效性和可靠性。

二、监控配置要求

(一)监控范围

1.服务器硬件状态:包括CPU使用率、内存占用、磁盘空间、网络流量等。

2.系统进程状态:关键进程的运行状态、CPU和内存占用情况。

3.网络服务状态:HTTP、FTP、SSH等服务的可用性及响应时间。

4.日志监控:系统日志、应用日志的关键错误或警告信息。

(二)监控工具选择

1.常用监控工具:

-Nagios:开源网络监控系统,支持插件扩展。

-Zabbix:分布式监控平台,适用于大型集群。

-Prometheus:基于时间序列的监控系统,配合Grafana可视化。

2.工具选型标准:

-兼容性:需适配目标Linux发行版(如CentOS、Ubuntu)。

-可扩展性:支持自定义监控项和告警规则。

(三)配置参数规范

1.CPU监控:

-核心数阈值:建议设置85%为高负载告警。

-平均负载阈值:1分钟负载超过5(基于CPU核心数)触发告警。

2.内存监控:

-可用内存阈值:低于10%触发告警。

-SWAP使用率阈值:超过50%触发告警。

3.磁盘监控:

-分区使用率:根目录(/)低于20%触发告警。

-I/O延迟:平均延迟超过100ms触发告警。

三、实施步骤

(一)环境准备

1.安装监控客户端:

-Nagios:使用`yuminstallnagios`(CentOS)或`aptinstallnagios`(Ubuntu)。

-Zabbix:配置Agent端,执行`systemctlstartzabbix-agent`。

2.配置监控服务器:

-确保服务器时间同步(`ntpdate`)。

-开放监控端口:Nagios默认端口8080,Zabbix默认端口10050。

(二)监控项配置

1.添加主机:

-Nagios:编辑`/etc/nagios/conf.d/hosts.cfg`,定义主机IP及服务检查项。

-Zabbix:通过UI添加主机,配置Agent监控参数。

2.设置告警规则:

-Nagios:定义服务(如HTTP、CPU)的阈值和告警级别。

-Zabbix:创建触发器,关联告警模板(如高负载模板)。

(三)可视化与告警

1.集成可视化工具:

-Grafana:导入Prometheus数据源,创建仪表盘。

-Nagios:使用Web界面展示服务状态图。

2.告警通知配置:

-邮件通知:配置`sendmail`,发送告警邮件。

-Slack集成:通过Webhook推送告警至Slack频道。

四、维护规范

(一)定期检查

1.监控数据完整性:每日核查监控日志(`/var/log/nagios/`或`/var/log/zabbix/`)。

2.告警有效性:每月复盘告警记录,优化阈值(如高负载阈值从85%调至90%)。

(二)性能优化

1.数据采集频率:默认5分钟采集一次,高负载场景可调整为1分钟。

2.资源占用控制:监控工具自身资源占用不超过5%CPU和10%内存。

(三)文档更新

1.每次配置变更需记录在案,包括变更时间、操作人及参数调整说明。

2.更新监控拓扑图,标注新增监控主机或服务。

五、附录

(一)示例配置文件(Nagios)

definehost{

usegeneric-host

host_nameserver01

address00

max_check_attempts5

retry_interval5

}

(二)示例告警模板(Zabbix)

{CPUusage:percent}>85

{Load[1]:avg}>5

一、概述

Linux系统监控是保障系统稳定运行、提升运维效率的关键环节。通过合理的监控配置,管理员可以实时掌握系统资源使用情况、性能指标及潜在风险,从而及时采取干预措施。本规定旨在明确Linux系统监控的配置要求、实施步骤及维护规范,确保监控体系的有效性和可靠性。

二、监控配置要求

(一)监控范围

1.服务器硬件状态:

-CPU使用率:监控整体使用率及各核心使用率,识别单核或全局性能瓶颈。需设定高、低负载阈值(如正常<50%,高负载>85%)。

-内存占用:监控物理内存使用率、交换空间(Swap)使用率、缓存(Cache)和缓冲区(Buffers)变化。需关注可用内存(Free+Cached)低于安全线(如<10%)的告警。

-磁盘空间:监控根分区(/)、逻辑卷(LVM)、挂载点(如/data)的可用空间。需设定低空间告警阈值(如可用空间<15%)。

-磁盘I/O:监控磁盘读写速率(Read/WriteIOPS)、延迟(Latency)。高I/O延迟(如>100ms)可能指示磁盘瓶颈或坏道。

-网络流量:监控出站和入站流量速率(Bytes/sec)、带宽使用率(%)。需关注异常流量突增或网络接口卡顿。

-温度和风扇:对于物理服务器,监控主板或硬盘仓的温度、风扇转速。需设定过热告警(如温度>60°C)和风扇停转告警。

2.系统进程状态:

-关键进程存活:监控`sshd`、`httpd`(或`nginx`)、`mysqld`(或其他业务进程)是否处于运行状态。进程退出需触发告警。

-进程资源消耗:监控关键进程的CPU使用率、内存占用。需设定单进程资源占用阈值(如CPU>70%、内存>50%)。

-进程数:监控系统中进程总数,异常增长可能指示DoS攻击或进程泄漏。

3.网络服务状态:

-服务可用性:使用TCP连接测试(如`nc-zvtarget_hostport`)或HTTP请求(如`curl-Ihttp://target_host`)检查服务端口或页面是否可达。

-响应时间:监控HTTP/HTTPS、FTP、API等服务的请求响应延迟。需设定可接受的最大响应时间(如HTTP<200ms)。

-SSL证书过期:对于HTTPS服务,监控SSL证书有效期,提前一个月触发告警。

4.日志监控:

-系统日志:监控`/var/log/messages`(或`/var/log/syslog`)、`/var/log/auth.log`中的关键错误(Error)、警告(Warning)信息。

-应用日志:监控Web服务器错误日志、数据库错误日志。需配置日志分析工具(如Logwatch、ELKStack的Beats+Logstash)提取关键事件。

-安全日志:监控`/var/log/secure`或`/var/log/auth.log`中的登录失败、权限变更等安全相关事件。

(二)监控工具选择

1.常用监控工具:

-Nagios:功能全面,插件生态丰富,适合需要精细控制权限和监控项的企业环境。配置主要基于配置文件(XML或CFG)。

-Zabbix:开源性分布式监控系统,自带的Agent轻量,数据采集能力强,适合大型复杂环境。提供图形化界面和丰富的内置监控模板。

-Prometheus:基于时间序列数据库(TSDB)的监控系统,配合Grafana可实现强大的可视化,通过Exporter或自定义脚本来采集指标。适合Kubernetes环境或需要Prometheus生态(如Alertmanager)的场景。

-Prometheus(带Grafana):组合使用,Prometheus负责数据采集和存储,Grafana负责可视化展示。可通过PromQL进行数据查询和告警规则定义。

-Open-Falcon:华为开源的性能监控系统,集数据采集、处理、存储、分析、告警于一体,性能高,适合大规模集群。

2.工具选型标准:

-业务需求匹配度:如需网络层监控,Nagios和Zabbix的网络插件更成熟;如需容器化环境监控,ZabbixAgent或Prometheus+NodeExporter是首选。

-数据类型支持:需明确监控目标是指标(Metrics,如CPU使用率)还是日志(Logs,如错误信息)。Prometheus擅长指标,Zabbix两者兼顾,Nagios需配合Logwatch等工具。

-团队技能栈:评估运维团队对所选工具的熟悉程度和学习成本。

-集成需求:考虑与现有工具(如CMDB、自动化平台)的集成能力。

-可扩展性与成本:评估工具在高可用、分布式环境下的扩展能力,以及可能的商业支持成本。

3.配置参数规范(举例):

-Nagios服务检查(NMS-NagiosMonitoringSystem):

```

defineservice{

usegeneric-service

host_nameserver01

service_descriptionHTTPServiceonPort80

check_commandcheck_http

expected_result0

retry_count3

retry_interval60

normal_check_interval5

min_check_interval1

max_check_interval15

contact_groupsadmins

notes_url/docs/http-check.html

}

```

-ZabbixAgent配置(在被监控主机上):

```bash

安装Agent

sudoaptupdate&&sudoaptinstallzabbix-agent

配置文件/etc/zabbix/zabbix_agentd.conf

Server=0监控服务器地址

ServerActive=0

HostName=server01被监控主机名

启用特定监控项(如CPU)

UserParameter=cpu[],top-bn1|grep"C[0-9]"|awk'{print$2}'|head-n$1

启用日志监控(通过自定义外部检查脚本)

ExternalCheckCommand=/usr/local/bin/check_systemd_logs.sh

```

(三)配置参数规范(详细)

1.CPU监控:

-核心数获取:可通过`lscpu|grep'CPU(s)'`获取。配置时需基于核心数计算百分比阈值。

-负载平均值:`uptime`显示1分钟、5分钟、15分钟负载。Zabbix或Nagios可通过`cpu_load`或`load1`等参数监控。阈值设定需结合CPU核心数(如4核服务器,1分钟负载>8视为高负载)。

-单核负载:Nagios可能需要配合插件(如`check_loadAverage1`)监控。Zabbix可通过自定义脚本来实现。

2.内存监控:

-总内存、可用内存:通过`free-m`或`/proc/meminfo`获取。监控`MemAvailable`或`free`值。

-交换空间:监控`SwapTotal`和`SwapFree`。设定Swap使用率阈值(如<70%)。

-缓存和缓冲区:监控`Cached`和`Buffers`。通常缓存(Cached)增加会降低可用内存读数,但属于内存有效利用,一般不设告警,除非其持续增长导致可用内存过低。

3.磁盘监控:

-文件系统使用率:通过`df-h`或`/proc/mounts`获取。监控`avail`或`Use%`列。需排除`/devtmpfs`、`tmpfs`等临时文件系统。

-I/O性能:使用`iostat-mx`或`iostat-d`获取。监控`await`(平均等待时间)、`rrqm/rwqm`(每秒合并读写请求)、`r/s`(每秒读取次数)、`w/s`(每秒写入次数)。高`await`通常表示I/O瓶颈。

-文件系统类型:注意不同文件系统(ext4,xfs,btrfs)的特性可能影响监控参数的选择。

4.网络监控:

-接口流量:通过`ifconfig`或`ipaddr`获取接口IP。使用`iftop`、`nload`或监控工具的接口流量插件监控`rx_bytes`和`tx_bytes`。

-带宽使用率:结合接口速率计算或使用`nload`实时显示。可设置总出口带宽阈值(如1Gbps网络,持续>900MB/s触发告警)。

-网络延迟和丢包:使用`ping`监控到网关或外部测试点的延迟和丢包率。可配置定期执行`ping`的外部检查。

5.日志监控:

-日志源识别:明确需要监控的日志文件路径(如`/var/log/nginx/error.log`)。

-日志解析规则:定义需要提取的关键信息模式(如正则表达式匹配错误代码、特定关键词)。

-告警触发条件:设定触发告警的日志条目数量或关键词出现频率(如1小时内出现>5次“critical”)。

(四)告警策略

1.告警分级:

-严重(Critical):系统不可用、核心服务中断、磁盘满、关键资源耗尽。

-重要(Major):服务响应缓慢、资源接近阈值、非核心服务异常。

-警告(Minor):资源轻微超标、一般性错误但不影响运行。

-信息(Normal):状态变更通知,无负面含义。

2.告警触发条件:

-超时:连续多次检查失败(如Nagios的`max_check_attempts`)。

-阈值:监控项数值超过预设阈值(如CPU使用率>85%)。

-变化率:监控项数值变化速率过快(如CPU使用率在5分钟内从20%飙升到95%)。

-持续状态:监控项处于特定状态超过一定时间(如服务宕机持续>10分钟)。

3.告警通知渠道:

-邮件:最基础的告警方式,发送给相关运维人员。

-Slack/Teams:集成至即时通讯工具,实现实时告警通知。

-SMS:对于关键事件,可通过短信网关发送给负责人。

-PagerDuty/DingTalk:集成第三方告警平台,提供更完善的告警升级和响应流程。

4.告警抑制与降级:

-抑制:避免短时间内因同一问题触发多次告警。可设置告警冷却时间(如当前告警未解决,短时间内再次触发同类告警则不发送)。

-降级:当严重告警解决后,自动将关联的次要告警状态降级。

三、实施步骤

(一)环境准备

1.监控服务器/客户端安装:

-Nagios服务器:

```bash

安装NagiosCore

sudoaptupdate&&sudoaptinstallnagiosnagios-nscanagios-plugins

安装NagiosWeb界面(可选)

sudoaptinstallnagios-nrpe-servernagios-plugins-extras

```

-Zabbix服务器(Agent模式):

```bash

安装Zabbix服务器和Agent

sudoaptupdate&&sudoaptinstallzabbix-server-pgsqlzabbix-serverzabbix-agentzabbix-frontend-php

初始化数据库并导入数据

sudozabbix-create-db-mysql--dbpasswd=your_password

配置Zabbix服务器

sudozabbix_server.conf

sudozabbix_agentd.conf

sudosystemctlrestartzabbix-serverzabbix-agentnginx启动服务

```

-Prometheus服务器:

```bash

安装Prometheus

sudoaptupdate&&sudoaptinstallprometheusprometheus-node-exporter

配置Prometheus(/etc/prometheus/prometheus.yml)

scrape_configs:

-job_name:'prometheus'

scrape_interval:15s

static_configs:

-targets:['localhost:9090']

-job_name:'node'

scrape_interval:5m

static_configs:

-targets:['<监控节点IP>:9100']

启动Prometheus

sudosystemctlstartprometheus

```

2.监控端口开放:

-确保监控服务器/客户端所需的端口开放,防火墙规则允许。

-Nagios:默认80(Web界面)、5666(NSCA)、4949/6666(NRPE)。

-Zabbix:10050(Agent)、10051(API)、8080(Web)。

-Prometheus:9090(Web)、9100(NodeExporter)。

3.时间同步:

-所有参与监控的机器必须时间同步,否则时间戳差异会导致告警关联和分析问题。

```bash

在所有主机上安装和配置NTP

sudoaptinstallntp

sudontpdate

sudosystemctlenablentp

sudosystemctlstartntp

```

(二)监控项配置

1.添加被监控主机:

-Nagios:编辑`/etc/nagios/conf.d/hosts.cfg`,定义主机名、IP/HostAddress、检查服务(services)。

```cfg

definehost{

usegeneric-host

host_nameweb-server01

address01

hostgroupsservers,webservers

register_type0

output_buffer_size8192

}

```

-Zabbix:通过ZabbixUI的“配置”->“主机”添加主机,输入IP/主机名,选择模板(如“Linuxserver”),配置主机接口(如IP、端口)。

-Prometheus:通常通过`node-exporter`自动发现或手动添加`static_configs`。

2.配置服务检查:

-Nagios:为每个主机定义服务,编辑`/etc/nagios/conf.d/services.cfg`或使用`serviceconf`命令。

```cfg

defineservice{

usegeneric-service

host_nameweb-server01

service_descriptionHTTPServiceonPort80

check_commandcheck_http!80!-I

expected_result0

retry_count3

retry_interval60

normal_check_interval5

contact_groupsadmins

}

```

-Zabbix:在主机下添加“项目”(Items),定义监控项类型(如ZabbixAgent、JMX、SNMP)、键值(如`cpu[0].load`)、数据类型、更新间隔。添加“触发器”(Triggers),定义条件(如`{Linux.CPU[0].load:avg1}>85`)、阈值、等级。

-Prometheus:通过Exporter(如`node-exporter`)暴露指标,Prometheus自动采集。或使用`prometheus-client-go`等库在应用中暴露自定义指标。

3.配置自定义监控:

-对于标准工具不支持的监控项,需配置自定义脚本或插件。

-Nagios:使用`externalcommand`定义外部命令检查,需确保命令路径正确且可执行。

-Zabbix:开发自定义外部检查脚本(需提供返回码和输出),在Zabbix服务器或代理上部署,并在项目配置中引用。

(三)可视化与告警配置

1.可视化配置:

-Nagios:默认提供Web界面展示主机状态、服务状态、历史数据(需配置RRDTool存储)。可使用Grafana等第三方工具对接Nagios的RRD数据或API。

-Zabbix:自带Web界面,提供丰富的图形化展示(Dashboard)。可创建自定义仪表盘,添加图表、地图、趋势图等。

-Prometheus+Grafana:Grafana作为可视化核心。在Grafana中添加Prometheus数据源,创建Dashboard,使用PromQL查询数据,配置面板展示指标。可利用Grafana的告警功能(Alerting),设置告警规则和通知渠道。

2.告警通知配置:

-配置Zabbix或Nagios的联系人(Contact)和联系人组(ContactGroup),定义接收告警的人及通知方式(如邮件模板)。

```cfg

definecontact{

usegeneric-contact

contact_nameadmin1

emailadmin1@

service_notification_commandsnotify-service-by-email

host_notification_commandsnotify-host-by-email

}

```

-配置告警动作(Action),定义告警触发时执行的操作(如发送邮件、执行远程命令、发送到Slack)。

```cfg

defineaction{

actionid10001

actiontype7;eventtype,7meansproblem

descriptionNotifyadminsaboutproblem

command_line/usr/local/nagios/bin/send_email-tadmin1@-s"NagiosAlert:Problem"-m"Host$host_nameisdown!"

}

```

-Prometheus+Alertmanager:在Prometheus配置中启用Alerting,配置Alertmanager地址。在Alertmanager中配置接收器(Receivers,如Email、Slack)、告警级别、路由规则(Route)、模板(Template,用于自定义告警消息)。Alertmanager接收Prometheus推送的告警,按规则处理和发送。

(四)测试与验证

1.手动触发测试:

-Nagios:可通过`service`命令手动触发服务检查,验证告警是否按预期发送。

```bash

手动触发HTTP服务检查

sudoservicenagiosstatus

sudoservicenagiosreload

sudoservicenagiosrestart

```

-Zabbix:可修改项目更新间隔为1秒,手动触发检查;或修改触发器条件使其更容易触发,验证告警。

-Prometheus+Grafana:修改指标值(如通过`echo99|nclocalhost9100`修改NodeExporter的CPU值),观察Grafana面板变化和Alertmanager发送的告警。

2.自动化测试:

-编写脚本模拟服务中断或资源耗尽,验证整个告警链路(监控->触发->通知)是否正常工作。

3.告警确认与抑制测试:

-发送告警后,在监控系统中确认告警,验证告警状态是否更新,后续重复告警是否被抑制。

四、维护规范

(一)定期检查与校准

1.监控数据完整性检查:

-每日检查监控日志文件(如`/var/log/nagios/daemon.log`、`/var/log/zabbix/zabbix.log`、`/var/log/prometheus/prometheus.log`),确认无错误记录。

-每周抽查关键主机或服务的监控数据,验证数据是否连续、准确。

2.告警有效性复盘:

-每月收集近一个月的告警记录,与实际事件关联,分析告警准确率(误报率、漏报率)。

-对于误报告警,分析原因(如阈值设置不合理、监控项配置错误),调整配置或优化规则。

-对于漏报告警,检查监控覆盖是否完整,补充监控项或调整阈值。

3.阈值与规则优化:

-根据业务变化和告警复盘结果,定期(如每季度)审视并调整监控阈值和告警规则。

-例如,业务高峰期可能需要提高CPU使用率告警阈值,而平时则维持较低阈值。

4.工具版本更新与安全:

-监控工具(Nagios,Zabbix,Prometheus)及其依赖组件(如数据库、Web服务器)需定期更新到安全版本。

-更新前进行充分测试,确保兼容性。更新后验证监控服务是否正常。

(二)性能优化

1.监控工具自身资源占用监控:

-定期监控监控服务器本身的CPU、内存、磁盘使用率,确保监控工具运行平稳。

-如发现资源占用过高(如Nagios>15%CPU),分析原因(如监控项过多、配置问题),进行优化(如清理冗余监控、优化配置)。

2.数据采集频率调整:

-默认采集频率可能不是最优,根据实际需求调整。高负载或关键业务节点可提高频率(如1分钟),普通节点可降低频率(如5分钟)以减少网络和资源开销。

3.历史数据清理:

-监控数据(特别是Prometheus的TSDB)会随时间增长,占用大量磁盘空间。根据需要配置数据保留时间(retention),过期数据定期清理。

-Nagios/Zabbix的历史数据通常由RRDTool或数据库管理,需关注存储容量。

(三)文档与知识库更新

1.配置文档化:

-详细记录监控架构图、主机清单、服务配置、告警规则、阈值设置等信息。

-使用版本控制工具(如Git)管理配置文件变更,记录每次修改的原因和内容。

2.故障案例总结:

-对于由告警引发的故障处理过程,记录详细步骤、解决方案、经验教训,形成知识库。

3.操作手册:

-编写监控系统的操作手册,包括日常检查、告警处理流程、配置变更步骤等。

五、附录

(一)常用监控工具对比表

|特性|Nagios|Zabbix|Prometheus+Grafana|Open-Falcon|

||||||

|数据类型|指标、日志(需配合)|指标、日志|指标(TSDB)|指标、日志、配置|

|采集方式|Agent、NRPE、SNMP、ICMP|Agent、SNMP、JMX、ActiveX|Exporter、自定义脚本是主要方式|Agent(轻量)、Agentless|

|可视化|自带Web界面,有限|自带Web界面,丰富|Grafana,高度可定制|自带Web界面,功能强大|

|告警|自带,功能基础|自带,功能完善,支持外部|Alertmanager,灵活强大|自带,功能完善|

|扩展性|良好,插件生态|良好,插件和模板生态|极高,生态丰富(Grafana等)|极高,尤其适合大集群|

|学习曲线|中等|中等|中高(需掌握PromQL、Grafana)|中等|

|适用场景|传统IT环境,稳定性要求高|大型/复杂环境,全栈监控|云原生,微服务,数据分析|大型复杂云环境,运营商网络|

|社区/支持|活跃社区,商业支持多|活跃社区,商业支持多|活跃社区,商业支持多|华为生态,国内支持强|

(二)示例Nagios服务检查配置(HTTP)

```cfg

defineservice{

use

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论