1. 首页 > IT综合教程 > 正文

IT教程FG261-IT系统监控与管理

1. 系统监控简介

系统监控是IT运维的重要组成部分,用于实时监控IT系统的运行状态,及时发现和解决问题。更多学习教程www.fgedu.net.cn

系统监控的主要目标:

  • 实时监控系统性能和健康状态
  • 及时发现和解决系统故障
  • 预测系统性能瓶颈和容量需求
  • 优化系统资源使用
  • 确保服务可用性和可靠性

2. 监控工具介绍

市场上有多种监控工具,每种工具都有其特点和适用场景。

# 常用监控工具

## 开源监控工具
1. **Prometheus**:开源的监控系统和时间序列数据库
2. **Grafana**:开源的数据可视化和监控平台
3. **Nagios**:开源的网络监控和告警系统
4. **Zabbix**:开源的企业级监控解决方案
5. **Icinga**:Nagios的分支,提供更现代的界面和功能
6. **Netdata**:实时性能监控工具
7. **ELK Stack**:用于日志分析和监控

## 商业监控工具
1. **Datadog**:云原生监控平台
2. **New Relic**:应用性能监控平台
3. **Dynatrace**:AI驱动的可观测性平台
4. **AppDynamics**:应用性能管理工具
5. **SolarWinds**:IT基础设施监控工具

3. 系统监控配置

系统监控主要关注服务器的CPU、内存、磁盘、网络等资源的使用情况。

# 使用Prometheus和Grafana监控系统

# 安装Prometheus
# 下载Prometheus
# wget https://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz

# 解压
# tar xvfz prometheus-2.37.0.linux-amd64.tar.gz
# cd prometheus-2.37.0.linux-amd64

# 配置Prometheus
# vi prometheus.yml
global:
scrape_interval: 15s

scrape_configs:
– job_name: ‘prometheus’
static_configs:
– targets: [‘fgedudb:9090’]

– job_name: ‘node’
static_configs:
– targets: [‘fgedudb:9100’]

# 安装Node Exporter
# wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
# tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz
# cd node_exporter-1.3.1.linux-amd64
# ./node_exporter &

# 启动Prometheus
# ./prometheus –config.file=prometheus.yml &

# 安装Grafana
# 添加Grafana仓库
# vi /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
gpgcheck=1
enabled=1
gpgkey=https://packages.grafana.com/gpg.key

# 安装Grafana
# yum install -y grafana

# 启动Grafana
# systemctl start grafana-server
# systemctl enable grafana-server

# 访问Grafana
# 打开浏览器,访问 http://fgedudb:3000
# 默认fgedu和密码:admin/admin

# 配置Grafana数据源
# 1. 登录Grafana
# 2. 点击左侧菜单的”Configuration” > “Data sources”
# 3. 点击”Add data source”
# 4. 选择”Prometheus”
# 5. 在”URL”字段中输入”http://fgedudb:9090″
# 6. 点击”Save & Test”

# 导入系统监控仪表盘
# 1. 点击左侧菜单的”Dashboards”
# 2. 点击”Import”
# 3. 输入仪表盘ID:1860
# 4. 点击”Load”
# 5. 选择Prometheus数据源
# 6. 点击”Import”

4. 网络监控配置

网络监控主要关注网络设备的状态、网络连接、带宽使用等。

# 使用Prometheus和Grafana监控网络

# 安装Blackbox Exporter
# wget https://github.com/prometheus/blackbox_exporter/releases/download/v0.19.0/blackbox_exporter-0.19.0.linux-amd64.tar.gz
# tar xvfz blackbox_exporter-0.19.0.linux-amd64.tar.gz
# cd blackbox_exporter-0.19.0.linux-amd64

# 配置Blackbox Exporter
# vi blackbox.yml
modules:
http_2xx:
prober: http
timeout: 5s
http:
valid_http_versions: [“HTTP/1.1”, “HTTP/2.0”]
valid_status_codes: [] # Defaults to 2xx
method: GET
no_follow_redirects: false
fail_if_ssl: false
fail_if_body_matches_regexp: []
fail_if_body_not_matches_regexp: []
fail_if_header_matches_regexp: {}
fail_if_header_not_matches_regexp: {}
icmp:
prober: icmp
timeout: 5s
icmp:
preferred_ip_protocol: “ip4″

# 启动Blackbox Exporter
# ./blackbox_exporter –config.file=blackbox.yml &

# 配置Prometheus监控网络
# vi prometheus.yml
scrape_configs:
– job_name: ‘blackbox’
metrics_path: /probe
params:
module: [http_2xx] # Look for a HTTP 200 response
static_configs:
– targets:
– http://fgedudb:3000 # Grafana
– http://fgedudb:9090 # Prometheus
relabel_configs:
– source_labels: [__address__]
target_label: __param_target
– source_labels: [__param_target]
target_label: instance
– target_label: __address__
replacement: fgedudb:9115 # The blackbox exporter’s real hostname:port

