Zabbix安装部署

1、初始化系统设置(centos7)

# 关闭防火墙、selinux,并设置永久关闭
$ systemctl stop firewalld
$ systemctl disable firewalld
$ setenforce 0 
$ sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

2、安装LAMP环境

# 添加网络yum源,并安装LAMP相关服务(本文用的是rpm包安装)
$ wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
$ yum clean all
$ yum makecache
$ yum -y install mariadb mariadb-server httpd php php-mysql
# 启动相关服务,设置开机自启
$ systemctl enable httpd
$ systemctl restart httpd
$ systemctl enable mariadb
$ systemctl restart mariadb
# 初始化mariadb数据库,设置数据库密码,要记住。
$ mysql_secure_installation
# 查看是否生成数据库
$ mysql -u root -p
$ mariadb>show databases;

3、Zabbix初始化

1)安装zabbix软件包

# 安装zabbix的yum源仓库
$ rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
# 导入Zbbix的yum密钥
$ rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
# 安装软件包。
$ yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

2)初始化数据库

$ mysql -u root -p
$ CREATE DATABASE zabbix DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
 >show databases;
$ grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; 
# ''单引号内为zabbix的密码,配置zabbix时用到

3)还原数据库、

$ cd /usr/share/doc/zabbix-server-mysql-3.2.11
$ zcat create.sql.gz | mysql -uroot -p zabbix
# 查看是否还原所有表
$ mysql -u root -p
$ use zabbix
$ show tables;

4)配置并启动zabbix服务

# 配置zabbix服务
$ vim /etc/zabbix/zabbix_server.conf
	81  DBHost=localhost #数据库地址修改为某服务器的ip也可
   91  DBName=zabbix
   107 DBUser=zabbix
   115 DBPassword=zabbix #添加设置的密码
# 启动zabbix服务
$ systemctl start zabbix-server
$ systemctl enable zabbix-server
# 若有报错,请检查基础环境的配置(iptables,selinux)。或其上面所做的内容。

5)编辑 zabbix 前端 php 配置

$ vim /etc/httpd/conf.d/zabbix.conf
  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 always_populate_raw_post_data -1
  php_value date.timezone Asia/Shanghai #修改时区

6)调整时间同步

$ yum -y install ntpdate
$ ntpdate -u ntp1.aliyun.com
$ date
$ vim /etc/chrony.conf
    server ntp1.aliyun.com iburst
    allow 192.168.66.0/24
    local staratun 10
$ systemctl restart chronyd
$ systemctl enable chronyd

7)重启 Apache 服务生效

$ systemctl restart httpd

8)测试访问

192.168.66.111
192.168.66.111/zabbix
$ vim /etc/httpd/conf/httpd.conf#修改默认主页
    95 ServerName zabbix.wyy.com
    119 DocumentRoot "/usr/share/zabbix"
$ systemctl restart httpd
192.168.66.111

4、添加本机到监控端

$ vim /etc/zabbix/zabbix_agentd.conf
   LogFile=/tmp/zabbix_agentd.log
   95 Server= 192.168.66.111
   136 ServerActive= 192.168.66.111
   147 Hostname=192.168.66.111  
$ systemctl enable zabbix-agent
$ systemctl start zabbix-agent
$ netstat -antp | grep 10050

5、修改中文乱码

方法一:
#拷贝windows字体
Win+R > fonts > 拷贝微软雅黑字体改名为 SIMSUN.TTC

$ cd /usr/share/zabbix/fonts
$ mkdir back
$ mv * back
# 上传拷贝的字体
$ mv SIMSUN.TTC graphfont.ttf #改名,就识别了
$ chmod a+x graphfont.ttf

# 方法二
$ vim /usr/share/zabbix/include/defines.inc.php
修改 zabbix php 页面配置,将'graphfont' 修改为 SIMSUN define('ZBX_GRAPH_FONT_NAME', 'msyh');

# 默认用户密码
  Admin
  zabbix

6、添加客户端(自动发现)

