mysql&node监控

配置文件

1.监控简介

复制代码
1.通过服务或者脚本对某⼀指标进⾏分析,并对指标进⾏留存,⽅便故障回溯,分析,性能优化等等 
2.⽬的
    # 对系统不间断监控:采集指标 
    # 实时反馈系统状态:分析指标,得出结论 
    # 保证服务可靠安全:保证服务安全,⽐如mysql服务稳定运⾏ 
    # 保证业务稳定运⾏:报警及故障处理,业务访问数据库稳定 
3.监控⽅法
    # 确定监控对象 
    # 定义性能基准指标 
    # 定义报警阈值 
    # 故障处理 
4.核⼼
  # 定位 发现 解决 复盘 
5.分类 
    # 开源⼯具监控(通⽤组合) 
    zabbix+mysql+grafana 
    promethus+influxdb+grafana 
    第三⽅公司监控:听云等
复制代码

2.监控指标

复制代码
1.服务器运⾏状态 
    # CPU
    # 内存
    # IO 
    # ⽹卡
    # TCP 
2.MySQL主要监控指标 # QPS和TPS # InnoDB状态 # mysql连接 # # 总连接,活跃连接 # Lick - slowsql # 主从监控 3.监控⼯具选择 # zabbix:Percona有官⽅监控模板 # Prometheus(个⼈推荐) + grafana + 官⽅有mysqld_exporter
4.指标来源 # show global status # performance_schema # information_schame
复制代码

3.部署&启动

复制代码
1.安装&启动prometheus
    wget https://github.com/prometheus/prometheus/releases/download/v2.35.0/prometheus-2.35.0.linux-amd64.tar.gz
    
    启动prometheus
        nohup /data/monitor/prometheus/prometheus --storage.tsdb.retention=30d --web.listen-address=0.0.0.0:9090 --web.enable-admin-api  --log.format=json --web.enable-lifecycle --config.file=/data/monitor/prometheus/prometheus.yml 2>/data/monitor/prometheus/prometheus.log &
        --storage.tsdb.retention=30 # 只保留30天的数据
        --web.enable-admin-api      # 控制对admin HTTP API的访问,其中包括删除时间序列等功能
        --web.enable-lifecycle      # 支持热更新,直接执行localhost:9090/-/reload立即生效
        
    查看服务状态 
        http://172.29.64.41:9090/targets
        
    pro重新加载配置 
        curl -X POST http://172.29.64.41:9090/-/reload

    curl -X POST -g 'http://172.29.64.41:9090/api/v1/admin/tsdb/delete_series?match[]={instance="10.244.2.158:9090"}'
        # 删除instance=''的数据
        
    curl -X POST -g 'http://172.29.64.41:9090/api/v1/admin/tsdb/delete_series?match[]={job="172.29.64.42-5306"}'
        # 删除job=''的数据
        
    curl -X POST -g 'http://localhost:9090/api/v1/admin/tsdb/delete_series?match[]={__name__=~".+"}' # 删除全部数据
        # 不过需要注意的是上面的 API 调用并不会立即删除数据,实际数据任然还存在磁盘上,会在后面进行数据清理。
    
    https://my.oschina.net/54188zz/blog/3070563 # prometheus中监控参数修改

2.安装&启动node_exporter
    # node_exporter 帮助文档 https://github.com/prometheus/node_exporter 
    # 默认端口9100
    wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz    
    
    nohup /data/monitor/node_exporter/node_exporter --log.level=error 2>/data/monitor/node_exporter/error.log &
    nohup /data/soft/node_exporter/node_exporter --web.config=web-config.yml 2>/data/soft/node_exporter/node_exporter.log & # 已配置文件方式启动
    
    添加到prometheus # 需要重新启动prometheus或者reload
        - job_name: node-172.29.64.41
          static_configs:
            - targets: ['172.29.64.41:9100'] # 需要写ip地址,不要写domain
            
    curl http://172.29.64.41:9100/metrics

3.安装&启动mysqld_exporter
    # mysqld_exporter帮助文档 https://github.com/prometheus/mysqld_exporter 
    # 默认端口9104
    # 注意:
        # mysqld_exporter可以监控一台主机上的多个mysql实例,通过配置文件名称和port来区分多个服务器上的mysql实例
        # 创建监控用户
            # create user root@'%' identified by 'root@123';
            # 监控用户权限为:GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO root@'%';

    wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
        
    1.创建配置文件
        vim /data/soft/mysqld_exporter/conf/mysql-5306.cnf 
        [client]
        host=172.29.64.41
        user=root
        password=root@123
        port=5306

    2.启动mysqld_exporter
        nohup /data/monitor/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/monitor/mysqld_exporter/conf/5306.cnf --web.listen-address=:9104 2>/data/monitor/mysqld_exporter/mysqld_exporter.log &

    3.验证
        curl http://101.43.2.244:9104/metrics |grep -v "^#"


    4.添加到prometheus # 需要重新启动prometheus或者reload
    - job_name: 'mysql' 
      static_configs:
        - targets: ['172.29.64.41:9104']

    curl http://172.29.64.41:9004/metrics


4.安装grafana
    wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.2.linux-amd64.tar.gz
    
    # 默认端口3000
    nohup /data/monitor/grafana/bin/grafana-server 2>/data/monitor/grafana/grafana.log &
    
    # 打开grafana验证,admin/admin/
        http://172.29.64.41:3000
    
    # grafana中的模板地址
        https://grafana.com/grafana/dashboards/ 
        
        # mysql监控模板
            https://grafana.com/grafana/dashboards/7371 # 主从监控
            https://grafana.com/grafana/dashboards/7362 # Overview监控
            https://grafana.com/grafana/dashboards/7365 # InnoDB监控
            
        
        
        # node监控模板
            https://grafana.com/grafana/dashboards/12633
            https://grafana.com/grafana/dashboards/11074        
            https://grafana.com/grafana/dashboards/16098 # 基于consul node监控
                # https://github.com/starsliao/ConsulManager
                # https://grafana.com/dashboards/8919 

  5.配置报警规则
    在prometheus的配置文件中的rules标签,添加如下内容
    rule_files:
    - /data/monitor/prometheus/rules/*.yml # alert规则配置文件,然后重启prometheus。

    prometheus配合alertmanager这个组件报警,报警规则需要手动编写,这需要对prometheus+alertmanager有一定的了解,grafana配合SaaS模式的云告警平台onealert报警,onealert也是需要时间熟悉的

    其他选项
      https://blog.csdn.net/aixiaoyang168/article/details/103022342
      https://www.cnblogs.com/zqj-blog/p/12205063.html

      https://awesome-prometheus-alerts.grep.to/rules#mysql # MySQL报警规则
      https://blog.csdn.net/weixin_29057619/article/details/113185371 # prometheus + alertmanager + 企业微信报警

复制代码

4.node_export使用systemctl来管理

复制代码
touch /usr/lib/systemd/system/node_exporter.service 

vim /usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_exporter
After=network.target
[Service]
Type=simple
User=root
ExecStart=/data/monitor/node_exporter/node_exporter --log.level=error
Restart=on-failure
[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl enable node_exporter.service
systemctl start/stop/status node_exporter.service
复制代码

 

pass

posted @   thep0st  阅读(75)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示