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
7、开启报警声音
8、聚合图形的创建
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 监控 Nginx 性能
被监控端安装了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 监控模板(导入)
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 监控 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、设置前端创建脚本媒介
# 再添加以下 3 个参数,分别对应脚本需要的 3 个参数:收件人地址、主题、详细内容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
5、创建动作
# 标题改为:
故障{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}
# 表示触发 5 次动作,每隔 120 秒触发一次,告警发给 admin 用户,用”钉钉”媒介发送
# 标题改为
恢复{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、用户权限赋予
关闭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}
6、用户权限赋予
[外链图片转存中…(img-bN9iZ9Lj-1629684174076)]
[外链图片转存中…(img-F4Ljhou9-1629684174077)]
[外链图片转存中…(img-zxeOM5qY-1629684174077)]
关闭httpd测试钉钉是否报警