# 开启两台虚拟机用作客户端192.168.190.111、112
# 两台机器安装并开启httpd
$ yum -y install httpd
$ service httpd start
$ chkconfig httpd on
$ echo "123" >> /var/www/html/index.html
$ echo "4556" >> /var/www/html/index.html
$ curl localhost
# 分别安装agent端(上传安装)
$ yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
$ vim /etc/zabbix/zabbix_agentd.conf
   LogFile=/tmp/zabbix_agentd.log
   95 Server= 192.168.66.111
   136 ServerActive= 192.168.66.111
   147 Hostname=192.168.66.111  #客户端ip另一个为112
$ chkconfig zabbix-agent on
$ service zabbix-agent start
$ netstat -antp | grep 10050    
# Centos6 zabbix yum 源
$ cat /etc/yum.repo.d/zabbix.repo
$ rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhechkl/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpm

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix 数据库奔溃会丢失数据吗_02


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix 数据库奔溃会丢失数据吗_03


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix 数据库奔溃会丢失数据吗_04


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_05


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_linux_06


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_07

7、开启报警声音

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_08

8、聚合图形的创建

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_09


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix_10


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_linux_11

Zabbix 监控 Mysql 数据库

1、环境准备

两台虚拟机
服务器:安装server(安装同上)
客户端:安装agent
# 安装agent
#上传zabbix-agent
$ yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
$ vim /etc/zabbix/zabbix_agentd.conf
   LogFile=/tmp/zabbix_agentd.log
   95 Server= 192.168.66.111
   136 ServerActive= 192.168.66.111
   147 Hostname=192.168.66.11
$ chkconfig zabbix-agent on
$ service zabbix-agent start
$ netstat -antp | grep 10050
 # 两台服务器同步时间

2、创建用户,赋予能够被 Zabbix 监控的权利

$ yum -y install mysql mysql-server
$ service mysqld start
$ chkconfig mysqld on
$ mysqladmin -uroot password 123
$ mysql -uroot -p
$ mysql> GRANT ALL ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix';
$ mysql> FLUSH PRIVILEGES;

3、配置用户连接信息

$ vi /etc/zabbix/.my.cnf
   [client]
   user=zabbix
   password=zabbix

4、修改 userparameter_mysql.conf 文件

$ cd /etc/zabbix/zabbix_agentd.d
# mv userparameter_mysql.conf_default userparameter_mysql.conf
$ cp -a userparameter_mysql.conf userparameter_mysql.conf.back
$ vi userparameter_mysql.conf
    修改两处HOME=为/etc/zabbix
$ service zabbix-agent restart

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_12

监控测试

配置--主机---创建主机增加数据----添加模版

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix 数据库奔溃会丢失数据吗_13


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_14

Zabbix 监控 Nginx 性能

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix_15

被监控端安装了zabbix-agent,nginx服务器安装了stub-status模块(获取数据访问量),通过脚本抓取数据,连接zabbix-agent连接,zabbix-server通过访问zabbix-agent的10050端口获取通过脚本定义的键值对,获取对应的数据。server端通过web页面展示

1、实验准备

#时间同步
#两台虚拟机
server:192.168.66.111
agent:192.168.66.11
# 安装agent
#上传zabbix-agent
$ yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
$ vim /etc/zabbix/zabbix_agentd.conf
   LogFile=/tmp/zabbix_agentd.log
   95 Server= 192.168.66.111
   136 ServerActive= 192.168.66.111
   147 Hostname=192.168.66.11
$ chkconfig zabbix-agent on
$ service zabbix-agent start
$ netstat -antp | grep 10050

2、开启 Nginx 自带状态统计模块

#上传、源码编译安装nginx
$ tar -xf nginx-1.13.8....
$ yum -y install gcc*
$ yum -y install pcre pcre-devel zlib zlib-devl
$ useradd -s /sbin/nologin -M nginx
$ cd nginx-1.13.8
$ ./configure --help | grep status
$ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
$ make
$ make install

$ vim /usr/local/nginx/conf/nginx.conf # 在location下创建新的区域,开启状态统计模块
# sendfile on 注释掉若果内存有就不会调用,影响判断
location /ngx_status {
    stub_status on;
}

$ /usr/local/nginx/sbin/nginx -t
$ /usr/local/nginx/sbin/nginx
# 浏览器查看状态统计页面
192.168.66.11/nginx_status
# 另开一台虚拟机模拟访问
$ while 2>1; do curl 192.168.66.11/index.html; done

