0%

从零搭建运维监控系统-Zabbix

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案,另一个常用的为Nagios。

一、基础

  1. 监控的价值

    • 发现问题
    • 定位问题
    • 解决问题
    • 总结问题
  2. 监控流程

    • 数据采集:通过SNMP、Agent、ICMP、SSH等对系统进行数据采集
    • 数据存储:存储在MySQL、ES等
    • 数据分析:事后复盘分析故障,总结问题
    • 数据展示:Web界面展示,直观
    • 监控报警:电话、短信、邮件、报警等
    • 报警处理:根据故障级别处理
  3. 监控指标

    • 监控硬件:如CPU温度、物理磁盘、虚拟磁盘、主板温度、磁盘阵列等
    • 监控系统
      • CPU
      • 磁盘
      • 内存
      • 网络
      • 进程
    • 监控网络:多机房,各个机房之间的网络连通状态
    • 监控应用:如LVS、Haproxy、Docker、Nginx、PHP、MySQL等应用服务
    • 监控日志
      • 系统日志
      • 访问日志
      • 错误日志
      • 运行日志
      • 网络日志
    • 监控API:监控GET、POST、PUT、DELETE等请求,以可用性、正确性、响应时间为三大重要性能指标
    • 监控性能:如DNS响应时间、HTTP建立连接时间、页面性能指数、响应时间、可用率、元素大小等
    • 监控业务:如电商平台每分钟产生多少订单、每分钟注册多少用户、每天有多少推广活动等
  4. 常用工具

    • Zabbix:Zabbix是一个基于Web界面的提供分布式系统监控以及网络监控功能的企业级的开源解决方案,它能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位、解决存在的各种问题。它支持多种采集方式和采集客户端,有专用的Agent(代理),也可以支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理达到条件触发告警。

    • Nagios:Nagios是一个企业级的监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机参数以及服务,同时提供异常告警通知功能等。它的功能侧重于监控服务的可用性,能及时根据触发条件告警。

    • Cacti:Cacti是一套基于PHP、MySQL、SNMP、RRDtool等开发的网络流量监测图形分析工具,它通过snmpget来获取数据,使用RRDtool绘图(使用者无须了解RRDtool复杂的参数)。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP结合进行用户认证,同时也能自定义模板,在历史数据的展示监控方面其功能相当不错。

    • Prometheus:Prometheus是由SoundCloud开源的监控告警解决方案,它使用Go语言开发,是Google BorgMon监控系统的开源版本。它存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。Prometheus有一个大型社区支持,有来自超过700多家公司的6300+贡献者、13500+代码提交、7200+拉取请求。

    • Grafana:Grafana是一款采用Go语言编写的开源应用,主要用于大规模指标数据的可视化展现。它支持许多不同的数据源,每个数据源都有一个特定的查询编辑器,该编辑器定制的特性和功能是公开的特定数据来源。官方支持以下数据源:Graphite、Elasticsearch、InfluxDB、Prometheus、Cloudwatch、MySQL、OpenTSDB等。

二、安装Zabbix-Server

  1. 登录实例

  2. sudo -s

  3. wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb

  4. dpkg -i zabbix-release_latest_7.0+ubuntu22.04_all.deb

  5. apt update

  6. apt install zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

  7. 查看进程

    • ps -ef|grep php
    • ps -ef|grep nginx
    • ps -ef|grep mysql,没有进程
    • dpkg -l | grep mysql,显示已经安装zabbix-server-mysql
    • systemctl list-unit-files | grep mysql,没有找到启动项
    • dpkg -I zabbix-release_latest_7.0+ubuntu22.04_all.deb
  8. 安装MySQL

    • apt install -y mysql-server
    • mysql –version
    • mysql_secure_installation,进行基础设置
    • 登录MySQL:mysql -uroot -p,默认空密码
    • 修改密码:
      • ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘xxx’;
      • flush privileges;
      • 发现修改密码没生效
        • 重启服务:systemctl restart mysql,还是不行
        • 网上搜索:ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘xxx’;
        • 搞定
  9. 进行zabbix数据库设置

    • create database zabbix character set utf8mb4 collate utf8mb4_bin;
    • create user zabbix@localhost identified by ‘yyy’;
    • grant all privileges on zabbix.* to zabbix@localhost;
    • set global log_bin_trust_function_creators = 1;
    • quit;
  10. 导入数据库

    • zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql –default-character-set=utf8mb4 -uzabbix -p zabbix
    • 输入zabbix账号的密码:yyy
  11. 关闭选项

    • set global log_bin_trust_function_creators = 0;
    • quit;
  12. 设置zabbix

    • vim /etc/zabbix/zabbix_server.conf
    • DBPassword=yyy
  13. 设置nginx

    • vim /etc/zabbix/nginx.conf
    • listen 80;
    • server_name your_domain;
  14. 添加dns解析:sub_domain ip

  15. 开启zabbix服务

    • systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm
    • systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
  16. 访问:http://your_domain/

    • 访问异常,安全组开启80端口再次访问
    • 根据安装指引进行安装即可
  17. 安装完成,访问:http://your_domain/index.php

    • Admin/zabbix
  18. 设置中文

    • sudo apt install language-pack-zh-hans language-pack-zh-hans-base
    • sudo locale-gen zh_CN.UTF-8
    • sudo update-locale
    • locale -a | grep zh_CN
    • vim /etc/default/locale
    • LANG=zh_CN.UTF-8
    • systemctl restart zabbix-server zabbix-agent nginx php8.1-fpm

三、安装Zabbix-Agent

  1. 选择好系统版本、Zabbix版本、Agent

  2. sudo -s

  3. wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu22.04_all.deb

  4. dpkg -i zabbix-release_latest_7.0+ubuntu22.04_all.deb

    • dpkg -I zabbix-release_latest_7.0+ubuntu22.04_all.deb
  5. apt-cache madison zabbix-agent

  6. apt update

    • apt list –upgradable
  7. apt-cache madison zabbix-agent

  8. apt install zabbix-agent

    • 指定版本(有公网IP的情况):apt install zabbix-agent=1:7.0.16-1+ubuntu22.04
    • systemctl restart atd.service chrony.service cloudmonitor.service containerd.service cron.service fwupd-refresh.service multipathd.service packagekit.service polkit.service rsyslog.service serial-getty@ttyS0.service ssh.service systemd-journald.service systemd-networkd.service systemd-resolved.service tuned.service udisks2.service
  9. systemctl restart zabbix-agent

  10. systemctl enable zabbix-agent

  11. zabbix_agentd -V

  12. vim /etc/zabbix/zabbix_agentd.conf

    • Server=your_server_ip
  13. systemctl restart zabbix-agent

  14. 在Zabbix后台添加主机,配置zabbix-agent信息

  15. 卸载

    • sudo systemctl stop zabbix-agent
    • sudo apt-get remove –purge zabbix-agent
    • sudo apt-get autoremove
    • sudo rm -rf /etc/zabbix/zabbix_agentd.conf
    • sudo rm -rf /etc/zabbix/zabbix_agentd.d/
    • zabbix_agentd -V
    • apt-cache madison zabbix-agent

四、参考

  1. 参考一
  2. 参考二
  3. 参考三
  4. 参考四
  5. 参考五
  6. 参考六
  7. 参考七