day051-053-zabbix5.0

17次阅读
没有评论
·一.zabbix监控重要性
1.什么是监控

   对我们的操作系统进行不间断的监控

2.为什么要监控

   软件生命周期中非常重要的一个环节

   能够做到事前告警,事后我们还可以根据监控内容排查问题

企业: 销售人员需求--->开发写代码-->测试代码-->运维-->部署操作系统-->安装服务优化服务运行服务-->日志处理日志分析--->交付(用户 自己的团队 测试)  --如果监控不到位导致恶性循环-->最终导致项目流产-->公司倒闭 资金链断裂

运维 不受重视(不懂运维) 1-2个运维-->开发部门总监-->导致运维部门无规范
运维制定流程、制定规范! 架构师

开发经理  开发压力大 写出好的产品? 代码债务。

运维经理  员工-->监控  运维债务

 开公司:  销售+技术总监(架构师) 10个项目  

   金丝雀 监控指标

   在有问题的时候 运维(管理) 运维债务

3.如何去监控监控什么内容:

​    监控硬件  磁盘 df -h 内存 free 磁盘IO 负载 CPU 网络

​    软件服务  端口 进程 状态 

​    业务层面  业务数据进行数据   自定义监控 订单量 注册用户 充值用户 日志中 数据库中体现

​    业务之间接口调用监控 curl

4.监控有哪些工具

​     zabbix      硬件  服务状态  自定义监控(万物皆可监控)

​     Nagions     网络产品 交换机 路由器

​      Cacti        流量

​      OPen-Falcon 小米公司 互联网自研监控产品

​      prometheus  kubernetes docker

​      监控宝等
二.zabbix平台架构
基于LNMP平台 Linux Nginx MySQL PHP
zabbix端口
zabbix服务端: 10.0.0.71   端口10051
zabbix_proxy: 10.0.0.7   端口10051
java_gateway: 10.0.0.7   端口10052
zabbix_agent:  10.0.0.7  10.0.0.8 端口10050
三.zabbix安装部署
1.安装部署mysql
1.下载mysql8.0版本
[root@zabbix:~]#wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar

2.解压数据库 
[root@zabbix:~]#tar xf mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar

3.rpm安装
[root@zabbix ~]# rpm -ivh mysql-community-common-8.0.36-1.el8.x86_64.rpm
[root@zabbix ~]# rpm -ivh mysql-community-client-plugins-8.0.36-1.el8.x86_64.rpm
[root@zabbix ~]# rpm -ivh mysql-community-libs-8.0.36-1.el8.x86_64.rpm
[root@zabbix ~]# rpm -ivh mysql-community-client-8.0.36-1.el8.x86_64.rpm
[root@zabbix ~]# rpm -ivh mysql-community-icu-data-files-8.0.36-1.el8.x86_64.rpm
[root@zabbix ~]# rpm -ivh mysql-community-devel-8.0.36-1.el8.x86_64.rpm
[root@zabbix ~]# rpm -ivh mysql-community-server-8.0.36-1.el8.x86_64.rpm

4.启动数据库
[root@zabbix ~]# systemctl start mysqld

5.进入数据库修改密码
查看随机生成的密码
[root@zabbix:~]#cat /var/log/mysqld.log |grep root@local
2024-09-23T02:33:31.213883Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Kfbi5aJupw<k
修改密码:
[root@zabbix:~]#mysql -uroot -p'Kfbi5aJupw<k'
mysql> alter user root@localhost identified by 'Oldboy123.com';

6.创建zabbix库
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'Oldboy123.com';
mysql> ALTER USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Oldboy123.com';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.00 sec)


清理mysql安装包
[root@zabbix:~]#rm -rf mysql-*


7.下载zabbix的源码包,将sql数据导入到zabbix库中
[root@zabbix:~]#wget https://cdn.zabbix.com/zabbix/sources/oldstable/5.0/zabbix-5.0.47.tar.gz
解压zabbix源码
[root@zabbix ~]# ll
总用量 21616
-rw-r--r-- 1 root root 22132982  5月 20  2025 zabbix-5.0.47.tar.gz


[root@zabbix ~]# tar xf zabbix-5.0.47.tar.gz

进入源码目录
[root@zabbix ~]# cd zabbix-5.0.47/
[root@zabbix zabbix-5.0.47]# cd database/mysql/
[root@zabbix mysql]# ll
总用量 17008
-rw-r--r-- 1 test test 15252182  5月 20  2025 data.sql
-rw-r--r-- 1 test test      282  5月 20  2025 double.sql
-rw-r--r-- 1 test test  1978341  5月 19  2025 images.sql
-rw-r--r-- 1 test test      482  5月 20  2025 Makefile.am
-rw-r--r-- 1 test test    15936  5月 20  2025 Makefile.in
-rw-r--r-- 1 test test   156294  5月 20  2025 schema.sql