3、编写客户端脚本

$ cd /etc/zabbix/zabbix_agentd.d
$ vim cx.sh
#!/bin/bash
HOST="127.0.0.1"
PORT="80"
# 检测 nginx 进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测 nginx 性能
function active {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# 执行function
$1

$ chmod a+x cx.sh
$ ./cx.sh
$ ./cx.sh requests # 抓取请求数

4、在客户端添加自定义脚本规则

$ mv cx.sh /etc/zabbix/zabbix_agentd.d
$ /bin/bash /etc/zabbix/zabbix_agentd.d/cx.sh # 脚本的调用路径
$ vim /etc/zabbix/zabbix_agentd.conf
    284 UserParameters=1 # 取消注释将0改为1,将模版打开0关闭1打开
    295 UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/cx.sh $1
    # 开启键值 = nginx.status[*] * 为通过脚本获取的值
$ chown zabbix:zabbix /etc/zabbix/zabbix_agentd.d/cx.sh
$ service zabbix-agent restart

5、在服务器端使用 zabbix-get 测试脚本获取数据情况

$ yum -y install zabbix-get # 若安装不了可能是没哟装zabbix。repo
$ zabbix_get -s 192.168.66.11 -k 'nginx.status[ping]' # nginx存在返回值为1,不存在返回值为0
$ zabbix_get -s 192.168.66.11 -k  'nginx.status[accepts]' #查看请求数
#/usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k  'nginx.status[accepts]'
#/usr/local/zabbix-3.0.0/bin/zabbix_get -s 10.10.1.121 -k 'nginx.status[ping]'

6、配置 Nginx 服务器并添加 Nginx 监控模板(导入)

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_16


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix_17


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_18


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_19


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_20


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_21


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_22


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_23

7、高可用节点测试

$ vim /etc/zabbix/zabbix_agentd.d/cx.sh # 脚本结尾添加
     function checkmaster {
         echo "当前lvs集群高可用节点处于192.168.66.11"
         }
$ zabbix_get -s 192.168.66.11 -k  'nginx.status[checkmaster]'

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_24

Zabbix 监控 Windows 主机

c:\bin\win64\zabbix_agentd.exe -c c:\conf\zabbix_agentd.win.conf -i
c:\bin\win64\zabbix_agentd.exe -c c:\conf\zabbix_agentd.win.conf -s

Zabbix 钉钉报警联立

1、建立钉钉群组,添加钉钉机器人

2、配置告警脚本路径

$ vim /etc/zabbix/zabbix_server.conf # 查看脚本存路径
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
$ cd /usr/lib/zabbix/alertscripts/
$ vim token.sh

#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=758cefbfde6108910a29fad7e35edd9ff76255df5ac16871ad7cf03b2262a7fc' \
    -H 'Content-Type: application/json' \
    -d '
    {"msgtype": "text",
        "text": {
            "content": "'"$text"'"
        },
        "at":{
            "atMobiles": [ 
                "'"$1"'" 
        ],
        "isAtAll": false
        }
    }'

3、配置执行文件权限与归属

$ chown zabbix.zabbix token.sh
$ chmod a+x token.sh
$ ./tokem.sh 18060718773 akjdflsajf zabbix
# 执行脚本 用户  内容 机器人设置的关键字

4、设置前端创建脚本媒介

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_apache_25

# 再添加以下 3 个参数,分别对应脚本需要的 3 个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix_26

5、创建动作

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix_27

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_28

# 标题改为:
故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
# 信息改为:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_29

# 表示触发 5 次动作,每隔 120 秒触发一次,告警发给 admin 用户,用”钉钉”媒介发送

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_30


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_nginx_31

# 标题改为
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
# 信息改为
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

6、用户权限赋予

zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix 数据库奔溃会丢失数据吗_32


zabbix 数据库奔溃会丢失数据吗 zabbix数据库重新初始化_zabbix_33

关闭httpd测试钉钉是否报警
[外链图片转存中...(img-Puh3RtKb-1629684174074)]



[外链图片转存中...(img-xA118sVH-1629684174075)]

```shell
# 标题改为
恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
# 信息改为
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}