zabbix

ZABBIX

安装 Zabbix

z-sever

yum list | grep nginx  # 查看 nginx 版本 ,这里使用 1.20  
nginx.x86_64                             1:1.20.1-10.el7               epel     

yum install -y nginx

# 安装 php
`https://webtatic.com/packages/php72/`  # 源的官网地址
yum install epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
# 另一个源(快点)
yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum install yum-utils
##启用 remi 仓库:
yum-config-manager --enable remi-php72
yum update
yum install php72w-fpm php72w-gd php72w-mbstring php72w-bcmath php72w-xml php72w-ldap php72w-mysqlnd -y

# nginx 支持 php
server {
        listen 80;
        server_name localhost;
        root /code/zabbix;

        location / {
                index index.php;
        }

        location ~ \.php$ {
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                # $document_root = /code/zabbix/
  # fastcgi_param  SCRIPT_FILENAME  /code/zabbbix/$fastcgi_script_name; 
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
        }
}

# php 配置
# 修改用户 因为 nginx 的启动是用的 nginx 用户,所以 php 也要用 nginx 确保统一
sed -rn '/^(user|group)/p' /etc/php-fpm.d/www.conf 
-----
user = apache
group = apache
-----
sed -r -i.bak '/^(user|group)/s#apache#nginx#g' /etc/php-fpm.d/www.conf

# session 会话

grep 'var/lib/php/session' /etc/php-fpm.d/www.conf
# 文件中有该句子
php_value[session.save_path]    = /var/lib/php/session
# 有该文件
ls /var/lib/php/session
stat /var/lib/php/session  # 确保用户为 nginx
# Access: (0770/drwxrwx---)  Uid: (  997/   nginx)   Gid: (  995/   nginx)

# 配置 mysql
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

# 配置 zabbix yum 源
# 1. 查看获取连接
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm?spm=a2c6h.25603864.0.0.3acf2e2fnzfYxy
# https://mirrors.aliyun.com/zabbix/zabbix 这段截取自网页地址
sed -r -i.bak 's#http://repo.zabbix.com/zabbix#https://mirrors.aliyun.com/zabbix/zabbix#g' /etc/yum.repos.d/zabbix.repo
yum install -y zabbix-server-mysql zabbix-agent2
  # 相关文件
[root@localhost ~]# rpm -ql zabbix-server-mysql
/etc/logrotate.d/zabbix-server
/etc/zabbix/zabbix_server.conf
/usr/lib/systemd/system/zabbix-server.service
/usr/lib/tmpfiles.d/zabbix-server.conf
/usr/lib/zabbix/alertscripts
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_server_mysql
/usr/share/doc/zabbix-server-mysql-5.0.36
/usr/share/doc/zabbix-server-mysql-5.0.36/AUTHORS
/usr/share/doc/zabbix-server-mysql-5.0.36/COPYING
/usr/share/doc/zabbix-server-mysql-5.0.36/ChangeLog
/usr/share/doc/zabbix-server-mysql-5.0.36/NEWS
/usr/share/doc/zabbix-server-mysql-5.0.36/README
/usr/share/doc/zabbix-server-mysql-5.0.36/create.sql.gz  # 数据库
/usr/share/doc/zabbix-server-mysql-5.0.36/double.sql
/usr/share/man/man8/zabbix_server.8.gz
/var/log/zabbix
/var/run/zabbix


# zabbix 数据导入
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -ppassword zabbix

# zabbix 服务端连接数据库
egrep '^DB' /etc/zabbix/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password

	# zabbix_server.conf 的默认配置
	 egrep '^[a-Z]' /etc/zabbix/zabbix_server.conf
	LogFile=/var/log/zabbix/zabbix_server.log
	LogFileSize=0
	PidFile=/var/run/zabbix/zabbix_server.pid
	SocketDir=/var/run/zabbix
	DBHost=localhost
	DBName=zabbix
	DBUser=zabbix
	DBPassword=password
	SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
	Timeout=4
	AlertScriptsPath=/usr/lib/zabbix/alertscripts
	ExternalScripts=/usr/lib/zabbix/externalscripts
	LogSlowQueries=3000
	StatsAllowedIP=127.0.0.1

# 启动服务端 zabbix-server 
systemctl start zabbix-server.service 
 netstat -lntp | grep zabbix
tcp        0      0 0.0.0.0:10051              LISTEN      67026/zabbix_server 
tcp6       0      0 :::10051                   LISTEN      67026/zabbix_server 

