监控生命周期

  1. 1、服务器上架到机柜
  2. 2、基础设施监控
  3. 服务区温度,风扇转速 ipmitool命令,只能在用在物理机
  4. 内存的监控(dffdiskiotop
  5. cpulscpuuptimetophtopglances
  6. 内存情况(free
  7. 网络(iftop
  8. 3、应用监控
  9. mysql redis
  10. nginx
  11. php-fpm
  12. python

部署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
  • 多机房间的网络延时问题
    • 上海机房>proxy>server

      部署分布式zabbix-proxy

      ```shell 1、环境准备,准备3台机器 10.30.59.226 zabbix-server ##zabbix1 10.30.59.227 zabbix-proxy ##zabbix2 10.30.59.228 zabbix-agent2 ##zabbix3

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