0%

Zabbix监控系统


简介

Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数, 保证服务器系统的安全运营; 并提供灵活的通知机制以让系统管理员快速定位, 解决存在的各种问题.

监控方式

主动模式

  • 主动检测: 相对于agent而言; agent(active), agent向server请求与自己相关监控项配置, 主动地将server配置的监控项相关的数据发送给server;

  • 主动监控能极大节约监控server的资源

被动模式

  • 被动检测: 相对于agent而言; agent, server向agent请求获取配置的各监控项相关的数据, agent接收请求、获取数据并响应给server;

Zabbix架构

Zabbix Server

  • Zabbix server是agent程序报告系统可用性、系统完整性和统计数据的核心组件, 是所有配置信息、统计信息和操作数据的核心存储器.

Zabbix 数据库存储

  • 所有配置信息和Zabbix收集到的数据都被存储在数据库中

Zabbix Web 界面

  • 为了从任何地方和任何平台都可以轻松的访问Zabbix, 官方提供基于Web的Zabbix界面. 该界面是Zabbix Server的一部分, 通常(但不一定)跟Zabbix Server运行在同一台物理机器上.

  • 如果使用SQLite, Zabbix Web界面必须要跟Zabbix Server运行在同一台物理机器上.

Zabbix Proxy 代理服务器

  • Zabbix proxy可以替Zabbix Server收集性能和可用性数据. Proxy代理服务器是Zabbix软件可选择部署的一部分; 当然, Proxy代理服务器可以帮助单台Zabbix Server分担负载压力.

Zabbix Agent 监控代理

  • Zabbix agents监控代理部署在监控目标上, 能够主动监控本地资源和应用程序, 并将收集到的数据报告给Zabbix Server.

Zabbix 数据流

  • 监控方面, 为了创建一个监控项(item)用于采集数据, 必须先创建一个主机(host).

  • 告警方面, 在监控项里创建触发器(trigger), 通过触发器(trigger)来触发告警动作(action). 因此, 如果你想收到Server XCPU负载过高的告警, 必须满足以下条件:
    ​ 1.为Server X创建一个host并关联一个用于对CPU进行监控的监控项(Item)
    ​ 2.创建一个Trigger, 设置成当CPU负载过高时会触发.
    ​ 3.Trigger被触发, 发送告警邮件.

Zabbix监控系统部署

搭建Zabbix监控系统环境

搭建环境:
名称IP配置服务角色备注
Server192.168.100.10zabbix-server开启监控功能
Node1192.168.100.11zabbix-agent开启
Node2192.168.100.12zabbix-agent开启

所有主机

1
2
3
4
5
6
7
8
9
10
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld.service

# 配置通过主机名进行通信
cat >> /etc/hosts <<-EOF
192.168.100.10 Server
192.168.100.11 Node1
192.168.100.12 Node2
EOF

Server

配置Yum仓库

1
2
3
4
5
6
7
yum install -y wget
wget https://mirrors.aliyun.com/zabbix/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
rpm -ivh zabbix-release-4.4-1.el7.noarch.rpm && rm -rf zabbix-release-4.4-1.el7.noarch.rpm

#更新Yum仓库
yum repolist

安装Zabbix

上传Zabbix的RPM包到linux中

zabbix-agent-4.4.4-1.el7.x86_64.rpm
zabbix-get-4.4.4-1.el7.x86_64.rpm
zabbix-sender-4.4.4-1.el7.x86_64.rpm
zabbix-server-mysql-4.4.4-1.el7.x86_64.rpm
zabbix-web-4.4.4-1.el7.noarch.rpm
zabbix-web-mysql-4.4.4-1.el7.noarch.rpm
1
2
3
4
5
while [ $? != 0 ]; do yum -y install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql &> /dev/null ; done
yum remove -y zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql

ls -l *.rpm
rpm -Uvh --force --nodeps *.rpm && rm -rf *.rpm