# 前端页面
# 源码包地址:https://www.zabbix.com/cn/download_sources#50LTS
mv /root/zabbix-5.0.36/ui/* /code/zabbix/
[root@localhost zabbix-5.0.36]# chown -R nginx:nginx /code/zabbix/
# 使用浏览器访问页面,点击下一步就会报错,根据提示更改
egrep '^(max_execution|max_input|post_max|date)' /etc/php.ini
----
max_execution_time = 300
max_input_time = 300
post_max_size = 16M
date.timezone = Asia/Shanghai
----
systemctl reload php-fpm
# 接着在前端按要求输入响应的信息即可
# 不出问题:Configuration file "conf/zabbix.conf.php" created.
/code/zabbix/conf/zabbix.conf.php  # 为在浏览器上输入的信息,在这可以改
# 之后点击 finish,登录 用户名:Admin 密码:zabix

错误

  • php7 不支持<? echo 'hello world';?>这样的语法结构, 访问的页面是空白的。但是php8 支持

z-client 安装

yum install -y zabbix-agent2
# 配置文件的默认项
egrep -v '#|^$' /etc/zabbix/zabbix_agent2.conf 
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log  # 日志文件
LogFileSize=0
Server=127.0.0.1  # 服务端在本地所以不用更改
ServerActive=127.0.0.1
Hostname=Zabbix server
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock
# 启动
systemctl start zabbix-agent2.service 
systemctl enable zabbix-agent2.service 

远程安装 zabbix 客户端

# 1. 在安装过客户端的主机上查看安装的版本
rpm -qa | grep zabbix
zabbix-release-5.0-1.el7.noarch
zabbix-server-mysql-5.0.36-1.el7.x86_64
zabbix-agent2-5.0.36-1.el7.x86_64

# 2. 在阿里云镜像仓库中找到该版本,复制连接地址安装即可
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.36-1.el7.x86_64.rpm?spm=a2c6h.25603864.0.0.3acf2e2f58dH7Z

# 3. 修改配置文件
egrep -w '^Server' /etc/zabbix/zabbix_agent2.conf
Server=172.17.1.16

# 4. 启动并检查
systemctl start zabbix-agent2.service 
systemctl enable zabbix-agent2.service 
netstat -lntp | grep 10050
tcp6       0      0 :::10050           LISTEN      1940/zabbix_agent2  
[root@lnpm ~]# telnet 172.17.1.16 10051
Trying 172.17.1.16...
Connected to 172.17.1.16.
Escape character is '^]'.

# 在服务端进行调试
# 服务端安装 zabbix-get
yum install -y zabbix-get
# 获取远程客户端的主机名
zabbix_get -s 172.17.1.11 -p 10050 -k "system.hostname" 
 lnpm
  • 在 web 端的配置如下
    image-20230728141246515

    image-20230728141832494
    image-20230728141951876
    image-20230728142302855

添加客户端

image-20230727215845422

image-20230727215946875

image-20230728143316268

图片

image-20230727202116675

image-20230727202208259

image-20230727202015189

zabbix server 相关文件

/etc/logrotate.d/zabbix-server  # 日志切割文件
/etc/zabbix/zabbix_server.conf  # 配置文件
/usr/lib/systemd/system/zabbix-server.service  # systemctl start 调用配置文件
/usr/lib/tmpfiles.d/zabbix-server.conf  # 配置文件的备份
/usr/lib/zabbix/alertscripts  # 报警脚本,如短信报警脚本
/usr/lib/zabbix/externalscripts  # 额外的脚本
/usr/sbin/zabbix_server_mysql  # zabbix 服务端命令

/usr/share/doc/zabbix-server-mysql-5.0.36/create.sql.gz  # 建表语句
/usr/share/doc/zabbix-server-mysql-5.0.36/double.sql  # 建表语句
/usr/share/man/man8/zabbix_server.8.gz  # 帮助文件
/var/log/zabbix  # 日志文件
/var/run/zabbix  # pid 文件存放处

zabbix_server.conf

配置文件详细说明地址

egrep '^[a-Z]' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log  # 日志文件
LogFileSize=0  # 日志文件大小,0 表示不限制大小,并关闭日志切割功能
PidFile=/var/run/zabbix/zabbix_server.pid  # 指定 pid 文件
SocketDir=/var/run/zabbix  # 指定 socket 文件
## 数据库相关配置
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log  # snmp 相关日志
Timeout=4  # 超时时间
AlertScriptsPath=/usr/lib/zabbix/alertscripts  # 告警脚本的路径
ExternalScripts=/usr/lib/zabbix/externalscripts  
LogSlowQueries=3000  # 慢查询日志超过 3000 毫秒记录日志
StatsAllowedIP=127.0.0.1  # 谁可以查看服务端状态

zabbix agent 相关文件

rpm -ql zabbix-agent2
/etc/logrotate.d/zabbix-agent2
/etc/zabbix/zabbix_agent2.conf
/etc/zabbix/zabbix_agent2.d
/usr/lib/systemd/system/zabbix-agent2.service
/usr/lib/tmpfiles.d/zabbix_agent2.conf
/usr/sbin/zabbix_agent2
/usr/share/doc/zabbix-agent2-5.0.36
/usr/share/man/man8/zabbix_agent2.8.gz
/var/log/zabbix
/var/run/zabbix

zabbix_agent2.conf

egrep -v '#|^$' /etc/zabbix/zabbix_agent2.conf 
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log  # 日志文件
LogFileSize=0
Server=127.0.0.1  # zabbix 服务端 ip 地址
ServerActive=127.0.0.1  # zabbix 客户端主动模式的服务端 IP 地址
Hostname=Zabbix server  # 客户端主机名
Include=/etc/zabbix/zabbix_agent2.d/*.conf  # 子配置文件的目录
ControlSocket=/tmp/agent.sock

自定义监控

  • 应用场景:默认的模板中没有我们需要的监控项
  • 提升性能:可以去掉不必要的监控项
  • 只要能通过命令取出来的内容,就可以做自定义监控

内置键值

[root@lnpm ~]# zabbix_agent2 -p
agent.hostname                                [s|Zabbix server]
agent.ping                                    [s|1]
agent.variant                                 [s|2]
agent.version                                 [s|5.0.36]
system.localtime[utc]                         [s|1690529410]
system.run[echo test]                         [m|ZBX_NOTSUPPORTED] [Unknown metric system.run]
web.page.get[localhost,,80]                   [m|ZBX_NOTSUPPORTED] [Cannot get 
web.page.perf[localhost,,80]                  [m|ZBX_NOTSUPPORTED] [Cannot get 
web.page.regexp[localhost,,80,OK]             [s|]
vfs.file.size[/etc/passwd]                    [s|1123]
vfs.file.time[/etc/passwd,modify]             [s|1690518903]
vfs.file.exists[/etc/passwd]                  [s|1]
vfs.file.contents[/etc/passwd]                [s|root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
nginx:x:997:995:Nginx web server:/var/lib/nginx:/sbin/nologin
php-fpm:x:1000:1000::/home/php-fpm:/sbin/nologin
zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin]
vfs.file.regexp[/etc/passwd,root]             [s|root:x:0:0:root:/root:/bin/bash]
vfs.file.regmatch[/etc/passwd,root]           [s|1]
vfs.file.md5sum[/etc/passwd]                  [s|134d8f7a80528c8f5cb803c02cdd06d9]
vfs.file.cksum[/etc/passwd]                   [s|1216594187]
vfs.dir.size[/var/log]                        [s|7243609]
vfs.dir.count[/var/log]                       [s|59]
net.dns[,zabbix.com]                          [s|1]
net.dns.record[,zabbix.com]                   [s|zabbix.com           SOA     =
net.tcp.dns[,zabbix.com]                      [m|ZBX_NOTSUPPORTED] [Unknown metric net.tcp.dns]
net.tcp.dns.query[,zabbix.com]                [m|ZBX_NOTSUPPORTED] [Unknown metric net.tcp.dns.query]
net.tcp.port[,80]                             [s|1]
system.users.num                              [s|1]
log[logfile]                                  [m|ZBX_NOTSUPPORTED] [The "log" key 
log.count[logfile]                            [m|ZBX_NOTSUPPORTED] [The "log.count" 
logrt[logfile]                                [m|ZBX_NOTSUPPORTED] [The "logrt" key 
logrt.count[logfile]                          [m|ZBX_NOTSUPPORTED] [The ]
zabbix.stats[127.0.0.1,10051]                 [m|ZBX_NOTSUPPORTED] [Cannot obtain ]
kernel.maxfiles                               [s|365312]
kernel.maxproc                                [s|131072]
vfs.fs.size[/,free]                           [s|34376478720]
vfs.fs.inode[/,free]                          [s|18344796]
vfs.fs.discovery                             .......
vfs.fs.get                                  ......
vfs.dev.write[sda,operations]                 [s|1989]
net.tcp.listen[80]                            [s|1]
net.udp.listen[68]                            [s|0]
net.if.in[lo,bytes]                           [s|17341]
net.if.out[lo,bytes]                          [s|17341]
net.if.total[lo,bytes]                        [s|34682]
net.if.collisions[lo]                         [s|0]
net.if.discovery                              .......
vm.memory.size[total]                         [s|3953967104]
proc.cpu.util[inetd]                          [s|0.000000]
proc.num[inetd]                               [s|0]
proc.mem[inetd]                               [s|0]
system.cpu.switches                           [s|1889536]
system.cpu.intr                               [s|1179761]
system.cpu.util[all,user,avg1]                [s|0.000000]
system.cpu.load[all,avg1]                     [s|0.000000]
system.cpu.num[online]                        [s|4]
system.cpu.discovery                          .....
system.uname                                  ......
system.hw.chassis                            ......
system.hw.cpu                                ......
system.hw.devices                             ......
system.hw.macaddr                             [s|[ens33] 00:0c:29:4e:6e:5a, [ens36] 00:0c:29:4e:6e:64]
system.sw.arch                                [s|x86_64]
system.sw.os                                  [s|Linux version 3.10.0-
system.sw.packages                           ......
system.swap.size[all,free]                    [s|4160745472]
system.swap.in[all]                           [s|0]
system.swap.out[all]                          [s|0]
system.uptime                                 [s|10553]
system.boottime                               [s|1690518867]
sensor[w83781d-i2c-0-2d,temp1]                [m|ZBX_NOTSUPPORTED] [Cannot obtain sensor information.]
net.tcp.service[ssh,127.0.0.1,22]             [s|1]
net.tcp.service.perf[ssh,127.0.0.1,22]        [s|0.007006]
net.udp.service[ntp,127.0.0.1,123]            [s|0]
net.udp.service.perf[ntp,127.0.0.1,123]       [s|0.000000]
system.hostname                               [s|lnpm]

具体步骤

  • 在这里我们以监控 nginx 的端口是否监听为例
  1. 使用命令或者 shell 获取监控项的结果

    netstat -lntp | grep -wc 80
    1
    
  2. 将上述命令写入配置文件并进行检测

    cat /etc/zabbix/zabbix_agent2.d/web.conf
    # UserParameters=<key>,<shell command>
    UserParameter=nginx.status,netstat -lntp | grep -wc 80
    systemctl restart zabbix-agent2
    # 服务端执行命令如下
    zabbix_get -s 172.17.1.11 -p 10050 -k "nginx.status"
    2
    
    # UserParameter 的另一种写法
    UserParameter=nginx.states[*],sh sudo /usr/local/src/script/status.sh "$1"
    # 执行的时候这样执行
    zabbix_get -s lnmp -k 'nginx.states[reading]'
    

    image-20230729092323499

  3. 在 web 界面配置监控项
    image-20230728153758684
    image-20230728154114181
    image-20230728160448131
    image-20230728160823868

触发器

image-20230728162732841

  • 触发器的表达式

    {主机名:key.功能}=0
    功能有:
    last() 最新的 
    nodata() 是否有数据
    diff()  是否发生变化
    max() 最大的
    min() 最小的
    

    image-20230728163358629

图形

image-20230728164114808

结果查看

image-20230728164454545

image-20230728164738346

image-20230728164909700

image-20230728165158625

客户端获取的值多余

image-20230729092512844

批量修改自定义监控

image-20230729092818109

自定义模板

image-20230729102217285

image-20230729102226770

image-20230729102312034

image-20230729102457941

image-20230729102923105

短信告警

  1. 开启邮箱的 smtp 功能,获取授权码
  2. 发件人:配置 zabbix 的报警媒介
  3. 收件人:配置用户接收报警
  4. 什么时候发邮件:配置动作
BUFAXVEUWFEBOZBH

image-20230729120429250

image-20230729120603636

增加用户群组和用户

  • 在用户群组或用户中添加告警媒介

image-20230729121651204

image-20230729121758626

image-20230729121957489

image-20230729122059237

将动作启用

image-20230729123140442

image-20230729123250295

image-20230729123449140

监控 java 程序

在 tomcat 中配置

egrep '^CATALINA_OPTS' /usr/local/tomcat/bin/catalina.sh 
# 开启 jmx 远程监控
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote=true"
# 远程监控的端口号为 12345
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.port=12345"
# 关闭用户认证
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"
# 关闭 ssl 加密
CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote.ssl=false"
# 本主机的 IP 地址
CATALINA_OPTS="$CATALINA_OPTS -Djava.rmi.server.hostname=192.168.222.11"

# 重启 tomcat 即可
# 查看监听的端口
netstat -lntp | grep java
tcp6       0      0 :::37943           LISTEN      21305/java          
tcp6       0      0 :::12345           LISTEN      21305/java          
tcp6       0      0 :::44987           LISTEN      21305/java          
tcp6       0      0 127.0.0.1:8005     LISTEN      21305/java          
tcp6       0      0 :::8080            LISTEN      21305/java          
    

在 java-geteway

  • 服务端安装 zabbix-java-gateway
egrep '^[a-Z]' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
# 重启
netstat -lntp | grep java
tcp6       0      0 :::10052    LISTEN      3179/java 

zabbix 服务端的配置

egrep '^(Java|StartJava)' /etc/zabbix/zabbix_server.conf 
JavaGateway=127.0.0.1  # zabbix-java-gateway 的主机地址
JavaGatewayPort=10052  # 监听端口号
StartJavaPollers=5  # 开设的进程数
# 重启
netstat -lntp | grep zabbix
tcp        0      0 0.0.0.0:10051             LISTEN      3189/zabbix_server  
tcp6       0      0 :::10050                  LISTEN      1110/zabbix_agent2  
tcp6       0      0 :::10051                  LISTEN      3189/zabbix_server

image-20230730154246504

image-20230730154323112

自动监控

自动发现

  1. 在需要监控的主机上安装 zabbix-server 并修改配置文件中的 Server字段

  2. 配置自动发现规则
    image-20230730185141217

  3. 创建自动发现动作

    image-20230730184055456
    image-20230730184509289
    image-20230730184724220

自动注册

修改客户端配置文件

egrep '^(Server|Host)' /etc/zabbix/zabbix_agent2.conf
Server=172.17.1.16
ServerActive=172.17.1.16  # 自动注册的服务端
HostnameItem=system.hostname  # 自动获取 hostname
HostMetadataItem=system.hostname  # 元数据信息

停用自动发现

image-20230731101431046

停用自动发现的动作

image-20230731101537039

添加自动注册动作

image-20230731102146150

image-20230731102039072

image-20230731102103486

查看服务端日志

  3385:20230731:102630.234 cannot send list of active checks to "172.17.1.12": host [database] not found
  3374:20230731:102704.614 enabling Zabbix agent checks on host "database": host became available

添加代理

部署代理服务器

# 确定 zabbix-proxy 安装版本
yum list | grep zabbix-proxy-mysql
zabbix-proxy-mysql.x86_64                5.0.36-1.el7                 zabbix    

# 去阿里云找到对应的版本安装即可
# 这里使用 yum 安装,因为有必要的依赖
yum install -y http://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-proxy-mysql-5.0.36-1.el7.x86_64.rpm
# 编辑配置文件
egrep '^(Server|DB|Host)' /etc/zabbix/zabbix_proxy.conf
Server=172.17.1.16
Hostname=JN-proxy
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=1
DBPort=3306

# 添加数据库
mysql -uroot -p1
create database zabbix_proxy character set utf8 collate utf8_bin;
create user zabbix@localhost identified by '1';
grant all privileges on zabbix_proxy.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;

# 注入 sql 语句
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.36/schema.sql.gz | mysql -uzabbix -p1 zabbix_proxy

# 启动、开机自启 proxy

image-20230731122353246

image-20230731122540371

成功

# 服务端的日志
3384:20230731:122607.193 cannot parse proxy data from active proxy at "172.17.1.12": proxy "JN-proxy" not found
  3384:20230731:122820.198 sending configuration data to proxy "JN-proxy" at "172.17.1.12", datalen 3662, bytes 1299 with compression ratio 2.8

image-20230731122943206

添加客户端

# 修改客户端的配置文件
egrep -w '^Server' /etc/zabbix/zabbix_agent2.conf 
Server=172.17.1.12   # 将服务端改为 proxy 的主机地址

image-20230731123441080

zabbix API

  • 根据 zabix 用户名和密码,获取 token
  • 使用 token 访问或调取 zabbix 资源
# 获取 token
curl -s -X POST -H content-type:application/json-rpc 172.17.1.16/api_jsonrpc.php -d '{
           "jsonrpc": "2.0",
           "method": "user.login",
           "params": {
               "user": "Admin",
               "password": "zabbix"
           },
           "id": 1,    
           "auth": null
}
' | jq
{
  "jsonrpc": "2.0",
  "result": "08c732196216551717dc982a6959f766",
  "id": 1
}
curl -s -X POST -H content-type:application/json-rpc 172.17.1.16/api_jsonrpc.php -d '{
           "jsonrpc": "2.0",
           "method": "user.login",
           "params": {
               "user": "Admin",
               "password": "zabbix"
           },
           "id": 1,    
           "auth": null
}
' | jq .result   # 获取多个值 jq ".result, .id"
"a11daeabb2fb023afb5da0e892838b2b"


# 官网 https://www.zabbix.com/documentation/5.0/en/manual/api/reference
# 获取主机列表
 curl -s -X POST -H content-type:application/json-rpc 172.17.1.16/api_jsonrpc.php -d  '{
           "jsonrpc": "2.0",
           "method": "host.get",
           "params": {
               "output": [
                   "hostid",
                   "host"
               ],
               "selectInterfaces": [
                   "interfaceid",
                   "ip"
               ]
           },
           "id": 2,
           "auth": "'$token'"
       }' | jq

性能优化

缓存和进程数量

  • xxxxcache:用于 zabbix 服务端缓存获取的各类数据
  • poller:用于接收各类数据的进程的数量(接收 agent、jmx 的数据的进程)
# 总缓存:用于存储主机、监控项、触发器数据的共享内存的大小
CacheSize=8M   # 可以优先修改总缓存

# 历史数据缓存
HistoryCacheSize=16M
# 历史数据索引缓存
HistoryIndexCacheSize=4M
# 趋势数据缓存
TrendCacheSize=4M
# 值的缓存
ValueCacheSize=8M

image-20230801092729927

grafana 安装与配置

  • 可以让 zabbix 中的图形更加的好看

安装 grafana

# 从阿里云镜像仓库中寻找
yum install -y https://mirrors.aliyun.com/grafana/yum/rpm/Packages/grafana-8.0.2-1.x86_64.rpm
systemctl start grafana-server.service 
systemctl enable grafana-server.service 
 netstat -lntp | grep 3000
tcp6       0      0 :::3000                  LISTEN      4028/grafana-server 
# 安装插件
grafana-cli  plugins list-remote | grep zabbix
id: alexanderzobnin-zabbix-app version: 4.2.6
# 安装不上
grafana-cli  plugins install alexanderzobnin-zabbix-app  4.2.6
Error: ✗ failed to download plugin archive: Failed to send request: Get "https://storage.googleapis.com/plugins-community/alexanderzobnin-zabbix-app/release/4.2.6/alexanderzobnin-zabbix-app-4.2.6.zip": read tcp 192.168.222.16:42446->172.217.160.80:443: read: connection reset by peer
# 页面搜索 alexanderzobnin-zabbix-app-4.2.6.zip 去 GitHub 下载即可
unzip alexanderzobnin-zabbix-app-4.2.6.zip 
mv alexanderzobnin-zabbix-app /var/lib/grafana/plugins/
systemctl restart grafana-server.service 
# 然后去 web 页面配置即可
# web 页面 用户名:admin 密码:admin


http://192.168.222.16/api_jsonrpc.php

image-20230801112104583

image-20230801112229222

image-20230801112304586

image-20230801112354879

image-20230801112455761

image-20230801112736644

查看成果

image-20230801112607606

全网监控

需要监控的监控项

负载均衡(nginx lvs haproxy)

  • 端口 80 的监控
  • keepalived 服务进程监控
  • tcp 11 种状态集的监控
  • nginx 状态监控
  • 日志每种状态码的数量
  • https 证书过期时间

web 服务器

  • 端口 80 和 9000 监控
  • nginx 状态监控
  • 访问日志状态码数量,监控每一种状态码的数量
  • nginx + php (phpinfo 监控)
  • php + 数据库 连接监控
  • php 状态
  • tomcat 多实例/单实例监控(jvm 内存使用情况)

数据库服务监控

  • 进程、端口
  • 磁盘的 i/o 情况

存储服务

  • 共享了那些目录的监控,共享目录大小的监控
  • nfs rpc 服务监控

监控项的类型

zabbix 客户端模式(被动) 通用,配合模板或自定义检控使用

zabbix 客户端(主动模式) zabbix 客户端主动把数据发送给服务端

简单检查 不需要客户端,功能少,只能检查网络情况

SNMP 简单网络管理协议,zabbix 监控网络设备使用

内部检查 监控 zabbix 内部进程,未来优化可以使用

HTTP 代理 由 zabbix server 发出 http 请求给客户端,根据响应进行二次加工处理

JMX 监控 Java 程序

IPMI 监控硬件

zabbix 开启主动模式

  • 修改客户端的配置文件Serveractive=
  • 服务端修改监控项类型:zabbix 客户端(主动模式)

自定义监控故障案例

权限

  • 原因:zabbix 客户端运行的时候为 zabbix 用户,获取数据可能导致故障 permission denied
  • 解决:授权 sudo,然后配置文件中使用 sudo
visudo
99 ## Allow root to run any commands anywhere
    100 root    ALL=(ALL)       ALL
    101 zabbix  ALL=(ALL:ALL)       ALL
cat /etc/zabbix/zabbix_agent2.d/web.conf 
# UserParameters=<key>,<shell command>
UserParameter=nginx.status,netstat -lntp | grep -wc 80
UserParameter=nginx.states[*],sh sudo /usr/local/src/script/status.sh "$1"
UserParameter=test.shadow,sudo cat /etc/shadow

执行时间

  • 客户端和服务端都有响应时间,如果客户端的命令执行时间超过了响应时间,就会导致命令执行失败
  • 解决:修改客户端和服务端的配置文件中的Timeout属性

zabbix 中文乱码问题

# 1. 在自己的 windows 上找到字体包
cd /code/zabbix/assets/fonts/
mv DejaVuSans.ttf DejaVuSans.ttf.bak
mv MSYH.TTC DejaVuSans.ttf

zabbix 修改中文

image-20230727212348644

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/58075.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

爬虫007_python中的输出以及格式化输出_以及输入---python工作笔记025

首先看输出 输出这里,注意不能直接上面这样,18需要转换成字符串 可以看到python中这个字符串和数字一起的时候,数字要转换一下成字符串. 然后这里要注意%s 和%d,这个s指的是字符串,d指的是数字 注意后面的内容前面要放个% ,然后多个参数的话,那么这里用(),里面用,号隔开 然…

面向对象程序三大特性一:多态(超详细)

目录 1.重写 1.1基本语法规则 1.2规则深化 1.3重写与重载的区别 2.向上转型 2.1简单介绍 2.3向上转型的作用 3.向下转型 3.1介绍 3.2instanceof 基本介绍 4.多态 4.1多态实现条件 4.2避免在构造方法中调用重写的方法 1.重写 重写 (override) &#xff1a;也称为覆…

iOS——Block签名

首先来看block结构体对象Block_layout&#xff08;等同于clang编译出来的__Block_byref_a_0&#xff09; #define BLOCK_DESCRIPTOR_1 1 struct Block_descriptor_1 {uintptr_t reserved;uintptr_t size; };#define BLOCK_DESCRIPTOR_2 1 struct Block_descriptor_2 {// requi…

华为数通HCIP-IP组播基础

点到点业务&#xff1a;比如FTP&#xff0c;WEB业务&#xff0c;此类业务主要特点是不同的用户有不同的需求&#xff0c;比如用户A需要下载资料A&#xff0c;用户B需要下载资料B。此类业务一般由单播承载&#xff0c;服务器对于不同用户发送不同的点到点数据流。 ospf、isis…

设计模式行为型——责任链模式

目录 什么是责任链模式 责任链模式的实现 责任链模式角色 责任链模式类图 责任链模式举例 责任链模式代码实现 责任链模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是责任链模式 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;又叫职…

SpringBoot整合邮件服务

SpringBoot整合邮件服务 发送邮件应该是网站的必备功能之一&#xff0c;什么注册验证&#xff0c;忘记密码或者是给用户发送营销信息。最早期的时候我们会 使用 JavaMail 相关 api 来写发送邮件的相关代码&#xff0c;后来 Spring 推出了 JavaMailSender 更加简化了邮件发送的…

前端下载文化部几种方法(excel,zip,html,markdown、图片等等)和导出 zip 压缩包

文章目录 1、location.href2、location.href3、a标签4、请求后端的方式5、文件下载的方式6、Blob和Base647、下载附件方法(excel,zip,html,markdown)8、封装下载函数9、导出 zip 压缩包相关方法(流方式) 总结 1、location.href //get请求 window.location.href url;2、locati…

电脑更新win10黑屏解决方法

电脑更新win10黑屏解决方法 电脑黑屏出现原因解决步骤 彻底解决 电脑黑屏 出现原因 系统未更新成功就关机&#xff0c;导致系统出故障无法关机 解决步骤 首先长安电源键10s关机 按电源键开机&#xff0c;出现logo时按F8进入安全模式。 进入自动修复环境后&#xff0c;单击…

freeswitch的mod_xml_curl模块

概述 freeswitch是一款简单好用的VOIP开源软交换平台。 随着fs服务的增多&#xff0c;每一台fs都需要在后台单独配置&#xff0c;耗时耗力&#xff0c;心力憔悴。 如果有一个集中管理配置的配置中心&#xff0c;统一管理所有fs的配置&#xff0c;并可以实现动态的修改配置就…

Linux磁盘管理

磁盘管理 基本分区管理 磁盘划分思路 进入分区表&#xff0c;新建分区更新分区表格式化分区表挂载使用 #lsblk #df -h 查看设备挂载情况 #fdisk -l 设备分区情况 #fdisk /dev/sdb 添加一块硬盘&#xff0c;需要将其分两个分区&#xff0c;分别格式化成ext4和vfat格式文件系…

Linux中提示No such file or directory解决方法

说明&#xff1a; 在linux下&#xff0c;./xxx.sh执行shell脚本时会提示No such file or directory。但shell明明存在&#xff0c;为什么就是会提示这个呢&#xff1f; 这种其实是因为编码方式不对&#xff0c;如你在win下编辑sh&#xff0c;然后直接复制到linux下面 实现&…

GPU版PyTorch对应安装教程

一、正确安装符合自己电脑的对应GPU版本的PyTorch之前需要了解三个基本概念 算力、CUDA driver version、CUDA runtime version ①算力&#xff1a;需要先知道你的显卡&#xff0c;之后根据官网表格进行对应&#xff0c;得到算力 ②CUDA driver version&#xff1a;电脑上显卡…

[C++]01.基础,数据类型,运算符

01.基础,数据类型,运算符 一.C基础入门1.HelloWorld2.注释3.变量4.常量5.关键字6.命名规则 二.数据类型1.整形2.sizeof关键字3.浮点型4.字符型5.转义字符6.字符串型7.布尔类型8.数据的输入 三.运算符1.算数运算符2.赋值运算符3.比较运算符4.逻辑运算符 一.C基础入门 1.HelloWo…

Java版Spring Cloud+Spring Boot+Mybatis+uniapp知识付费平台讲解+免费搭建 qt

&#xfeff;Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售…

LBP特征笔记

LBP&#xff0c;局部二值模式&#xff08;Local Binary Pattern&#xff09;&#xff0c;是一种描述图像局部纹理特征的方式&#xff0c;具有旋转不变性和灰度不变性。首先由T. Ojala, M.Pietikinen, 和 D. Harwood 在1994年提出。 LBP特征描述 基础LBP算子 基础的LBP算子定义…

【Axure教程】移动端二级滑动选择器

今天教大家制作移动端二级滑动选择器的原型模板&#xff0c;该原型已全国一二级省市选择器为案例&#xff0c;因为该原型用中继器做的&#xff0c;所以制作完成之后使用也很方便&#xff0c;只需修改中继器表格里的内容即可 一、效果展示 1. 拖动选择 2. 快捷选择 【原型预览…

s7200Smart

一、介绍 二、通讯 rs485 modbus通讯口

编辑接口和新增接口的分别调用

在后台管理系统中,有时候会碰到新增接口和编辑接口共用一个弹窗的时候. 一.场景 在点击新增或者编辑的时候都会使用这个窗口,新增直接调用接口进行增加即可&#xff0c;编辑则是打开这个窗口显示当前行的数据,然后调用编辑接口。 二.处理方法 在默认的情况下,这个窗口用来处理…

ansible配置文件案例

案例一 控制主机上的普通用户控制受控主机 控制端1台&#xff0c;受控端两台 1.将两台受控主机添加到/etc/hosts文件中 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhos…

微服务实战项目-学成在线-选课学习(支付与学习中心)模块

微服务实战项目-学成在线-选课学习(支付与学习中心)模块 1 模块需求分析 1.1 模块介绍 本模块实现了学生选课、下单支付、学习的整体流程。 网站的课程有免费和收费两种&#xff0c;对于免费课程学生选课后可直接学习&#xff0c;对于收费课程学生需要下单且支付成功方可选…