需要将schema.sql  images.sql  data.sql导入zabbix库
[root@zabbix:mysql]#mysql -uzabbix -p'Oldboy123.com' zabbix < schema.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix:mysql]#mysql -uzabbix -p'Oldboy123.com' zabbix < images.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix:mysql]#mysql -uzabbix -p'Oldboy123.com' zabbix < data.sql 
2.安装部署php服务
1.安装php服务
[root@zabbix:~]# yum -y install php php-bcmath php-cli php-common php-devel php-embedded php-fpm php-gd php-intl php-mbstring php-mysqlnd php-opcache php-pdo   php-process php-xml php-json php-ldap
2.修改监听方式为端口
[root@zabbix ~]# grep -n 9000 /etc/php-fpm.d/www.conf 
39:listen = 127.0.0.1:9000

3.启动加入开机自启
[root@zabbix:~]#systemctl start php-fpm
[root@zabbix:~]#systemctl enable php-fpm

4.查看是否启动
[root@zabbix:~]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      875/sshd: /usr/sbin 
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      3702/php-fpm: maste 
tcp6       0      0 :::22                   :::*                    LISTEN      875/sshd: /usr/sbin 
3.安装部署Nginx服务
1.配置Nginx仓库
[root@zabbix:~]#cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

2.安装nginx服务
[root@zabbix:~]#yum -y install nginx

3.配置Nginx服务
[root@zabbix:conf.d]#cat default.conf
server {
    listen       80;
    server_name  _;
    root         /code;
    index  index.php index.html;

    location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
}
[root@zabbix:conf.d]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4.启动nginx并开机自启
[root@zabbix:conf.d]#systemctl start nginx
[root@zabbix:conf.d]#systemctl enable nginx

检查9000 3306 80端口
[root@zabbix:conf.d]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      875/sshd: /usr/sbin 
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      3702/php-fpm: maste 
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3996/nginx: master  
tcp6       0      0 :::22                   :::*                    LISTEN      875/sshd: /usr/sbin 
tcp6       0      0 :::33060                :::*                    LISTEN      2698/mysqld 

5.将代码文件拷贝到/code目录
[root@zabbix:conf.d]#mkdir /code
[root@zabbix:conf.d]#cd /code/
拷贝源码中的前端页面代码到/code目录
[root@zabbix:code]#cp -r /root/zabbix-5.0.43/ui/* .
[root@zabbix:code]#ls

[root@zabbix:~]#chown -R apache.apache /code/

统一用户php和nginx都使用apache运行
[root@zabbix:code]#grep apache /etc/nginx/nginx.conf 
user  apache;
[root@zabbix:code]#systemctl restart nginx
4.编译zabbix服务
1.进入源码目录
[root@zabbix:~]#cd zabbix-5.0.43/
[root@zabbix:zabbix-5.0.43]#

2.安装依赖包
[root@zabbix:zabbix-5.0.43]#yum -y install libxml2 libxml2-devel net-snmp-devel curl-devel libevent-devel

3.配置zabbix
[root@zabbix:zabbix-5.0.43]#./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

4.编译
[root@zabbix:zabbix-5.0.43]# make

5.安装
[root@zabbix:zabbix-5.0.43]# make install

6.完成后检查 在命令行输入zabbix tab键 检查
[root@zabbix:~]#zabbix_
zabbix_agentd  zabbix_get     zabbix_js      zabbix_sender  zabbix_server


7.配置zabbix连接数据库信息
[root@zabbix:~]#grep -n ^DB /usr/local/etc/zabbix_server.conf
94:DBName=zabbix
110:DBUser=zabbix
118:DBPassword=Oldboy123.com




8.创建启动虚拟用户zabbix
[root@zabbix:~]#useradd zabbix

9.启动
zabbix_server  # 启动服务端
zabbix_agentd    # 启动客户端
编写systemctl运行zabbix
[root@zabbix:~]#cat /usr/lib/systemd/system/zabbix.service
[Unit]
Description=Zabbix server
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/sbin/zabbix_server
ExecStop=/usr/local/sbin/zabbix_server stop
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

重新加载配置
[root@zabbix:~]#systemctl daemon-reload

[root@zabbix:~]#systemctl start zabbix
[root@zabbix:~]#systemctl enable zabbix

检查端口
[root@zabbix:~]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      875/sshd: /usr/sbin 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      15573/zabbix_server 
5.界面安装部署
day051-053-zabbix5.0

1.修改PHP默认的配置

day051-053-zabbix5.0

[root@zabbix:~]#egrep -n "post_max_size|max_execution_time|max_input_time|timezone" /etc/php.ini|grep -v ';'
383:max_execution_time = 300
393:max_input_time = 300
672:post_max_size = 16M
902:date.timezone = Asia/ShangHai