– job_name: ‘icmp’
metrics_path: /probe
params:
module: [icmp] # Use the icmp module
static_configs:
– targets:
– 127.0.0.1
– 192.168.1.1
relabel_configs:
– source_labels: [__address__]
target_label: __param_target
– source_labels: [__param_target]
target_label: instance
– target_label: __address__
replacement: fgedudb:9115 # The blackbox exporter’s real hostname:port

# 重启Prometheus
# kill -HUP $(pgrep prometheus)

# 导入网络监控仪表盘
# 1. 点击左侧菜单的”Dashboards”
# 2. 点击”Import”
# 3. 输入仪表盘ID:7587
# 4. 点击”Load”
# 5. 选择Prometheus数据源
# 6. 点击”Import”

5. 应用监控配置

应用监控主要关注应用的运行状态、响应时间、错误率等。

# 使用Prometheus和Grafana监控应用

# 安装Prometheus Client Library

## 对于Python应用
# pip install prometheus-client

# 示例Python应用代码
# vi app.py
from flask import Flask
from prometheus_client import Counter, Gauge, Histogram, Summary, start_http_server
import time

app = Flask(__name__)

# 定义指标
REQUEST_COUNT = Counter(‘request_count’, ‘Total request count’)
REQUEST_LATENCY = Histogram(‘request_latency_seconds’, ‘Request latency’)
ACTIVE_REQUESTS = Gauge(‘active_requests’, ‘Active requests’)
REQUEST_SIZE = Summary(‘request_size_bytes’, ‘Request size’)

@app.route(‘/’)
def hello():
REQUEST_COUNT.inc()
ACTIVE_REQUESTS.inc()

start_time = time.time()
time.sleep(0.1) # 模拟处理时间
latency = time.time() – start_time
REQUEST_LATENCY.observe(latency)

ACTIVE_REQUESTS.dec()
return ‘Hello, World!’

if __name__ == ‘__main__’:
# 启动Prometheus metrics端点
start_http_server(8000)
app.run(host=’0.0.0.0′, port=5000)

# 运行应用
# python app.py &

# 配置Prometheus监控应用
# vi prometheus.yml
scrape_configs:
– job_name: ‘python-app’
static_configs:
– targets: [‘fgedudb:8000’]

# 重启Prometheus
# kill -HUP $(pgrep prometheus)

# 导入应用监控仪表盘
# 1. 点击左侧菜单的”Dashboards”
# 2. 点击”Import”
# 3. 输入仪表盘ID:10283
# 4. 点击”Load”
# 5. 选择Prometheus数据源
# 6. 点击”Import”

6. 数据库监控配置

数据库监控主要关注数据库的性能、连接数、查询执行情况等。

# 使用Prometheus和Grafana监控MySQL

# 安装MySQL Exporter
# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
# tar xvfz mysqld_exporter-0.14.0.linux-amd64.tar.gz
# cd mysqld_exporter-0.14.0.linux-amd64

# 创建MySQL用户
# mysql -u root -p
CREATE USER ‘exporter’@’fgedudb’ IDENTIFIED BY ‘password’ WITH MAX_USER_CONNECTIONS 3;
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO ‘exporter’@’fgedudb’;
FLUSH PRIVILEGES;
EXIT;

# 创建配置文件
# vi .my.cnf
[client]
user=exporter
password=password

# 启动MySQL Exporter
# ./mysqld_exporter –config.my-cnf=.my.cnf &

# 配置Prometheus监控MySQL
# vi prometheus.yml
scrape_configs:
– job_name: ‘mysql’
static_configs:
– targets: [‘fgedudb:9104’]

# 重启Prometheus
# kill -HUP $(pgrep prometheus)

# 导入MySQL监控仪表盘
# 1. 点击左侧菜单的”Dashboards”
# 2. 点击”Import”
# 3. 输入仪表盘ID:7362
# 4. 点击”Load”
# 5. 选择Prometheus数据源
# 6. 点击”Import”

7. 告警配置与管理

告警配置用于在系统出现问题时及时通知运维人员。

# 配置Prometheus告警

# 创建告警规则文件
# vi alert.rules
groups:
– name: system-alerts
rules:
– alert: HighCPUUsage
expr: 100 – (avg by(instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m])) > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High CPU Usage on {{ $labels.instance }}”
description: “CPU usage is above 80% for 5 minutes”

