centos安装zabbix
iso:centos7.9
服务端
1、关闭selinix 关闭防火墙
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
2、下载zabbix安装源,安装zabbix-sever
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-server-mysql zabbix-agent -y
yum install centos-release-scl -y
将前端的repo开启
vi /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 "#0改1"
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
安装zabbix-前端
yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl -y
3、安装数据库,配置数据库
yum install mariadb-server -y
systemctl start mariadb
mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
mysql
MariaDB [(none)]> use zabbix
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [zabbix]> show tables;
MariaDB [zabbix]> exit;
4、zabbix中的简单配置
填入数据库密码
vi /etc/zabbix/zabbix_server.conf
DBUser=zabbix
### Option: DBPassword
# Database password.
# Comment this line if no password is used.
#
# Mandatory: no
# Default:
DBPassword=password "#填入zabbix密码"
更改前端用户和时区
vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[zabbix]
user = apache
group = apache
listen = /var/opt/rh/rh-php72/run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx "#添加nginx"
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
php_value[session.save_handler] = files
php_value[session.save_path] = /var/opt/rh/rh-php72/lib/php/session/
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[date.timezone] = Asia/Shanghai "# 去掉注释符,改为上海时区"
更改前端端口
vi /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
server {
listen 80; " #取消注释"
server_name localhost; "#取消注释"
root /usr/share/zabbix;
删除原有nginx的默认端口
vi /etc/opt/rh/rh-nginx116/nginx/nginx.conf
:38,81 s/^/#/g
5、启动服务
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
访问http:// 用户名admin 密码zabbix
客户端
1、关闭selinix 关闭防火墙
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld
2、安装客户端
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum install zabbix-agent2 -y
修改Server地址
vi /etc/zabbix/zabbix_agent2.conf
# Default:
# Server=
Server=10.10.17.199 "#修改Server地址"
### Option: ListenPort
3、启动zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2
网页配置
添加客户端
在网页中选择配置-主机-添加主机
输入主机名、群组(或新建群组)、客户端IP地址,端口
第二选项卡中模板,添加模板,(模板的作用就是基础的监控指标)
添加监控项
客户端自定义监控项
这里以监控用户登录数为例
通过shell命令获取关键数据
首先测试命令 w |awk 'NR==1{print $4}'
[root@client ~]# w
22:44:02 up 17:31, 1 user, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.2.176 20:59 2.00s 0.13s 0.01s w
[root@client ~]#w |awk 'NR==1{print $4}'
1
方法一
客户端直接修改zabbix_agent2.conf
vi /etc/zabbix/zabbix_agent2.conf
### Option: UserParameter
# User-defined parameter to monitor. There can be several user-defined parameters.
# Format: UserParameter=<key>,<shell command>
# See 'zabbix_agentd' directory for examples.
#
# Mandatory: no
# Default:
# UserParameter=
UserParameter=user_login_num,w |awk 'NR==1{print $4}' "# 添加自定义监控项"
方法二
在/etc/zabbix/zabbix_agent2.d 中添加conf文件
[root@client zabbix_agent2.d]# pwd
/etc/zabbix/zabbix_agent2.d
[root@client zabbix_agent2.d]# vi user_login_ip_num.conf
UserParameter=user_login_ip_num,w |awk 'NR>2{print $3}' | sort -r |uniq -c |wc -l
自检测试
[root@client zabbix_agent2.d]# zabbix_agent2 -t user_login_ip_num
user_login_ip_num [s|2]
重启服务
[root@client ~]# systemctl restart zabbix-agent2
服务器端测试
安装测试工具
[root@zabbix ~]# yum install zabbix-get -y
[root@zabbix ~]# zabbix_get -s 10.10.17.160 -k user_login_num
1
# -s <host-name-or-IP> -k <key>
网页中测试 ,选在配置-主机-监控项
创建监控项,测试,确定
添加触发器
在网页中选择创建触发器,这里我们依然使用用户登陆数作为指标
添加触发器
观察仪表盘 、已经触发
可以设置触发报警音效
触发器恢复
添加触发器恢复机制,依然以用户登录数为例
此时观察仪表盘已经恢复了
查看问题的具体细节
Zabbix 邮件告警
配置发件人信息
在管理-报警媒介类型里修改/添加 Email邮箱
配置收件人信息
在管理-用户群组-用户里新建用户组和用户
在新建用户的时候需要添加报警媒介
权限需要修改为超级管理员
配置触发动作
在配置-动作里新建触发动作
触发动作后添加操作,添加操作步骤
再次触发报警后可以观察报警后触发动作
邮件已经可以正常接收
Zabbix 微信告警
微信端配置
打开企业微信后台管理器,在应用管理里新建一个应用
上传头像并选择可见用户
创建完成后即可查看Agentld、Secret 、企业ID
zabbix-server端设置
安装requests
yum install epel-release
yum install python-pip
pip install requests
查看alertscripts位置
vi /etc/zabbix/zabbix_server.conf
### Option: AlertScriptsPath
# Full path to location of custom alert scripts.
# Default depends on compilation options.
# To see the default path run command "zabbix_server --help".
#
# Mandatory: no
# Default:
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
编写脚本 /usr/lib/zabbix/alertscripts/weixin.py
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import requests
import sys
import os
import json
import logging
logging.basicConfig(level = logging.DEBUG, format = '%(asctime)s, %(filename)s, %(levelname)s, %(message)s',
datefmt = '%a, %d %b %Y %H:%M:%S',
filename = os.path.join('/tmp','weixin.log'),
filemode = 'a')
corpid='wwdcf6fc99ab28fd41' # qiyeID
appsecret='rIyZoR9-BPWRdOtixZ3ztI8v8np9sPR75FNIBSfFUjQ' # Secret
agentid=1000004 # AgentId
#get accesstoken
token_url='https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + appsecret
req=requests.get(token_url)
accesstoken=req.json()['access_token']
#send message
msgsend_url='https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + accesstoken
touser=sys.argv[1]
subject=sys.argv[2]
#toparty='3|4|5|6'
message=sys.argv[2] + "\n\n" +sys.argv[3]
params={
"touser": touser,
# "toparty": toparty,
"msgtype": "text",
"agentid": agentid,
"text": {
"content": message
},
"safe":0
}
req=requests.post(msgsend_url, data=json.dumps(params))
logging.info('sendto:' + touser + ';;subject:' + subject + ';;message:' + message)
测试,此时微信后台应该可以收到测试短信
chmod +x weixin.py
./weixin.py yangfan 'test' 'test'
zabbix-web端设置
配置发件人
在管理-报警媒介类型里添加一个报警媒介
在第二选项卡里定义发送的内容,zabbix已经定义好了,触发问题、问题回复、问题更新的脚本,无需另行修改。
第三选项卡可以定义尝试次数和尝试间隔,完成后点击确定
配置收件人
在管理-用户,点击对应用户后第二选项卡报警媒介,在这里添加微信报警的收件人信息
配置动作
在配置-动作里添加一个微信报警的动作
再次触发报警,微信中可以正常接收
这是我在配置过程中踩到的坑,如有类似问题可以借鉴
SNMP监控
简介
SNMP主要监控无法安装agent的设备,例如路由器、交换机、UPS、打印机等
版本:
SNMPV1: 实现操作成本低,海量数据读取能力较弱
SNMPV2c:主流,增加了GetBulk和inform操作
SNMPV3:安全较高,易扩展,适应性好
MIB:被管理设备的数据通过变量构建成数据库,包含了各种对象集合
ODI:对象标识符
服务端设置(被监控的机器)
以华为鲲鹏920服务器为例,IBMC版本6.26
默认SNMP是打开的
客户端设置(zabbix-server)
测试
通过snmpwalk正常获取到SNMP的值
[root@zabbix ~]# yum install net-snmp-utils -y
[root@zabbix ~]# snmpwalk -v 3 -u Administrator -a sha -A 'Admin@9000' -x AES -X 'Admin@9000' -l authPriv 192.168.11.119 1.3.6.1.4.1.2011.2.235.1.1.12.50.1.2.1
SNMPv2-SMI::enterprises.2011.2.235.1.1.12.50.1.2.1 = IpAddress: 192.168.11.119
'# -v SNMP 版本 -u 用户名 -a 鉴权算法 -A 鉴权算法密码 -x 加密算法 -X 加密算法密码 -l 安全级别'
zabbix页面设置
在zabbix页面上新建一个SNMP的主机,如图所示填写内容
在第二个选项卡-模板里 至少添加一个监控模板 Template Module Generic SNMP
然后在主机页观察节点是否已经添加并成功监控