安装zabbix-server5.0

  1. # server安装zabbix
  2. # 1.获取zabbix源
  3. rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
  4. sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo
  5. sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/zabbix.repo
  6. yum clean all
  7. yum makecache
  8. # 2.安装zabbix客户端
  9. yum -y install zabbix-server-mysql zabbix-agent2
  10. # 3.安装多个版本的软件工具,并且不会影响整个系统的依赖环境
  11. yum -y install centos-release-scl
  12. # 4.修改前端源,安装前端环境(并且安装到scl环境下)
  13. 或者http安装:yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
  14. 或者nginx安装:yum -y install zabbix-web-mysql-scl zabbix-nginx-conf-scl
  15. # 5.安装数据库,配置数据库开机启动,查看端口
  16. yum -y install mariadb-server mariadb
  17. systemctl enable --now mariadb
  18. netstat -tunlp |grep 3306
  19. # 6.初始化数据库
  20. mysql_secure_installation [回车--y--password--password--y--n--y--y]
  21. mysql -uroot -p123
  22. # 7.添加数据库用户授权
  23. create database zabbix character set utf8 collate utf8_bin;
  24. create user zabbix@'%' identified by 'password';
  25. grant all privileges on zabbix.* to zabbix@localhost;
  26. flush privileges;
  27. exit;
  28. # 8.使用zabbix-mysql导入数据库信息【-u用户名 -p 后面是数据库的库名字 然后才需要输入密码】
  29. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
  30. # 9.修改zabbix密码
  31. vim /etc/zabbix/zabbix_server.conf
  32. DBPassword=password
  33. # 10.修改php配置
  34. vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
  35. user = nginx
  36. group = nginx
  37. listen.acl_users = nginx
  38. php_value[date.timezone] = Asia/Shanghai
  39. vim /etc/opt/rh/rh-php72/php.ini
  40. 383 max_execution_time = 300
  41. 393 max_input_time = 300
  42. 672 post_max_size = 16M
  43. 902 date.timezone = Asia/Shanghai
  44. ###(如果是Apache忽略)
  45. ### 修改nginx配置文件
  46. vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
  47. listen 80;
  48. server_name 192.168.11.10;
  49. fastcgi_pass 127.0.0.1:9000;
  50. # fastcgi_pass unix:/var/opt/rh/rh-php72/run/php-fpm/zabbix.sock;
  51. vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf
  52. server {
  53. #listen 80 default_server;
  54. #listen [::]:80 default_server;
  55. #server_name _;
  56. #root /opt/rh/rh-nginx116/root/usr/share/nginx/html;
  57. # Load configuration files for the default server block.
  58. #include /etc/opt/rh/rh-nginx116/nginx/default.d/*.conf;
  59. }
  60. # 11.启动zabbix相关服务
  61. # http systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
  62. yum -y intstall psmisc
  63. killall nginx
  64. # nginx systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
  65. #启动报错或Zabbix server is running NO
  66. 1. 查看日志 tail -5 /var/log/zabbix/zabbix_server.log
  67. 2. 检查配置文件
  68. 3. 数据库授权问题(可能不让localhost登录)
  69. # 12.访问zabbix入口
  70. http://ip/zabbix
  71. http://ip
  72. # 13.zabbix默认用户密码
  73. U:Admin
  74. P:zabbix
  75. # 同步时间
  76. yum install ntpdate -y
  77. ntpdate -u ntp.aliyun.com
  78. # 14.时区的统一
  79. mv /etc/localtime{,.bak}
  80. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  81. # 15.zabbix乱码问题 【zabbix-server安装中文字体】
  82. yum -y install wqy-microhei-fonts
  83. \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

客户端安装zabbix-agent2

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#g' /etc/yum.repos.d/zabbix.repo
sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/zabbix.repo

yum -y install  zabbix-agent2 

vim /etc/zabbix/zabbix_agent2.conf 
Server=192.168.11.101
ServerActive=192.168.11.101
Hostname=Zabbix-client


systemctl restart zabbix-agent2

zabbix自定义监控项说明

# 第一种取值方法
# 客户端配置zabbix-agent2.conf文件
vim /etc/zabbix/zabbix_agent2.conf
UnsafeUserParameters=1
UserParameter=mem.total,free -h |grep Mem |awk '{print $2}'
UserParameter=mem.used,free -h |grep Mem |awk '{print $3}'
UserParameter=mem.free,free -h |grep Mem |awk '{print $4}'