– alert: HighMemoryUsage
expr: (node_memory_MemTotal_bytes – node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90
for: 5m
labels:
severity: warning
annotations:
summary: “High Memory Usage on {{ $labels.instance }}”
description: “Memory usage is above 90% for 5 minutes”

– alert: DiskSpaceLow
expr: (node_filesystem_size_bytes{mountpoint=”/”} – node_filesystem_free_bytes{mountpoint=”/”}) / node_filesystem_size_bytes{mountpoint=”/”} * 100 > 85
for: 10m
labels:
severity: critical
annotations:
summary: “Disk Space Low on {{ $labels.instance }}”
description: “Disk space usage is above 85% for 10 minutes”

# 配置Prometheus使用告警规则
# vi prometheus.yml
rule_files:
– “alert.rules”

alerting:
alertmanagers:
– static_configs:
– targets: [‘fgedudb:9093’]

# 安装Alertmanager
# wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz
# tar xvfz alertmanager-0.23.0.linux-amd64.tar.gz
# cd alertmanager-0.23.0.linux-amd64

# 配置Alertmanager
# vi alertmanager.yml
global:
resolve_timeout: 5m

route:
group_by: [‘alertname’]
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: ’email’

receivers:
– name: ’email’
email_configs:
– to: ‘admin@fgedu.net.cn’
from: ‘alertmanager@fgedu.net.cn’
smarthost: ‘smtp.fgedu.net.cn:587’
auth_username: ‘alertmanager’
auth_password: ‘password’
require_tls: true

# 启动Alertmanager
# ./alertmanager –config.file=alertmanager.yml &

# 重启Prometheus
# kill -HUP $(pgrep prometheus)

# 查看告警状态
# 打开浏览器,访问 http://fgedudb:9090/alerts

8. 监控仪表盘创建

创建自定义监控仪表盘可以更直观地展示系统状态。

# 在Grafana中创建自定义仪表盘

# 1. 登录Grafana
# 2. 点击左侧菜单的”Dashboards”
# 3. 点击”New dashboard”
# 4. 点击”Add new panel”
# 5. 在”Query”标签页中,选择Prometheus数据源
# 6. 输入查询语句,例如:
# 100 – (avg by(instance) (irate(node_cpu_seconds_total{mode=”idle”}[5m]))
# 7. 在”Visualization”标签页中,选择图表类型
# 8. 在”General”标签页中,设置面板标题
# 9. 点击”Apply”
# 10. 点击”Save dashboard”
# 11. 输入仪表盘名称,点击”Save”

# 导出仪表盘
# 1. 打开仪表盘
# 2. 点击右上角的”Settings”图标
# 3. 点击”JSON Model”
# 4. 复制JSON内容
# 5. 保存到文件中

# 导入仪表盘
# 1. 点击左侧菜单的”Dashboards”
# 2. 点击”Import”
# 3. 粘贴JSON内容或上传文件
# 4. 点击”Load”
# 5. 选择数据源
# 6. 点击”Import”

9. 监控最佳实践

以下是系统监控的一些最佳实践。

风哥风哥提示:
1. 全面监控:监控所有关键系统组件,包括服务器、网络、应用、数据库等
2. 合理设置告警阈值:根据系统正常运行时的基线设置合理的告警阈值
3. 分级告警:根据问题的严重程度设置不同级别的告警
4. 告警聚合:对相似的告警进行聚合,避免告警风暴
5. 自动修复:对一些常见问题实现自动修复
6. 定期回顾:定期回顾监控数据和告警,优化监控策略
7. 容量规划:根据监控数据进行容量规划,预测未来需求
8. 监控可视化:创建直观的监控仪表盘,便于快速了解系统状态
9. 灾备演练:定期进行灾备演练,测试监控系统的有效性
10. 文档完善:完善监控系统的文档,包括监控项、告警规则、处理流程等

10. 监控故障排查

当监控系统出现问题时,以下是一些常见的故障排查方法。

# 监控系统故障排查

# 1. 检查Prometheus状态
# curl http://fgedudb:9090/metrics

# 2. 检查Exporter状态
# curl http://fgedudb:9100/metrics # Node Exporter
# curl http://fgedudb:9104/metrics # MySQL Exporter
# curl http://fgedudb:9115/metrics # Blackbox Exporter

# 3. 检查Alertmanager状态
# curl http://fgedudb:9093/metrics

# 4. 检查Grafana状态
# curl http://fgedudb:3000/api/health

# 5. 检查网络连接
# ping fgedudb
# telnet fgedudb 9090
# telnet fgedudb 3000

# 6. 检查日志
# tail -f /var/log/prometheus/prometheus.log
# tail -f /var/log/grafana/grafana.log

# 7. 常见问题及解决方案:
# 监控数据不显示:检查Exporter是否运行,检查网络连接,检查Prometheus配置
# 告警不触发:检查告警规则是否正确,检查数据是否达到阈值,检查Alertmanager配置
# 仪表盘显示异常:检查数据源配置,检查查询语句,检查网络连接
# 系统性能下降:检查监控系统本身的资源使用,优化监控频率和数据存储

生产环境风哥建议:在生产环境中,建议使用分布式监控架构,确保监控系统本身的高可用性。同时,定期备份监控数据和配置,以便在发生故障时能够快速恢复。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息