安装设置数据库

  1. 安装最新版本的Mariadb

    1
    2
    3
    4
    5
    6
    7
    8
    9
    cat > /etc/yum.repos.d/mariadb.repo <<-EOF
    [mariadb]
    name = MariaDB
    baseurl = https://mirrors.ustc.edu.cn/mariadb/yum/10.4/centos7-amd64
    gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    EOF

    yum install -y MariaDB-server MariaDB-client
  2. 修改配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    vi /etc/my.cnf.d/server.cnf
    [mysqld]
    # 跳过主机名解析
    skip_name_resolve = ON
    # 开启独立表空间
    innodb_file_per_table = ON
    # 缓存池大小
    innodb_buffer_pool_size = 256M
    # 最大连接数
    max_connections = 2000
    # 开启二进制日志
    log-bin = master-log
  3. 重启数据库服务

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    systemctl restart mariadb
    mysql_secure_installation

    :<<-EOF
    Enter current password for root (enter for none):
    OK, successfully used password, moving on...

    Switch to unix_socket authentication [Y/n] Y
    Enabled successfully!

    Change the root password? [Y/n] n
    ... skipping.

    Remove anonymous users? [Y/n] Y
    ... Success!

    Disallow root login remotely? [Y/n] n
    ... skipping.

    Remove test database and access to it? [Y/n] Y
    - Dropping test database...

    Reload privilege tables now? [Y/n] Y
    ... Success!
    EOF
  4. 创建数据库并授权账号

    1
    2
    3
    4
    5
    6
    7
    mysql
    create database zabbix character set 'utf8';
    grant all on zabbix.* to 'zbxuser'@'192.168.100.%' identified by 'zabbix';
    # Zabbix和Mariadb在同一台主机下
    grant all on zabbix.* to 'zbxuser'@'localhost' identified by 'zabbix';
    flush privileges;
    exit
  5. 导入Zabbix服务表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cp `rpm -ql zabbix-server-mysql | grep "create"` ./
    gzip -d create.sql.gz && rm -rf create.sql.gz
    head create.sql

    sed -i '1i USE zabbix' create.sql
    head create.sql

    mysql -uzbxuser -h192.168.100.10 -pzabbix < create.sql && rm -rf create.sql
    mysql -uzbxuser -h192.168.100.10 -pzabbix
    show databases;
    use zabbix;
    show tables;
    exit

配置Server端

  1. 修改配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    cd /etc/zabbix/
    cp zabbix_server.conf{,.back}

    :<<-EOF
    默认监听端口
    ListenPort=10051

    发采样数据请求的IP
    SourceIP=192.168.100.10
    EOF

    sed -i '/ListenPort=/c ListenPort=10051' zabbix_server.conf
    sed -i '/SourceIP=/c SourceIP=192.168.100.10' zabbix_server.conf
  2. Zabbix日志

  • 默认用文件记录, 也可以发送给rsyslog日志记录系统, 如果选择默认, 则日志存放在LogFile=/var/log/zabbix/zabbix_server.log中, 也可以自己设置.
  1. 日志滚动
  • 默认值为1, 表示滚动. 设为0则表示不滚动. 当数据特别多的时候, 也可以设置成为1, 然后在Maximum size of log file in MB.设置当数据文件最大到多少时会自动滚动.
    ### Option: LogFileSize
    #       Maximum size of log file in MB.
    #       0 - disable automatic log rotation.
    #
    # Mandatory: no
    # Range: 0-1024
    # Default:
    # LogFileSize=1
    
    LogFileSize=0
  1. 日志级别
  • 一共有6个级别, 可以根据自己的需要来设置级别. 其中0表示输出最少的信息, 5表示输出最详细的信息, 默认值为3, 设置为3的话就表示, 0、1、2、3四个级别都显示. 考虑到生产系统中的压力时, 这里的信息, 如果没有必要的话, 越简单越好, 只要在出错的时候, 可以依据其进行排错即可.
    ### Option: DebugLevel
    #       Specifies debug level:
    #       0 - basic information about starting and stopping of Zabbix processes
    #       1 - critical information
    #       2 - error information
    #       3 - warnings
    #       4 - for debugging (produces lots of information)
    #       5 - extended debugging (produces even more information)
    #
    # Mandatory: no
    # Range: 0-5
    # Default:
    # DebugLevel=3
    
  1. 数据库相关的设置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    :<<-EOF
    数据库对外的主机
    DBHost=192.168.100.10

    数据库名称
    DBName=zabbix

    数据库用户
    DBUser=zbxuser

    数据库密码
    DBPassword=zabbix

    数据库启动端口
    DBPort=3306
    EOF

    sed -i '/DBHost=/c DBHost=192.168.100.10' zabbix_server.conf
    sed -i '/DBName=z/c DBName=zabbix' zabbix_server.conf
    sed -i '/^DBUser=/c DBUser=zbxuser' zabbix_server.conf
    sed -i '/DBPassword=/c DBPassword=zabbix' zabbix_server.conf
    sed -i '/DBPort=/c DBPort=3306' zabbix_server.conf
    cat zabbix_server.conf | grep -Ev '#|^$'
  2. 启动服务并确认服务端口是否开启

    1
    2
    3
    systemctl start zabbix-server.service
    systemctl status zabbix-server.service
    ss -tnul | grep 10051

