监控生命周期
1、服务器上架到机柜2、基础设施监控服务区温度,风扇转速 ipmitool命令,只能在用在物理机内存的监控(df,fdisk,iotop)cpu(lscpu,uptime,top,htop,glances)内存情况(free)网络(iftop)3、应用监控mysql redisnginxphp-fpmpython
部署zabbix 5.0
1、准备机器,环境初始化
[root@localhost ~]# ifconfig ens192 | awk 'NR==2{print $2}'
10.30.59.226
#关闭防火墙
2、zabbix-server内存尽量给大点,4G为好
3、获取zabbix的下载源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
4、更换zabbix.repo源,为阿里的
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
5、清空缓存,下载zabbix服务端
yum clean all
yum makecache
yum install -y zabbix-server-mysql zabbix-agent
6、安装工具,可以在机器上,使用多个版本的软件,并且不会影响到整个系统的依赖环境
yum install -y centos-release-scl -y
7、修改zabbix-front前端源,修改如下参数
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 #开启这里的参数
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
8、安装zabbix前端环境,且是安装到scl环境下
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl -y
9、安装zabbix所需的数据库,mariadb
yum install -y mariadb-server
10、配置数据库,开机启动
[root@localhost yum.repos.d]# systemctl enable --now mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
11、初始化数据库,设置密码000000
mysql_secure_installation
12、添加数据库用户,以及zabbix所需的数据库信息
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> create user zabbix@localhost identified by '000000';
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges; ##刷新授权表
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
13、使用zabbix-mysql命令,导入数据库信息
# mysql -u用户名 -p 数据库名
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
14、修改zabbix server配置文件,修改数据库的密码
[root@localhost ~]# grep '^DBPa' /etc/zabbix/zabbix_server.conf
DBPassword=000000
15、修改zabbix的php配置文件
/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
[root@localhost ~]# grep 'timezone' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
16、启动zabbix相关服务器
[root@localhost ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@localhost ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
17、访问zabbix入口
10.30.59.226/zabbix
18、安装成功后,默认账号密码
Admin
zabbix
部署zabbix客户端
zabbix5.0版本
agent2新版本采用golang语言开发的客户端
由于是go语言开发,部署起来就很方便了,和之前的程序部署形式不一样了
agent2默认用10050端口,也就是zabbix客户端的端口
- 旧版本的客户端,zabbix-agent
- go语言新版本客户端,zabbix-agent2 ```shell 1、机器环境准备,2台zabbix客户端 10.30.59.227 zabbix-agent2 10.30.59.228 zabbix-agent2
2、注意时间正确 yum install ntpdate -y ntpdate -u ntp.aliyun.com
3、时区的统一配置 mv /etc/localtime{,.bak} ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
具体的zabbix-agent2部署流程
```shell
1、提前配置好zabbix的yum源,参考服务端的配置方法
rpm -Uvh https://mirrors.aliyun.com/zabbix/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#' /etc/yum.repos.d/zabbix.repo
yum install zabbix-agent2
2、查看配置文件
/etc/zabbix/zabbix_agent2.conf
3、启动命令
/usr/sbin/zabbix_agent2
4、启动客户端
[root@zabbix3 ~]# systemctl enable --now zabbix-agent2
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service to /usr/lib/systemd/system/zabbix-agent2.service.
[root@zabbix3 ~]# netstat -ntpl | grep zabbix
tcp6 0 0 :::10050 :::* LISTEN 9330/zabbix_agent2
5、修改agent2配置文件,查看配置信息,根据自己的机器环境修改即可
[root@zabbix3 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.30.59.226
ServerActive=10.30.59.226
Hostname=zabbix3
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
6、最后一步,进行重启zabbix-agent2
systemctl restart zabbix-agent2
验证zabbix-agent2的连通性
1、在服务端上通过命令,主动获取数据
yum install -y zabbix-get -y
2、命令检测服务端是否连接上客户端
[root@zabbix1 ~]# zabbix_get -s '10.30.59.228' -p 10050 -k 'system.hostname'
zabbix3
解决zabbix-server查看的乱码问题
zabbix默认监控了服务端本身,但是编码有问题
1、安装字体
yum install -y wqy-microhei-fonts
2、复制字体
[root@zabbix1 ~]# \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
自定义监控内容
自定义监控服务器登录的人数
需求:限制登录人数不超过三个,超过三个就发出报警信息先从命令行的角度
1、明确需要执行的linux命令
who | wc -l
2、手动创建zabbix的配置文件,用于 自定义key
/etc/zabbix/zabbix_agent2.conf
3、创建配置文件,以及内容 如下
[root@zabbix3 zabbix_agent2.d]# pwd
/etc/zabbix/zabbix_agent2.d
[root@zabbix3 zabbix_agent2.d]# cat userparameter_login.conf
UserParameter=login.user,who|wc -l
在页面添加zabbix-server的自定义监控项模板
添加流程是
- 创建模板
- 创建应用集(好比是一个文件夹,里面放入一堆监控项)
- 创建监控项,自定义item,你具体想监控的内容
- 创建触发器,当监控项获取到值得时候,进行和触发器比较,判断,决定是否报警
- 创建图形
- 将具体的主机和该模板链接,关联
邮件报警
全网监控方案
50
100
如何自动添加主机监控
思路
- 克隆监控模板
- 自动注册和自动发现
- 使用zabbix的api接口,利用curl语言,或者开发自己的编程脚本如python等
我们日常使用的各种软件,都是提供了API接口,给开发人员进行修改以及获取数据的。
接口的定义
curl -i -X POST -H 'Content-Type:application/json' -d'{"jsonrpc": "2.0","method":"user.login","params":{"user":"Admin","password":"zabbix"},"auth": null,"id":0}' "http://10.30.59.226/zabbix/api_jsonrpc.php"
监控实施方案
硬件监控
应用服务监控
互联网上有大量的开源模板可以下载使用
rsync服务监控
监控服务器的873端口是存活的
有关端口的监控,使用zabbix自带的 key net.tcp.port[,873]
进行数据推拉,检测结果
检测NFS服务是否正常
通过key监控111端口 net.tcp.port[,111]
showmount -e ip |wc -l
监控mysql数据库是否正常
通过端口 net.tcp.port[,3306]
mysql -uroot -p
zabbix自带了mysql的监控模板,直接添加主板和mysql的主机关联即可
web服务器监控
net.tcp.port[,80]
zabbix也提供了对web服务器的监控面板
监控服务的具体方法
端口检测的命令
netstat
ss
lsof
结合grep查看端口是否存活
在服务端
[root@zabbix1 ~]# zabbix_get -s '10.30.59.228' -p 10050 -k 'net.tcp.port[,3306]'
0
查询进程信息
ps
通过客户端连接
web服务器 curl查询
mysql 用sql语句连接验证
缓存数据库服务 数据读写验证
自动发现,自动注册
1、准备好一台客户端机器
[root@zabbix3 ~]# systemctl is-active zabbix-agent2
active
[root@zabbix1 ~]# zabbix_get -s '10.30.59.228' -p 10050 -k 'agent.ping'
1
2、练习
什么是自动发现,自动注册
自动发现(agent2是被动模式)
zabbix server主动的去发现所有的客户端,然后将客户端的信息,登记在服务端的机器上
缺点是zabbix server压力会较大
如果说你定义了一个网段 100~200网段,耗时较久,且压力大
自动注册(agent2是主动模式)
zabbix agent2主动上报自己的信息,发给zabbix-server
缺点是agent2可能找不到server(配置文件写错了,网络不通)
被动模式,主动模式的区别(站在agent2的立场)
被动模式,对于agent2来说,就是server来找agent2拿数据
主动模式,agent2主动把数据发给server
配置hosts解析
[root@zabbix1 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.30.59.226 zabbix1
10.30.59.227 zabbix2
10.30.59.228 zabbix3
自动注册,主动模式
1、准备机器
server
agent2
2、修改agent2的配置文件
[root@zabbix3 ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.30.59.226
ServerActive=10.30.59.226
Hostname=zabbix3
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
3、验证通信结果
[root@zabbix1 ~]# zabbix_get -s '10.30.59.228' -p 10050 -k 'agent.ping'
1
分布式监控
分布式监控的作用
- 分担server的集中式压力
- Agent>proxy>server
- 多机房间的网络延时问题
2、在学习阶段,关闭防火墙
<a name="0iDZw"></a>
### 具体的操作步骤如下
```shell
1、确保之前所学的自动发现,自动注册关闭
2、zabbix-server服务端无须变动,运行着就好
3、准备好客户端机器,agent2机器
4、配置zabbix-proxy代理服务器,并且部署数据库,用于储存agent2发来的数据,最终发给zabbix-server
##配置zabbix5.0的yum源
rpm -Uvh https://mirrors.aliyun.com/zabbix/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#' /etc/yum.repos.d/zabbix.repo
5、安装proxy以及数据库
yum install -y zabbix-proxy-mysql zabbix-get
6、启动数据库,配置数据库用户,储存zabbix-agent2信息数据
yum install -y mariadb-server mariadb
systemctl start mariadb
##数据库sql设置
mysql -uroot -p
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@'localhost' identified by 'zabbix';
flush privileges;
7、导入zabbix-proxy数据库信息
rpm -ql zabbix-proxy-mysql
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.12/schema.sql.gz | mysql -uzabbix -pzabbix zabbix_proxy
# 修改zabbix-proxy配置文件,链接数据库的信息
sed -i.ori '162a DBPassword=zabbix' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Server=127.0.0.1#Server=10.30.59.226#' /etc/zabbix/zabbix_proxy.conf
sed -i 's#Hostname=Zabbix proxy#Hostname=zabbix2#' /etc/zabbix/zabbix_proxy.conf
8、检查代理服务器的配置文件zabbix-proxy
grep -Ev '^#|^$' /etc/zabbix/zabbix_proxy.conf
Server=10.30.59.226
Hostname=zabbix2
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBPassword=zabbix
DBName=zabbix_proxy
DBUser=zabbix
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
9、启动代理服务
systemctl status zabbix-proxy
10、如何在zabbix页面上添加代理配置
web页面添加代理
agent使用proxy
[root@zabbix3 ~]# grep '^[z-Z]' /etc/zabbix/zabbix_agent2.conf
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=10.30.59.227
ServerActive=10.30.59.227
Hostname=zabbix3
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
##重启服务
systemctl restart zabbix-agent2
systemctl restart zabbix-proxy
snmp监控
简单网络管理协议
1、服务端安装snmp监控程序
yum install -y net-snmp net-snmp-utils
2、开启snmp的配置
sed -i.ori '57a view systemview included .1' /etc/snmp/snmpd.conf
3、使用snmp命令
# -v指定协议版本 -c指定暗号 sysname snmp的key
snmpwalk -v 2c -c public 127.0.0.1 sysname