# 第二种取值方法
mkdir -p /etc/zabbix/zabbix_agent2.d/
chown -R zabbix.zabbix /etc/zabbix/zabbix_agent2.d/
touch /etc/zabbix/zabbix_agent2.d/mem.sh && chmod +x /etc/zabbix/zabbix_agent2.d/mem.sh
vim /etc/zabbix/zabbix_agent2.conf
UserParameter=mem[*],/etc/zabbix/zabbix_agent2.d/mem.sh $1

  #创建监控脚本
  vim /etc/zabbix/zabbix_agent2.d/mem.sh
  #!/bin/bash
  case $1 in
  total)
    echo `free -b |grep Mem |awk '{print $2}'`
  ;;
  used)
    echo `free -b |grep Mem |awk '{print $3}'`
  ;;
  free)
    echo `free -b |grep Mem |awk '{print $4}'`
  ;;
  *)
    echo "输入有误"
  ;;
  esac
yum -y install zabbix-get

# -s 要测试的客户端地址   -k 指明键值
zabbix_get -s 192.168.11.102  -k mem.total
1.8G

zabbix界面操作

添加主机群

创建主机群
image.png
设置主机群名称
image.png

创建模板

image.png
设置模板名称 并加入主机群
image.png
添加主机群
image.png
添加
image.png

添加主机

image.png
设置主机名称 添加主机群 设置主机IP地址使用10050端口找到客户端
image.png

模板配置

点击创建好的模板
image.png

配置应用集

image.png
创建应用集
image.png
添加应用集名称
image.png
可多创建应用集
image.png

配置监控项

image.png
可自定义键值
image.png

[root@localhost zabbix_agent2.d]# pwd
/etc/zabbix/zabbix_agent2.d
[root@localhost zabbix_agent2.d]# ls
mem.sh
[root@localhost zabbix_agent2.d]# cat mem.sh
  #!/bin/bash
  case $1 in
  total)
    echo `free -b |grep Mem |awk '{print $2}'`
  ;;
  used)
    echo `free -b |grep Mem |awk '{print $3}'`
  ;;
  free)
    echo `free -b |grep Mem |awk '{print $4}'`
  ;;
  *)
    echo "输入有误"
  ;;
  esac
# 需要将UnsafeUserParameters=0 设为1
vim /etc/zabbix/zabbix_agent2.conf 
18 UserParameter=mem[*],/etc/zabbix/zabbix_agent2.d/mem.sh $1   #添加一条运行脚本语句
289 UnsafeUserParameters=1

# 配置完后重启生效
systemctl restart zabbix-agent2.service 
服务器测试 ps:服务器也需要一个一模一样的anget和.sh脚本配置
zabbix_get -s 192.168.11.102  -k mem.total

配置
image.png

添加图形

image.png
配置名称 添加刚刚添加好的监控项
image.png
添加
image.png

创建触发器(报警)

表达式

{zidingyi:mem[free].last(,3s)}<200000000
zidingyi 模板名称
mem[free] 键值
last() 
<200000000  当键值小于200000000

image.png
配置名称 提示内容 严重性
image.png

创建聚合图形

image.png
设置名称 行和列
image.png
编辑聚合图形
image.png
点击+号可添加聚合图形
image.png
效果
image.png

将主机添加模板

设置名称
image.png
选择自定义模板
image.png
image.png
添加
image.png

测试效果

image.png
查看图形界面
image.png
image.png

1. Zabbix自定义监控项

监控登录的人数,登录三个就报警 (实验案例)

vim /etc/zabbix/zabbix_agent2.d/userlogin.sh
#!/bin/bash
who|wc -l
vim /etc/zabbix/zabbix_agent2.conf
UserParameter=login[*],/etc/zabbix/zabbix_agent2.d/userlogin.sh 
chmod +x /etc/zabbix/zabbix_agent2.d/userlogin.sh
scp /etc/zabbix/zabbix_agent2.d/userlogin.sh root@192.168.11.101:/etc/zabbix/zabbix_agent2.d/

创建应用集
image.png
image.png
添加名称
image.png
添加监控项
image.png
设置监控项名称 键值 描述
image.png
保存
image.png
添加报警
image.png
设置触发器 触发器名称 触发器严重等级
image.png
添加表达式 (选择监控的东西)
image.png
添加
image.png
设置允许手动关闭
image.png
创建图形
image.png
添加监控项
image.png
选择监控项
image.png
设置最大值 (意思是最多人登录server1时候的数量) 后添加
image.png
测试
image.png

2.邮件报警

主机出错就就马上报警发邮件