配置Web GUI

  1. 查找Web GUI的配置文件

    1
    rpm -ql zabbix-web | grep "zabbix.conf"
  2. 编辑配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    cat /etc/httpd/conf.d/zabbix.conf
    :<<-EOF
    <IfModule mod_php5.c>
    脚本执行的最大时长
    php_value max_execution_time 300
    内存大小
    php_value memory_limit 128M
    php_value post_max_size 16M
    php_value upload_max_filesize 2M
    php_value max_input_time 300
    php_value max_input_vars 10000
    php_value always_populate_raw_post_data -1
    设置时区
    # php_value date.timezone Europe/Riga
    </IfModule>
    EOF

    时区是一定要设置的, 这里被注释掉是因为要在php的配置文件中设置时区, 如果在php配置文件中设置时区, 则对所有的php服务均有效, 如果在zabbix.conf中设置时区, 则仅对zabbix服务有效.

  3. 在php配置文件中设置时区后, 启动httpd服务.

    1
    2
    3
    sed -i '/;date.timezone =/c date.timezone = Asia/Shanghai' /etc/php.ini
    systemctl enable httpd
    systemctl start httpd
  4. 浏览器访问并进行初始化设置

    http://192.168.100.10/zabbix

配置agent端

  1. 确认配置文件

    1
    2
    rpm -ql zabbix-agent | grep "zabbix_agentd.conf"
    # /etc/zabbix/zabbix_agentd.conf
  2. 编制配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd /etc/zabbix/
    cp zabbix_agentd.conf{,.back}

    sed -i "/^Server=127.0.0.1/s/127.0.0.1/192.168.100.10/" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^# ListenPort=10050/s/#//" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^# ListenIP=0.0.0.0/s/#//" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^# StartAgents=3/s/#//" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^ServerActive=127.0.0.1/s/127.0.0.1/192.168.100.10/" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^# Hostname=/c Hostname=Server" /etc/zabbix/zabbix_agentd.conf
  3. 启动服务并查看端口是否已经开启

    1
    2
    systemctl start zabbix-agent.service
    ss -tunl | grep 10050

Node

配置agent端

  1. 上传zabbix-agens、zabbix-sender的RPM包, 并安装.

    1
    2
    ls -l *.rpm
    rpm -Uvh --force --nodeps *.rpm
  2. 确认配置文件

    1
    2
    rpm -ql zabbix-agent | grep "zabbix_agentd.conf"
    # /etc/zabbix/zabbix_agentd.conf
  3. 编制配置文件

    1
    2
    3
    4
    5
    6
    7
    8
    cd /etc/zabbix/
    cp zabbix_agentd.conf{,.back}

    sed -i "/^Server=127.0.0.1/s/127.0.0.1/192.168.100.10/" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^# ListenPort=10050/s/#//" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^# ListenIP=0.0.0.0/s/#//" /etc/zabbix/zabbix_agentd.conf
    sed -i "/^# StartAgents=3/s/#//" /etc/zabbix/zabbix_agentd.conf
    # 将"Hostname="修改成对应的主机名
  4. 启动服务并查看端口是否已经开启

    1
    2
    systemctl start zabbix-agent.service
    ss -tunl | grep 10050

Node1

1
sed -i "/^# Hostname=/c Hostname=Node1" /etc/zabbix/ssszabbix_agentd.conf

Node2

1
sed -i "/^# Hostname=/c Hostname=Node2" /etc/zabbix/zabbix_agentd.conf

配置Zabbix监控系统s

修改密码及中文显示

Password: zbx123mm

创建主机及主机群组

监控项

中文乱码解决

Windows中找到字体文件
Win+R:C:\Windows\Fonts
上传到linux中后修改权限
chmod 666 字体文件名

1
2
3
4
5
6
whereis zabbix | grep "/share/zabbix"
find /usr/share/zabbix -name fonts
cd /usr/share/zabbix/assets/fonts
rm -f /etc/alternatives/zabbix-web-font
ln -s /usr/share/zabbix/assets/fonts/SIMFANG.TTF /etc/alternatives/zabbix-web-font
systemctl restart zabbix-server

CPU中断数

key值可以直接在网页上设置(服务器自动执行), 也可以使用命令行命令(手动执行)来获取:

1
zabbix_get -s 192.168.100.10 -p 10050 -k "system.cpu.intr"

在agent端, 也可以使用命令来查看intr的速率变化:

1
vmstat 1

网卡端口流量

1
zabbix_get -s 192.168.100.10 -p 10050 -k "net.if.in[ens33,packets]"
-------------------本文结束 感谢阅读-------------------