准备三台centos7的机器,一台服务器,另外两台作为节点
我的机器是centos7,新部署的虚拟机,先处理下环境
静态网络设置
vim /etc/sysconfig/network-scripts/ifcfg-ens160
systemctl restart network
ping 127.0.0.1
ping www.baidu.com
(配置文件中的DNS改为DNS1)
(附可以选择在线编辑器计算ip掩码网关等等,dns百度搜索附近的dns即可)
systemctl stop firewalld
vim /etc/hosts 做好三台主机间的通信解析
ping ip或域名进行测试
配置zabbix的yum仓库,建议使用国内源比如阿里源,会快很多(mirror.aliyun.com进入后看镜像站提示配置好yum源)但是我在写这篇博文时阿里巴巴开源镜像站升级中,所以我选择用zabbix的官方源(读者遇到镜像站升级中这种情况可以搜索相关的博文,根据其中的就阿里源配置截图进行配置阿里源,亲测有效,无非及时.repo文件,大同小异
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
包可能会更新而使得这个网址连接失效,那么可以浏览器去zabbix官网找到相应的zabbix的yu仓库(zabbix-release)复制链接地址在用wget下载下来(一句话,去官网找zabbix的yum源安装包下载下来)
下载完成后ls查看下是否正确下载,接着安装zabbix的yum源:
rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm
yum repolist 刷新yum源
yum install -y epel-relase.norach 扩展源
yum install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql
yum命令习惯下载完成在用一次,以进行确认
get是被动监控模式,sender是主动监控模式所使用,web是zabbix的web界面的使用,zabbix-server-mysq和zabbix-web-mysqll则分别是server与mysql和web界面与mysql间使用所需要
多条命令可用;隔开
注意zabbix版本,一些新的版本没有了zabbix-web,zabbix-server-mysql,zabbx-web-mysql
yum install zabbix-agent zabbix-get zabbix-sender zabbix-server-mysql zabbix-web zabbix-web-mysql这些实在出问题的话可以去找到对应的包的连接wget下来,在rpm或者yum locallinstall安装
yum localinstall 也可以对noarch文件
架构图中可知zabbix的server端需要一个数据库这里选择mariadb
先配置mariadb.repo:
百度搜索http://mirrors.ustc.edu.cn/help/mariadb.html?highlight=mariadb
这是在mariadb官网的操作截图(完成后返回上一张图操作第二步):
yum repolist #刷新
yum install -y MariaDB-server MariaDB-client #安装MariaDB vim
/etc/my.cnf.d/server.cnf #配置mariadb
[mysqld]
skip_name_resolve = ON #跳过主机名解析
innodb_file_per_table =ON #开启独立表空间
innodb_buffer_pool_size = 256M #缓存池大小
max_connections = 2000 #最大连接数
log-bin = master-log #开启二进制日志
innodb_ strict_mode=0 #开启的话导入zabbix数据表是会报因长度超出之类的错误
“在很久很久以前也就是说还没有innodb_file_per_table 的那个年代,所有的innodb表的数据都是保存在innodb系统表空间中的,在有了innodb_file_per_table参数后innodb可以把每个表的数据单独保存。单独保存有两方面的优势一个是方便管理,二个是提长性能。”
systemctl restart mariadb
mysql_secure_installation #初始化mariadb
创建要使用的数据库和创建授权账号:
create database zabbix charset “utf8”; 创建zabbix数据库
grant all on zabbix.* to “zbuser”@“192.168.160.%” identified by “passwd”; 创建并受权用户,注意mysql8开始对用户的创建和授权不能像这样异步到位
flush privileges; 刷新授权表
(学了数据库mysql已经过了不短的一段时间,等啥时周末课少了整理之前的mysql资料汇总一篇文章,有兴趣的朋友可以去看看共同学习)
准备就绪后需要导入zabbix的服务表:
rpm -ql zabbix-server-mysql可以找到初始表/usr/share/doc/zabbix-server-mysql-4.4.7/create.sql.gz 然后
gzip -d /usr/share/doc/zabbix-server-mysql-4.4.7/create.sql.gz
cd /usr/share/doc/zabbix-server-mysql-4.4.7/
ls
vim create.sql
上边选择数据库,即use zabbix;
mysql -uzbuser -p < create.sql
cd /etc/zabbix/
cp zabbix_server.conf{,.bak} 修改配置文件前进行备份是个好习惯
vim zabbix_server.conf
ListenPort=10051 默认监听端口
SourceIP=192.168.160.168 server端,发采样数据请求的IP
以上是主要的配置
日志可以大体分为两类,一是系统进程rsyslog,二是应用程序自身的日志数据
cat /etc/zabbix/zabbix_server.conf | grep -v “#” | grep -v “^$”(正则表达式)
systemctl restart zabbix-server
错误反省:当时实操时,ip我设置错误了(因为是新部署的机器,忘记改成静态ip,偏偏记得上一次的ip就直接用了),但ps aux | grep zabbix可见服务状态正常,看看端口ss -tunlp | grep 10051,直接傻眼,有进程没有端口!我回头检查了两遍配置文件没发现出错,而且systenctl 重启服务是没有错误的,ok,配置文件语法等上没错误,那么就是业务逻辑上的错误了,检查后发现ip出问题。随后还想看看业务错误,依次更改了DBHost和DBName故意改为错误的设置,结果都是业务错误,进程状态均正常,但端口出问题
rpm -ql zabbix-web找出zabbix-server的主配置文件
vim /etc/httpd/conf.d/zabbix.conf
systemctl restart httpd
netstat -tunlp | grep 80 从经验上,感觉netsat过滤端口相比ss好得多,感觉。
设置时区那里写Asia/Shanghai
/etc/php.ini文件中:是注释
接着打开浏览器http://192.168.160.168(ip)/zabbix
基本上点击next step就可以了,这里只记录需要修改的几个页面
想要修改用户密码可以去数据库里更改也可以在zabbx-web的控制台修改
zabbix-webui部署ok
与server端一样先配置了相关的zabbix源
yum install -y zabbix-agent zabbix-sender
先在server端下:(对自己的监控)
cd /etc/zabbix/
cp zabbix_agentd.conf{,.bak}
vim /etc/zabbix/zabbix_agentd.conf
systemctl restart zabbix-agent
ss -tunlp | grep 10050
ListenIP不用变,去掉注释,其他的ip看自己主机的ip情况改
(set ignorecase忽略大小写,set list,set nu都是比较常用的)(加个no)
Hostname是server端的名称,这里是zabbix-server
对于配置文件的修改,如果喜欢在原有注释上修改要注意配置文件是否本身存在与注释相似的以生效配置,否则会出现重复的问题,这了诶问题不会影响服务的正常运行,但会影响实际的业务操作。
已经启动后就可以去server端添加主机了,其他主机一样的操作,不同的是Hostname设置为对应主机名
切换到web界面,记得修改密码,练习使用就先不修改也行
看web界面的步骤创建需要创建的内容,后续操作一样(刚开始用可以先换成中文的熟悉熟悉)
端口默认10050
以上的是zabbix-server对自身的监控
注意要等自定义的主机的可用性一栏的zabbix显示灯亮起
添加监控项可以加速zabbix灯亮
创建个应用集
systemctl start zabbix-agent
zabbix的服务器端与客户端连接的主要工具就是zabbix里bin文件夹下的zabbix_get文件,这个命令只能在zabbix的server端使用
zabbix_get中可以加入-p 10050
(进程:每秒更改)
yum install -y git
观察
[root@zabbix-server src]# ls -l /usr/share/zabbix/fonts/graphfont.ttf
lrwxrwxrwx 1 root root 33 Apr 23 09:41 /usr/share/zabbix/fonts/graphfont.ttf ->/etc/alternatives/zabbix-web-font
使用共享文件夹或者vm tools或者xftp6将windows主机上的字体上传到/usr/share/zabbix/fonts下
(对于共享虚拟机来说,建议过程中选择克隆模式,这里是虚拟文件夹)
上传之后切换到/etc/alternatives查看软连接
rm -rf /etc/alternatives/zabbix-seb-font # 删除旧软连接
[root@localhost mnt]# cd hgfs
[root@localhost hgfs]# ls
simfang.ttf VMware Workstation_0132062.exe
[root@localhost hgfs]# mv simfang.ttf /usr/share/zabbix/fonts/simfang.ttf
[root@localhost hgfs]# cd /usr/share/zabbix/fonts/
[root@localhost fonts]# ls
graphfont.ttf simfang.ttf
先将文件移动出共享的文件夹,因为重启后共享文件夹需要重新手动挂载。当然也可以考虑设置开机自动挂载,写入开机文件就行,这里为了方便管理字体的文件就把它移动出来同一放在/usr/share/zabbix/fonts/下
ln -s /usr/share/zabbix/fonts/simfang.ttf /etc/alternatives/zabbix-web-font
systemctl restart zabbix-server(其实弄好连接时就能看到web界面的中文乱码被解决,因为已经设置好刷新了)
(建议使用xftp6,不过新机器我还没配置ftp服务)
添加监控项时搭配用“克隆”使用会快一些
接下来同样的克隆方式搞个bytes的监控项
注意以上应该是ens160
监听端口时如net.tcp.listen不用设置每秒变更,将配置进程哪里删除即可
net.tcp.listen的最新数据一般只会是0和1,0则是设置了进程之类的,会错误
yum install -y epel-release.noarch
yum install -y redis
systemctl start redis
vim /etc/redis.conf
systemctl restartredis
补充指定下应用集为net
{zabbix-server:net.tcp.listen[6379].last(#1,5)}=0
1是运行,0是宕掉了
接下来是动作的操作设置
点击new可进行添加
默认操作步骤时间改为1m(为了快速看到效果,生产环境不这么设置)
然后systemctl stop redis
邮件发送失败是因为mail还没配置好
yum provide traceroute
yum install -y traceroute
这里的监控项是模板的
用模板的方式给主机添加监控项触发器等等:
取消连接是取消模板和主机间的连接,并清理是把模板对应的监控项处罚器等都清理掉。
以上讲的是使用自定义的模板和系统自带的模板,下面是导入别处如互联网上下载的模板。
Ctrl+f可以进行浏览器界面的字符搜索
导入已经模板后就是如同前边的操作一样进行给主机添加模板即可
systemctl stop redis
是memory.free
接着看看图形
用户参数的升级用法:
键值应该是memory.stats[MemTotal]才对
然后检测中->最新数据查看监控项的数据
接下克隆下这个监控项去添加个free的监控项:
后续操作与前边的一样
接下来是复制状态信息页面到网站根目录:
cp /usr/share/fpm/status.html /usr/share/nginx/html/
前边的$document_root就是网站跟目录
然后重启服务
systenct restart nginx
systemctl status nginx
ss -tunlp | grep 88
ps -ef | grep nginx
接下来在agent端,设置用户参数:
设置:
cd /etc/zabbix/zabbix_agentd.d/
vim php_status.conf
systemctl restart zabbix-agent
在zabbix-agent端,查询使用这个用户参数的key;
创建模板使用自定义用户参数:
上图有个错,这里配置监控项不是在主机zabbix-server中配置,而是在模板php-fpm
模板弄好了,便可以关联主机,上面有章图便是关联主机
接下来修改主机名vim /etc/zabbix/zabbix_agentd.conf:
visudo修改sudo的配置:
重启服务systemctl start zabbix-agent
zabbix_get -s 192.168.160.168 -p 10050 -k 'system.hostname'
zabbix_get -s 192.168.160.168 -p 10050 -k 'system.uname'
接下来操作agent端:
重启agent端的服务,systemctl restart zabbix-agent
vim /etc/snmp/snmpd.conf
systemctl start snmpd
systemctl start snmptrapd
注意应该是CATALINA_OPTS
然后systemctl restart tomcat
vim /etc/zabbix/zabbix_java_gateway.conf 修改配置文件
配置文件修改完成后重启服务
systemctl restart zabbix-java-gateway.service
然后是修改server端配置开启java-gateway的配置:
vim /etc/zabbix/zabbix_server.conf
重启zabbix-server服务:
systemctl restart zabbix-server
配置proxy主机:
同一下时间:
zabbix-server 192.168.160.168 监控
agent1 192.168.160.155 被监控端
agent2 192.168.160.153 被监控端
zabbix-proxy 192.168.160.160 代理proxy
zabbix-server直接监控agent1
zabbix-server通过代理zabbix-proxy监控agent2
.
1.在proxy端安装一下程序包: zabbix-proxy-mysql zabbix-get(获取被监控机器的信息) zabbix-agent zabbix-sender(发送信息给server端)
2.准备数据库: 创建,授权用户,导入schema.sql
然后proxy端安装mariadb数据库软件
yum install -y MariaDB-server MariaDB-client
接下来修改配置文件vim /etc/my.cnf.d/server.cnf:
重启服务systemctl restart mariadb
初始化数据库mysql_secure_installation:
创建数据库和授权用户:
create database zbxproxydb character set “utf8”;
grant all on zbproxydb .* to ‘zbxproxyuser’@‘192.168.160.%’ identified by ‘zbxproxypass’;
flush privileges;
然后proxy端在安装写需要的软件yum install -y zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender(可以使用scp从server端移过来,在yum localinstall)
vim schema.sql:
导入数据前先vim /etc/my.cnf.d/server.conf
[mysqld]下加入innodb_strict_mode=0
否则会出现这样的错误
mysql < schema.sql导入数据
3.修改配置文件:
vim /etc/zabbix/zabbix_proxy.conf
是192.168.160.160,即proxy的ip,这里proxy个数据库都放在同一台机器上
开启服务:systemctl start zabbix-proxy
配置agent2端允许proxy代理监控vim /etc/zabbix/zabbix_agentd.conf:
修改完配置文件后重启服务systemctl restart zabbix-agent.service
接下来是将代理加入监控,server端创建配置agent代理:
可以直接在这里加入主机
sz将文件放到window上
sz命令是在远程连接软件不如finallshell上用的
在agent1上使用这个模板:
先安装nginx:
yum install -y epel-release.norch
yum install --y nginx
vim /etc/nginx/nginx.conf
启动服务systemctl restart nginx
然后下载模板所依赖的脚本:
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf:
配置agent的用户参数Userparameter:
#!/bin/bash开始,底部的终止为止跟这里开头位置相似别复制错了
注意是#!
我查了下nginx使用的端口是88
然后便是重启服务systemctl restart zabbix-agent
记得启动zabbix-agent,还有查看端口80,10050端口的状态
配置agent的用户参数Userparameter
将windows上的模板导入server的模板中:
(可以在window上下载该模板,也可以用wget下载了在sz上传到window,wget使用方便些)
我这边用的linux登录zabbix-web操作页面,直接在zabbix-web下导入
也可以是自己建立个.xml文件然后将内容黏贴进去
如果还是导入失败边查看是否是版本的问题
由于今天清理windows主机磁盘时翻了个小错误导致proxy主机出现写磁盘问题,后续就只剩几个简单的小章节了所以旧只写实操步骤和新的,实操截图相对应得减少
真是ip就是ip a看到的那个
server端的web操作页面一般会自动检测到本机的agent
上面是监控自己主机下边便是监控主机数据库
拿agent1操作
这里的微信报警用的是企业微信
先申请企业微信
所用来绑定的微信会成为登录企业微信的一个验证方式
wget下载的是企业微信的linux客户端
因为这个脚本是编译过的,无法进行编辑,我们可以使用./wechat -h or -help查看
信息已经发送出去,但是web页面不能收到信息,需要下载个企业微信的app,我这里主机是windows
接下来设置告警动作