创建报警媒介 (设置发件人)163.com
image.png
添加邮箱授权码 添加报警媒介类型为电子邮件 设置发送电子邮件的主机
设置接收邮件的主机
image.png
邮件授权地址
image.png
开启授权
image.png
添加授权码 将生成的授权码放置密码栏
image.png
添加发送信息 后点添加
image.png

设置收件人 qq.com
配置接收用户
image.png
添加刚刚设置的报警媒介类型
image.png
添加收件人地址 配置警告信息之后才发
image.png
点击更新
image.png

测试 :设置收件人
image.png
测试
image.png
image.png
image.png
添加故障后的报警内容
image.png
添加恢复后的提示信息
image.png
image.png
点击添加 后更新
添加动作
image.png
设置大于警告的就发动作
image.png
添加操作
image.png
提交用户 发送到Emalia
image.png
添加恢复操作
image.png
添加提示信息
image.png
更新
image.png
启用动作
image.png
测试
image.png

设置企业微信报警

步骤一:

注册企业微信
绑定企业微信信息

步骤二:
创建警告组
image.png
image.png
记录账号名称,等下填写接收人信息需要用到
image.png
点击我的企业,查看企业信息,要记录企业CorpID
image.png
点击企业应用,创建应用
image.png
填写信息和通知用户组
image.png
创建完,记录Agentld和Secret
image.png

配置zabbix服务器

1、首先确认已经记录的信息
告警组用户的账号,企业CorpID和创建应用的Secret、Agentld
2、修改zabbix.conf

grep alertscripts /etc/zabbix/zabbix_server.conf 
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
# 我们设置zabbix默认脚本路径,这样在web端就可以获取到脚本
cd /usr/lib/zabbix/alertscripts/
wget https://raw.githubusercontent.com/OneOaaS/weixin-alert/master/weixin_linux_amd64
mv weixin_linux_amd64 wechat
chmod 755 wechat 
chown zabbix:zabbix wechat
#!/usr/local/python3.3/bin/python3  #python环境位置
# coding: utf-8 

import urllib.request
import json
import sys
import time
import os
import shutil
import logging

def gettoken(corp_id,corp_secret):
    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corp_id + '&corpsecret=' + corp_secret
    try:
        token_file = urllib.request.urlopen(gettoken_url)
    except urllib.error.HTTPError as e:
        print(e.code)
        print(e.read().decode("utf8"))

    token_data = token_file.read().decode('utf-8')
    token_json = json.loads(token_data)
    token_json.keys()
    token = token_json['access_token']
    return token


def senddata(access_token,user,content):
    try:
        send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
        send_values = {
            "touser":user,   #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。 
            "msgtype":"text",
            "agentid":"1000002",
            "text":{
                "content":content
                },
            "safe":"0"
            }

        send_data = json.dumps(send_values,ensure_ascii=False).encode(encoding='UTF8')
        send_request = urllib.request.Request(send_url, send_data)
        response = urllib.request.urlopen(send_request)
        msg = response.read()
        print("returned value : " + str(msg))
    except:
        print("returned value : " + str(msg))


default_encoding = 'utf-8'

if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)
user = str(sys.argv[1])
title = str(sys.argv[2])
content = str(sys.argv[3])

corpid = 'wwb22899d2f5c8c1114' #'微信公众平台管理组的ID' 
corpsecret = 'deSiAIR4_cLV4J222p6vQYbFoVDNi1WbULugAhyW2dc' #'微信公众平台管理组的凭证密钥' 
accesstoken = gettoken(corpid,corpsecret)
senddata(accesstoken,user,content)

3.创建自动发现

创建自动发现规则
image.png
设置名称和发现自动网段的主机 设置发现刷新时间为20s
image.png
添加检查类型 为zabbix客户端 设置端口 设置键值
image.png
添加后 默认添加即可
image.png
已经发现到主机
image.png
配置动作
image.png
添加条件
image.png
image.png
操作进组 进模块
image.png
添加主机 添加主机群
image.png
与魔板关联image.png
添加
image.png
测试
image.png

vim /etc/zabbix/zabbix_agent2.conf
grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf 

PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.11.101
ServerActive=192.168.11.101
Hostname=Zabbix-clent2
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

添加自动注册
image.png
创建动作
image.png
添加主机名称
image.png
点击操作
image.png
添加操作 链接魔板
image.png
测试
image.png
image.png

部署分布式zabbix-proxy

#第一台(用于做主server)

#第二台(做代理zabbix)

#第三台(用于被监控)