测试PHP
[root@zabbix:~]#php-fpm -t
[23-Sep-2024 11:23:38] NOTICE: configuration file /etc/php-fpm.conf test is successful
重启PHP服务
[root@zabbix:~]#systemctl restart php-fpm

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

四.zabbix界面配置
1.修改语言为中文

day051-053-zabbix5.0

day051-053-zabbix5.0

2.修改默认的字体
[root@zabbix:~]#cd /code/assets/fonts/
[root@zabbix:fonts]#ll
total 740
-rw-r--r-- 1 apache apache 756072 Sep 23 10:51 DejaVuSans.ttf
将windows的字体上传到当前目录修改名称
C:\Windows\fonts\目录下
[root@zabbix:fonts]#mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@zabbix:fonts]#mv STXINWEI.TTF DejaVuSans.ttf
[root@zabbix:fonts]#ll
total 4700
-rw-r--r-- 1 root   root   4051204 Jun 13 19:10 DejaVuSans.ttf
-rw-r--r-- 1 apache apache  756072 Sep 23 10:51 DejaVuSans.ttf.bak

刷新页面检查字体

day051-053-zabbix5.0

五.监控zabbix服务器本身
1.安装客户端zabbix-agent 默认已经编译
2.启动客户端
[root@zabbix:~]#zabbix_agentd
六.监控客户端
1.准备客户端10.0.0.7
2.安装zabbix-agent客户端 Kylin系统直接安装(其他操作 部署YUM仓库)
[root@web01:~]#yum -y install zabbix-agent


3.配置zabbix客户端配置文件指向服务端10.0.0.71
[root@web01:~]#grep -n ^Server /etc/zabbix_agentd.conf
115:Server=172.16.1.71

4.启动zabbix客户端
[root@web01:~]#systemctl start zabbix-agent
[root@web01:~]#systemctl enable zabbix-agent

5.zabbix页面配置添加监控的主机

day051-053-zabbix5.0

day051-053-zabbix5.0

1.添加一台主机

day051-053-zabbix5.0

2.主机配置完成后添加模版

day051-053-zabbix5.0

最后点击添加

day051-053-zabbix5.0

七.日志位置
服务端日志: /tmp/zabbix_server.log
客户端yum安装: /var/log/zabbix/zabbix_agentd.log 

变绿说明成功

day051-053-zabbix5.0

八.zabbix自定义监控
1.自定义监控流程:
1.取值
2.配置到客户端的配置文件中 zabbix-agent.conf
3.在zabbix服务端取值测试
4.将自定义的key添加到zabbix页面进行监控


#面试题 自定义监控的流程

1.取值
uptime|awk '{print $(NF-6)}'
2.写入客户端的配置文件
[root@web01:~]#vim /etc/zabbix_agentd.conf 
[root@web01:~]#grep user_login /etc/zabbix_agentd.conf
UserParameter=user_login,uptime|awk '{print $(NF-6)}'

先在客户端命令执行
zabbix-agent -p 查看自定义的值

3.重启客户端生效
[root@web01:~]#systemctl restart zabbix-agent

4.服务端检查自定义key值是否取值成功
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k user_login
3
5.添加到zabbix界面

day051-053-zabbix5.0

day051-053-zabbix5.0

自定义取值可以使用include方式将自定key单独存放.conf的配置文件中
1.修改客户端的配置文件
[root@web01:zabbix_agentd.conf.d]#sed -n '314p' /etc/zabbix_agentd.conf
Include=/etc/zabbix_agentd.conf.d/*.conf

创建存放conf的路径
mkdir /etc/zabbix_agentd.conf.d/

2.创建新的文件自定义key
[root@web01:zabbix_agentd.conf.d]#pwd
/etc/zabbix_agentd.conf.d
[root@web01:zabbix_agentd.conf.d]#cat os.conf 
UserParameter=user_login,uptime|awk '{print $(NF-6)}'
2.自定义监控端口是否存在
客户端配置:
[root@web01:~]#cat /etc/zabbix_agentd.conf.d/os.conf 
UserParameter=user_login,uptime|awk '{print $(NF-6)}'
UserParameter=ssh_port,netstat -tnulp|grep 22|grep -w tcp|wc -l
[root@web01:~]#systemctl restart zabbix-agent
[root@web01:~]#zabbix_agentd -p|grep ssh_port
ssh_port                                      [t|1]

授权netstat命令s权限
[root@web01:~]#chmod u+s /usr/bin/netstat

服务端测试获取key值:
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k ssh_port
1
页面进行自定义监控项添加

day051-053-zabbix5.0

3.自定义映射值

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

查看映射值:

day051-053-zabbix5.0

4.使用系统自带的监控项监控端口

day051-053-zabbix5.0

4.自定义监控内存使用率
[root@web01:zabbix_agentd.conf.d]#cat os.conf
UserParameter=user_login,uptime|awk '{print $(NF-6)}'
UserParameter=ssh_port,netstat -tnulp|grep 22|grep -w tcp|wc -l
UserParameter=free_use,free|awk 'NR==2{print $3/$2*100}'
重启客户端
[root@web01:zabbix_agentd.conf.d]#systemctl restart zabbix-agent

服务端测试取值
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k free_use
30.36


zabbix页面添加

day051-053-zabbix5.0

监控web01
监控web02
自定义监控
        用登录数
        系统负载
        内存使用率
        磁盘使用率
        SSH端口
        nginx端口
        网络不通
        文件被篡改 1.txt
        监控网站首页是否正常(页面内容 状态码... curl接口返回状态)       
九.设置触发器
1.设置用户登录数超过2个则告警通知,默认告警到zabbix界面上。

day051-053-zabbix5.0day051-053-zabbix5.0

2.设置内存超过40%告警(实际工作中80%)

day051-053-zabbix5.0

压力测试内存
ab -n800000 -c200 http://127.0.0.1/index.php
3.设置联合告警

用户登录个数超过3,内存百分比超过30,同时成立则告警。

day051-053-zabbix5.0

十.配置邮件告警
1.配置告警媒介

day051-053-zabbix5.0

day051-053-zabbix5.0

2.配置动作

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

3.配置收件人
zabbix默认将告警发送到zabbix群组,群组中默认一个用户admin用户
配置admin用户的接收信息的方式

day051-053-zabbix5.0

day051-053-zabbix5.0

4.配置自定义告警模版

day051-053-zabbix5.0

默认标题:
故障: {EVENT.NAME}
消息内容:
报警主机: {HOST.NAME1}
报警服务: {ITEM.NAME}
报警key1: {ITEM.KEY1}: {ITEM.VALUE1}
报警key2: {ITEM.KEY2}: {ITEM.VALUE2}
严重级别: {TRIGGER.SEVERITY}

恢复操作
默认标题:
恢复: {EVENT.NAME}
消息内容:
恢复主机: {HOST.NAME1}
恢复服务: {ITEM.NAME}
恢复key1: {ITEM.KEY1}: {ITEM.VALUE1}
恢复key2: {ITEM.KEY2}: {ITEM.VALUE2}
5.配置远程执行命令

先监听nginx端口

day051-053-zabbix5.0

day051-053-zabbix5.0

配置sudo提权

[root@web01:~]#grep zabbix /etc/sudoers
zabbix  ALL=(ALL)   NOPASSWD: ALL

客户端开启远程执行命令功能

[root@web01:~]#grep -n ^EnableRemoteCommand /etc/zabbix_agentd.conf
91:EnableRemoteCommands=1
[root@web01:~]#systemctl restart zabbix-agent

配置远程执行命令

动作触发器选择Nginx端口

day051-053-zabbix5.0

操作具体执行的流程

day051-053-zabbix5.0

day051-053-zabbix5.0

配置事件通知升级过程

day051-053-zabbix5.0

十一.配置企业微信告警
1.注册企业微信 注册流程

微信公众平台 (qq.com)

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

2.下载weixin python告警脚本
QQ群搜索weixin.py下载,然后上传到zabbix服务端
[root@zabbix:~]#ll
-rw-r--r--  1 root   root       1364 Sep 24 15:09 weixin.py
修改weixin.py中的三个参数
vim weixin.py
...
corpid='ww4f16cdc27c1a64234'
appsecret='xxx'
agentid=1000002
...
安装python2版本
[root@zabbix:~]#yum -y install python2
安装python2-pip # 用来安装python依赖
[root@zabbix:~]#yum -y install python2-pip
安装运行python脚本的依赖
[root@zabbix:~]#pip2.7 install requests
3.在企业平台创建的zabbix应用中管理接口

设置可信域名

day051-053-zabbix5.0

下载验证文件,将文件上传到站点根目录下

day051-053-zabbix5.0

添加当前出口的公网IP地址(zabibix服务器的公网IP地址)

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

测试脚本:
[root@zabbix:~]#python2.7 weixin.py "ZhaoJunJie" "下雨了" "回家开车"

day051-053-zabbix5.0

4.集成到zabbix页面中
将脚本移动到固定的目录
[root@zabbix:~]#mv weixin.py /usr/local/share/zabbix/alertscripts/
[root@zabbix:~]#ll /usr/local/share/zabbix/alertscripts/
total 4
-rw-r--r-- 1 root root 1355 Sep 24 15:45 weixin.py
[root@zabbix:~]#chmod +x /usr/local/share/zabbix/alertscripts/weixin.py 
[root@zabbix:~]#ll /usr/local/share/zabbix/alertscripts/weixin.py
-rwxr-xr-x 1 root root 1355 Sep 24 15:45 /usr/local/share/zabbix/alertscripts/weixin.py

[root@zabbix:~]#chown zabbix.zabbix /tmp/weixin.log
[root@zabbix:~]#ll /tmp/weixin.log
-rw-r--r-- 1 zabbix zabbix 5424 Sep 24 15:46 /tmp/weixin.log

创建媒介类型

day051-053-zabbix5.0

{ALERT.SENDTO}  #发给谁
{ALERT.SUBJECT} #报警标题
{ALERT.MESSAGE} #报警内容

day051-053-zabbix5.0

自定义告警内容

day051-053-zabbix5.0

动作配置:

day051-053-zabbix5.0

day051-053-zabbix5.0

注意事项: 发送给客户端消息配置: 两种方式

第一种方式 使用媒介中的模版

day051-053-zabbix5.0

第二种方式 在动作中自定义消息

day051-053-zabbix5.0

十二.自定义图形
1.登录数监控创建图形

day051-053-zabbix5.0

day051-053-zabbix5.0

查看图形

day051-053-zabbix5.0

2.内存使用百分比创建图形

day051-053-zabbix5.0

day051-053-zabbix5.0

3.在一张图片上显示多个监控项

day051-053-zabbix5.0

day051-053-zabbix5.0

4.聚合图形

将多个表集成到一张图

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

5.创建幻灯片

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

十三. 自定义模版

将Nginx七种状态作为模版

1.nginx配置七种状态
[root@web01:conf.d]#cat wordpress.conf 
server {
        listen 80;
        server_name www.wp.com;
        root /code/wp;

        location / {
                index index.php index.html;
        }
    location /nginx_status {
             stub_status;
    }
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        #fastcgi_param HTTPS on;
        }
}

[root@web01:conf.d]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01:conf.d]#systemctl restart nginx

[root@web01:conf.d]#curl 127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 
2.自定义取值
[root@web01:zabbix_agentd.conf.d]#cat nginx.conf
UserParameter=nginx_ac,curl -s 127.0.0.1/nginx_status|awk 'NR==1{print $NF}'
UserParameter=nginx_acc,curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $1}'
UserParameter=nginx_ha,curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $2}'
UserParameter=nginx_re,curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $3}'

[root@web01:zabbix_agentd.conf.d]#systemctl restart zabbix-agent

服务端测试:
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k nginx_ac
1
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k nginx_acc
11
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k nginx_re
12
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k nginx_ha
13

day051-053-zabbix5.0

day051-053-zabbix5.0

创建模版监控项和主机还没有进行关联

day051-053-zabbix5.0

day051-053-zabbix5.0

后面再进行创建监控项 直接克隆前面的即可。

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

创建了5个监控项

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

关联自定义的模版

day051-053-zabbix5.0

查看关联后的图形

day051-053-zabbix5.0

3.web02关联nginx模版
1.安装zabbix客户端
[root@web02:~]#yum -y install zabbix-agent


2.配置文件指向服务端
[root@web02:~]#grep 172.16.1.71 /etc/zabbix_agentd.conf
Server=172.16.1.71

3.配置nginx状态
[root@web02:conf.d]#cat wordpress.conf 
server {
        listen 80;
        server_name www.wp.com;
        root /code/wp;

        location / {
                index index.php index.html;
        }
    location /nginx_status {
    stub_status;
    }
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        #fastcgi_param HTTPS on;
        }
}

[root@web02:conf.d]#systemctl restart nginx
[root@web02:conf.d]#curl 127.0.0.1/nginx_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 

4.将web01的自定义key拷贝到web02
[root@web02:conf.d]#ll /etc/zabbix_agentd.conf.d/
total 8
-rw-r--r-- 1 root root 306 Sep 25 10:40 nginx.conf
-rw-r--r-- 1 root root 176 Sep 25 10:40 os.conf

开启include配置
[root@web02:conf.d]#sed -n '314p' /etc/zabbix_agentd.conf
Include=/etc/zabbix_agentd.conf.d/*.conf


5.重启zabbix客户端
[root@web02:conf.d]#systemctl restart zabbix-agent


6.监控主机并且关联模版

day051-053-zabbix5.0

关联模版

day051-053-zabbix5.0

day051-053-zabbix5.0

4.监控PHP状态信息
[root@web01:~]#sed -n '240p' /etc/php-fpm.d/www.conf
pm.status_path = /status

[root@web01:~]#php-fpm -t
[25-Sep-2024 11:15:49] NOTICE: configuration file /etc/php-fpm.conf test is successful

[root@web01:~]#systemctl restart php-fpm

配置nginx
[root@web01:conf.d]#cat wordpress.conf 
server {
        listen 80;
        server_name www.wp.com;
        root /code/wp;

        location / {
                index index.php index.html;
        }
    location /nginx_status {
             stub_status;
    }
    location /status {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
        location ~ \.php$ {
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
        #fastcgi_param HTTPS on;
        }
}

[root@web01:conf.d]#nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@web01:conf.d]#systemctl restart nginx

测试取值:
curl 127.0.0.1/status


自定义取值
[root@web01:zabbix_agentd.conf.d]#cat php.conf
UserParameter=php_idle,curl -s 127.0.0.1/status|awk '/^idle/{print $NF}'
UserParameter=php_ac,curl -s 127.0.0.1/status|awk '/^active/{print $NF}'
UserParameter=php_max,curl -s 127.0.0.1/status|awk 'NR==12{print $NF}'
UserParameter=php_chil,curl -s 127.0.0.1/status|awk 'NR==13{print $NF}'
[root@web01:zabbix_agentd.conf.d]#systemctl restart zabbix-agent

服务端测试
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k php_idle
4
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k php_ac
1

创建PHP模版

day051-053-zabbix5.0

day051-053-zabbix5.0

后面监控项使用克隆的方式创建

day051-053-zabbix5.0

触发器配置

day051-053-zabbix5.0

图形配置

day051-053-zabbix5.0

关联到WEB01

day051-053-zabbix5.0

十四.使用脚本方式自定义监控项
1.使用case脚本传参的方式获取七种状态
[root@web01:~]#mv nginx.sh  /etc/zabbix_agentd.conf.d/

[root@web01:~]#cat /etc/zabbix_agentd.conf.d/nginx.sh 
#!/bin/sh
case $1 in
    active)
    curl -s 127.0.0.1/nginx_status|awk 'NR==1{print $NF}'
    ;;
    accepts)
    curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $1}'
    ;;
    handled)
    curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $2}'
    ;;
    requests)
    curl -s 127.0.0.1/nginx_status|awk 'NR==3{print $3}'
    ;;
    *)
     echo "Usage: $0 [active|accepts|handled|requests]"
esac

2.给脚本执行权限
[root@web01:~]#chmod +x /etc/zabbix_agentd.conf.d/nginx.sh
[root@web01:~]#ll /etc/zabbix_agentd.conf.d/nginx.sh
-rwxr-xr-x 1 root root 356 Sep 25 11:41 /etc/zabbix_agentd.conf.d/nginx.sh

3.修改自定义key配置文件
[root@web01:zabbix_agentd.conf.d]#cat nginx.conf
UserParameter=nginx.[*],/etc/zabbix_agentd.conf.d/nginx.sh $1
重启失效
[root@web01:zabbix_agentd.conf.d]#systemctl restart zabbix-agent

4.服务端测试
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k nginx.[active]
1
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k nginx.[accepts]
10782
[root@zabbix:~]#zabbix_get -s 172.16.1.7 -k nginx.[handled]
10787

修改键值

day051-053-zabbix5.0

十五.zabbix通过SNMP监控网络设备
SNMP
简单网络管理协议(SNMP-Simple Network Management Protocol)
SNMP的经常使用版本有三个:SNMPv1、SNMPv2、SNMPv3(SNMPv3是具备安全性的通讯协议)
SNMP被普遍应用在NMS网络管理系统中(Network Management System)。知名的NMS包括BMC的Patrol、CA的Unicenter、Sun Mangegement控制台、IBM的Tivoli Netview、以及全球著名的HP Openview。 NMS的目标是提供一个监控和管理全部开启SNMP功能的设备的单一入口。
SNMP协议经过UDP端口161和162进行通讯。
161端口:SNMP Message
162端口:SNMP Trap Meaasge
SNMP管理模型中有三个基本组成部分:管理站(Manager),被管代理(Agent)和管理信息库(MIB)。
被管代理(Agent)指的是用于跟踪监测被管理设备状态的特殊软件或硬件,每个代理都拥有自己本地的MIB。
被管代理(Agent)翻译来自管理站(Manager)的请求,验证操作的可执行性,通过直接与相应的功能实体(如网络设备)通信来执行信息处理任务,同时向管理站返回响应信息。

网络设备硬件信息表示方式两种:
OID表述方法  数字表示   .1.3.6.1.2.1.25.2.2.0  # 获取内存大小
MIB表示方法  字符串表示 hrMemorySize           # 获取内存大小
OID和MIB大全
https://www.cnblogs.com/cqx6388/p/17235747.html

day051-053-zabbix5.0

SNMP三种版本

SNMP v1 最早的SNMP协议 不支持加密算法

SNMP v2 兼容v1版本支持更多数据类型和错误代码 常用版本

SNMP v3 增加了认证和加密功能,避免非法访问 验证效率低

客户端安装snmp
[root@web01:~]#yum -y install net-snmp
修改配置
[root@web01:~]#sed -n '41p;55p;116p' /etc/snmp/snmpd.conf    
com2sec notConfigUser  default       public   # 团体名称  打开注视
view    systemview    included   .1.
group    notConfigGroup  v2c             notConfigUser


启动snmp 端口161
[root@web01:~]#systemctl start snmpd
[root@web01:~]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
udp        0      0 0.0.0.0:161             0.0.0.0:*                           1075095/snmpd  

服务端安装snmp命令
-v 指定SNMP版本
2c 指定SNMP版本为V2
-c 指定团体名称

[root@zabbix ~]# yum -y install net-snmp-utils
[root@zabbix:~]#snmpwalk -v2c  -c public 10.0.0.7 SysName
SNMPv2-MIB::sysName.0 = STRING: web01
[root@zabbix:~]#snmpwalk -v2c  -c public 10.0.0.7 .1.3.6.1.2.1.25.2.2.0
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 970908 KBytes
[root@zabbix:~]#snmpwalk -v2c  -c public 10.0.0.7 hrMemorySize
HOST-RESOURCES-MIB::hrMemorySize.0 = INTEGER: 970908 KBytes

测试通过后,页面使用snmp协议监控

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

交换机配置SNMP协议以及团体名称
1. 进入配置模式:
Router#configure terminal 
Enter configuration commands, one per line.  End 
with CNTL/Z. 
Router(config)#
2. 使用以下命令启用只读 (RO) 社区字符串:
Router(config)#snmp-server community public RO 
其中public是只读社区字符串。
Router(config)#exit 
Router#
十六.zabbix自动化监控
1.zabbix自动发现

zabbix服务端通过扫描地址段的方式自动发现存活的服务器

发现服务器后进行动作处理 添加主机 关联模板 关联报警等

缺点1: 扫描速度慢 server压力较大

缺点2: 所有扫描到的客户端只能使用统一模板 比如web和数据库使用模板是不同的 还需要手动进行配置

第一步.将web01和web02主机删除

第二步.配置自动发现

day051-053-zabbix5.0

第三步.配置动作

day051-053-zabbix5.0

day051-053-zabbix5.0

添加的条件,也可以IP地址段

day051-053-zabbix5.0

发现上面的条件后具体做的动作

day051-053-zabbix5.0

day051-053-zabbix5.0

2.自动注册
客户端主动将自身信息上传给服务端用来减少服务端的压力

根据需求调整自动还是被动模式

zabbix服务端: 默认主动模式  我主动去抓取客户端的数据 10s

​    被动模式    等着客户端主动将数据提交给服务端

​     例如: 当服务器超过300-500+台以上 

​     当网络较复杂的情况

​      当服务器配置一般的情况

修改模版监控项为主动上报模式

1.修改客户端的模式为主动模式

[root@web01 ~]# vim /etc/zabbix/zabbix_agentd.conf 
ServerActive=172.16.1.71            # 主动注册服务器地址
Hostname=web01                      # 必须设置为主机名称
[root@web01 ~]# systemctl restart zabbix-agent

2.配置自动注册

注意: 先删除自动发现功能防止冲突

day051-053-zabbix5.0

配置主机名称包含web字段

day051-053-zabbix5.0

如果发现包含web字段的执行的操作是

day051-053-zabbix5.0

监控文件是否被修改

day051-053-zabbix5.0

触发器配置

day051-053-zabbix5.0

作业: 监控自己网站页面是否正常

十七.修改监控项为主动上报模式

day051-053-zabbix5.0

修改系统默认的模版为主动

day051-053-zabbix5.0

十八.zabbix proxy代理

day051-053-zabbix5.0

day051-053-zabbix5.0

day051-053-zabbix5.0

1.安装部署zabbix_proxy代理
1.下载mysql8.0版本
[root@web01:~]#wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar

2.解压数据库 
[root@web01:~]#tar xf mysql-8.0.36-1.el8.x86_64.rpm-bundle.tar

3.rpm安装
[root@web01 ~]# rpm -ivh mysql-community-common-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-client-plugins-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-libs-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-client-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-icu-data-files-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-devel-8.0.36-1.el8.x86_64.rpm
[root@web01 ~]# rpm -ivh mysql-community-server-8.0.36-1.el8.x86_64.rpm

4.启动数据库
[root@web01 ~]# systemctl start mysqld

5.进入数据库修改密码
查看随机生成的密码
[root@web01:~]#cat /var/log/mysqld.log |grep root@local
2024-09-23T02:33:31.213883Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Kfbi5aJupw<k
修改密码:
[root@web01:~]#mysql -uroot -p'Kfbi5aJupw<k'
mysql> alter user root@localhost identified by 'Oldboy123.com';

6.创建zabbix库
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user 'zabbix'@'localhost' identified by 'Oldboy123.com';
mysql> ALTER USER 'zabbix'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Oldboy123.com';
mysql> grant all privileges on zabbix.* to 'zabbix'@'localhost';
Query OK, 0 rows affected (0.00 sec)

7.下载zabbix源码 导入proxy库
[root@web01:~]#cd zabbix-5.0.43/database/mysql/
[root@web01:mysql]#mysql -uzabbix -pOldboy123.com zabbix < schema.sql

8.安装编译依赖
[root@web01:zabbix-5.0.43]#yum -y install libxml2 libxml2-devel net-snmp-devel curl-devel libevent-devel
配置
[root@web01:zabbix-5.0.43]#./configure --prefix=/usr/ --enable-proxy --with-net-snmp --with-mysql
编译并安装
[root@web01:zabbix-5.0.43]#make && make install


9.修改proxy配置文件连接数据库信息

[root@web01:~]#cd /usr/etc/
[root@web01:etc]#ll
total 24
-rw-r--r-- 1 root root 22677 Sep 26 10:48 zabbix_proxy.conf
drwxr-xr-x 2 root root     6 Sep 26 10:48 zabbix_proxy.conf.d
[root@web01:etc]#grep ^DB zabbix_proxy.conf
DBName=zabbix
DBUser=zabbix
DBPassword=Oldboy123.com

[root@web01:~]#egrep "10.0.0.71|sh_proxy" /usr/etc/zabbix_proxy.conf
Server=10.0.0.71
Hostname=sh_proxy



10.启动zabbix proxy
[root@web01:~]#netstat -tnulp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1094428/zabbix_agen 
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      1272514/zabbix_prox 
2.修改web02指定到代理服务器web01
[root@web02:~]#egrep '172.16.1.7|web02' /etc/zabbix_agentd.conf
Server=172.16.1.7
ServerActive=172.16.1.7
Hostname=web02
[root@web02:~]#systemctl restart zabbix-agent
3.zabbix界面添加proxy代理

day051-053-zabbix5.0

day051-053-zabbix5.0

4.通过proxy代理添加172.16.1.8

day051-053-zabbix5.0

检查

十九.监控java程序

zabbix通过zabbix-java-gateway实现对java进行监控

监控java使用jmx协议

服务端: 10.0.0.71

zabbix-java-gateway: 10.0.0.7

tomcat: 10.0.0.8

day051-053-zabbix5.0

1.WEB02部署Tomcat
1.安装jdk
上传jdk
安装jdk
[root@web02:~]#rpm -ivh jdk-8u181-linux-x64.rpm

2.下载tomcat
[root@web02:~]#wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.95/bin/apache-tomcat-9.0.95.tar.gz

3.解压
[root@web02:~]#tar xf apache-tomcat-9.0.95.tar.gz
[root@web02:~]#mv apache-tomcat-9.0.95 /usr/local/tomcat

4.配置tomcat开启jmx协议
[root@web02:~]#head -10 /usr/local/tomcat/bin/catalina.sh
#!/bin/sh
CATALINA_OPTS="$CATALINA_OPTS \
    -Dcom.sun.management.jmxremote \
    -Djava.rmi.server.hostname=10.0.0.8 \
    -Dcom.sun.management.jmxremote.port=12345 \
    -Dcom.sun.management.jmxremote.ssl=false \
    -Dcom.sun.management.jmxremote.authenticate=false"
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with


5.启动tomcat
[root@web02:~]#/usr/local/tomcat/bin/startup.sh
[root@web02:~]#netstat -tnulp        
tcp6       0      0 :::8080                 :::*                    LISTEN      116117/java           
tcp6       0      0 :::12345                :::*                    LISTEN      116117/java  
2.服务端配置java网关
[root@zabbix:~]#egrep "^Java|StartJava" /usr/local/etc/zabbix_server.conf
JavaGateway=10.0.0.51
JavaGatewayPort=10052
### Option: StartJavaPollers
StartJavaPollers=2
3.在db01安装java gateway
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpm
#如果web01则卸载yum -y remove zabbix50-agent-5.0.42
[root@db01:~]#yum -y install zabbix-java-gateway
[root@db01:~]#systemctl start zabbix-java-gateway.service
3.页面监控tomca程序

day051-053-zabbix5.0

day051-053-zabbix5.0

二十.zabbix优化

1.高并发需要对MySQL进行拆分

2.zabbix-agent被动上传修改为主动上报模式

3.地区较多情况 或者网络复杂情况使用proxy代理模式

4.系统自带监控项优化

5.进程优化

6.缓存优化

面试题:zabbix监控过哪些内容

1.监控主机硬件信息内存 CPU 负载 磁盘IO

2.监控系统重要的配置文件、代码文件防黑客篡改

3.监控服务是否正常(通过取端口号或者进程号)

4.监控服务,软件业务的状态信息(nginx状态信息 数据库的状态信息 增删改查 订单量 慢查询)

5.监控业务调用接口 curl状态返回

6.业务数据监控 日志监控。日志状态码 客户端IP地址

通过自定义啥都可以监控,想监控什么都行。

主动和被动模式

zabbix自定义监控流程?

zabbix压力大如何解决?

zabbix如何优化?

用过zabbix的低级自动发现吗? 监听多实例

正文完
 0
评论(没有评论)