zabbix自定义监控进程和日志

自定义监控

进程

[root@client ~]# cd /usr/local/etc/
[root@client etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@client etc]# ss -antl
State    Recv-Q   Send-Q     Local Address:Port            Peer Address:Port        Process
LISTEN   0        128              0.0.0.0:22                   0.0.0.0:*
LISTEN   0        128              0.0.0.0:10050                0.0.0.0:*
LISTEN   0        128                 [::]:22                      [::]:*
[root@client etc]# dnf -y install httpd
...

[root@client etc]# systemctl start httpd
[root@client etc]# ss -antl
State    Recv-Q   Send-Q     Local Address:Port            Peer Address:Port        Process
LISTEN   0        128              0.0.0.0:22                   0.0.0.0:*
LISTEN   0        128              0.0.0.0:10050                0.0.0.0:*
LISTEN   0        128                    *:80                         *:*
LISTEN   0        128                 [::]:22                      [::]:*
[root@client etc]# ps -ef | grep httpd
root      831117       1  0 14:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    831789  831117  0 14:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    831791  831117  0 14:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    831792  831117  0 14:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    831793  831117  0 14:11 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root      834012  706474  0 14:13 pts/0    00:00:00 grep --color=auto httpd
[root@client etc]#  ps -ef | grep -v grep | grep httpd | wc -l
5
[root@client etc]# mkdir /scripts
[root@client etc]# cd /scripts/
[root@client scripts]# ls
[root@client scripts]# vim check_httpd.sh
 #!/bin/bash

count=$(ps -ef | grep -Ev "grep|$0" | grep httpd | wc -l)
if  [ $count -eq 0 ];then
      echo '1'
else
  echo '0'
fi
[root@client scripts]# chmod +x check_httpd.sh
[root@client scripts]# systemctl stop httpd
[root@client scripts]# ./check_httpd.sh
1
[root@client scripts]# ps -ef | grep httpd
root      854234  706474  0 14:25 pts/0    00:00:00 grep --color=auto httpd
[root@client scripts]# ps -ef | grep -v grep | grep httpd | wc -l
0                      (因为脚本本身有http)
[root@client scripts]#  systemctl start httpd
[root@client scripts]# ss -antl
State   Recv-Q   Send-Q     Local Address:Port      Peer Address:Port  Process
LISTEN  0        128              0.0.0.0:22             0.0.0.0:*
LISTEN  0        128              0.0.0.0:10050          0.0.0.0:*
LISTEN  0        128                    *:80                   *:*
LISTEN  0        128                 [::]:22                [::]:*
[root@client scripts]#
[root@client scripts]# ps -ef | grep httpd
root      877386       1  0 14:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    878090  877386  0 14:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    878091  877386  0 14:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    878092  877386  0 14:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
apache    878093  877386  0 14:40 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND
root      878791  706474  0 14:40 pts/0    00:00:00 grep --color=auto httpd
[root@client scripts]# ./check_httpd.sh
0

监控多个服务
[root@client scripts]# ls
check_httpd.sh
[root@client scripts]# mv check_httpd.sh check_process.sh
[root@client scripts]# ls
check_process.sh
[root@client scripts]# vim check_process.sh
#!/bin/bash

 count=$(ps -ef | grep -Ev "grep|$0" | grep $1 | wc -l)
 if  [ $count -eq 0 ];then
               echo '1'
       else
                 echo '0'
         fi
[root@client scripts]# ls
check_process.sh
[root@client scripts]# ss -antl
State   Recv-Q   Send-Q     Local Address:Port      Peer Address:Port  Process
LISTEN  0        128              0.0.0.0:22             0.0.0.0:*
LISTEN  0        128              0.0.0.0:10050          0.0.0.0:*
LISTEN  0        128                    *:80                   *:*
LISTEN  0        128                 [::]:22                [::]:*
[root@client scripts]# ./check_process.sh httpd     (有httpd)
0
[root@client scripts]# ./check_process.sh mysql    (没有mysql)
1
[root@client scripts]# ./check_process.sh zabbix    (有zabbix)
0

[root@client scripts]# cd
[root@client ~]# ll /scripts/
total 4
-rwxr-xr-x. 1 root root 153 Sep  6 14:53 check_process.sh
[root@client ~]# cd /usr/local/etc/
[root@client etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@client etc]# vim zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1
[root@client etc]# pkill zabbix
[root@client etc]# zabbix_agentd
[root@client etc]# tail zabbix_agentd.conf
      The maximum number of pending connections in the queue. This parameter is passed to
      listen() function as argument 'backlog' (see "man listen").

#
Mandatory: no
Range: 0 - INT_MAX (depends on system, too large values may be silently truncated to implementation-specified maximum)
Default: SOMAXCONN (hard-coded constant, depends on system)
ListenBacklog=
UnsafeUserParameters=1
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1

[root@client etc]# grep process zabbix_agentd.conf
      0 - basic information about starting and stopping of Zabbix processes
      Parameters are processed one by one according their appearance order.

      Parameters are processed one by one according their appearance order.

      Number of pre-forked instances of zabbix_agentd that process passive checks.

      Host metadata is used at host auto-registration process.

      Host metadata is used at host auto-registration process.

      Host interface is used at host auto-registration process.

      Host interface is used at host auto-registration process.

      or Proxy processing 'log' and 'logrt' active checks.

      Spend no more than Timeout seconds on processing
UserParameter=check_process[*],/bin/bash /scripts/check_process.sh $1

服务端
[root@localhost ~]# zabbix_get -s 192.168.29.141 -k check_process[httpd]
0
[root@localhost ~]# zabbix_get -s 192.168.29.141 -k check_process[mysql]
1
[root@client etc]# systemctl stop httpd
[root@localhost ~]# zabbix_get -s 192.168.29.141 -k check_process[httpd]
1

zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
配置触发器
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志

日志

同进程监控使用脚本

https://github.com/chendao2015/pyscripts
[root@client ~]# vim log.py

[root@client ~]# ls
anaconda-ks.cfg  httpd_html  log.py  web
[root@client ~]# mv log.py /scripts/
[root@client ~]# cd /scripts/
[root@client scripts]# ll
total 8
-rwxr-xr-x. 1 root root  153 Sep  6 14:53 check_process.sh
-rw-r--r--. 1 root root 1989 Sep  6 16:05 log.py
[root@client scripts]# chmod +x log.py
[root@client scripts]# ll
total 8
-rwxr-xr-x. 1 root root  153 Sep  6 14:53 check_process.sh
-rwxr-xr-x. 1 root root 1989 Sep  6 16:05 log.py

[root@client ~]# cd /var/log/httpd/
[root@client httpd]# ls
access_log  error_log
[root@client httpd]# ll
total 4
-rw-r--r--. 1 root root    0 Sep  6 14:11 access_log
-rw-r--r--. 1 root root 3549 Sep  6 15:16 error_log
[root@client httpd]# chmod 755 /var/log/httpd/
[root@client httpd]# ll

作用:检查日志文件中是否有指定的关键字
第一个参数为日志文件名(必须有,相对路径、绝对路径均可)
第二个参数为seek position文件的路径(可选项,若不设置则默认为/tmp/logseek文件。相对路径、绝对路径均可)
第三个参数为搜索关键字,默认为 Error

[root@client scripts]# yum -y install python3
[root@client scripts]# chmod +x log.py
[root@client scripts]# ll
total 8
-rwxr-xr-x. 1 root root  153 Sep  6 14:53 check_process.sh
-rwxr-xr-x. 1 root root 1854 Sep  6 16:20 log.py
[root@client scripts]# ./log.py /var/log/httpd/error_log
0
[root@client scripts]# ls /tmp/
abc                         vmware-root_932-2722632322
logseek                     vmware-root_941-4022177618
vmware-root_866-2722763301  zabbix_agentd.log
vmware-root_916-2689078442  zabbix_agentd.pid
vmware-root_927-3980167416
[root@client scripts]# cat /tmp/logseek
3549[root@client scripts]#

[root@client httpd]# echo "mary" >> error_log
[root@client httpd]# echo "mary" >> error_log
[root@client httpd]# echo "mary" >> error_log

3549[root@client scripts]# ./log.py /var/log/httpd/error_log
0
[root@client scripts]# cat /tmp/logseek
3564[root@client scripts]#
(3564-3549=4个字符+1个回车:字符串X3=15)

[root@client httpd]# echo "error" >> error_log
3564[root@client scripts]# ./log.py /var/log/httpd/error_log
0

[root@client httpd]# echo "Error" >> error_log
3570[root@client scripts]# ./log.py /var/log/httpd/error_log
1
[root@client scripts]# ls
check_process.sh  log.py
[root@client scripts]# cd /usr/local/etc/
[root@client etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@client etc]# vim zabbix_agentd.conf
UserParameter=check_logs[*],/scripts/log.py $1 $2 $3
[root@client etc]# pkill zabbix
[root@client etc]# zabbix_agentd
[root@client etc]# ll /tmp/
total 24
-rw-r--r--. 1 root   root     65 Sep  6 02:56 abc
-rw-r--r--. 1 root   root      4 Sep  6 16:31 logseek
drwx------. 2 root   root      6 Sep  5 23:41 vmware-root_866-2722763301
drwx------. 2 root   root      6 Sep  5 23:43 vmware-root_916-2689078442
drwx------. 2 root   root      6 Sep  5 23:39 vmware-root_927-3980167416
drwx------. 2 root   root      6 Sep  5 23:23 vmware-root_932-2722632322
drwx------. 2 root   root      6 Sep  4 20:43 vmware-root_941-4022177618
-rw-rw-r--. 1 zabbix zabbix 8310 Sep  6 16:36 zabbix_agentd.log
-rw-rw-r--. 1 zabbix zabbix    7 Sep  6 16:36 zabbix_agentd.pid
[root@client etc]# rm -f /tmp/logseek
[root@localhost ~]# zabbix_get -s 192.168.29.141 -k check_logs['/var/log/httpd/error_log']
1
[root@client etc]# ll /tmp/
total 24
-rw-r--r--. 1 root   root     65 Sep  6 02:56 abc
-rw-rw-r--. 1 zabbix zabbix    4 Sep  6 16:41 logseek
drwx------. 2 root   root      6 Sep  5 23:41 vmware-root_866-2722763301
drwx------. 2 root   root      6 Sep  5 23:43 vmware-root_916-2689078442
drwx------. 2 root   root      6 Sep  5 23:39 vmware-root_927-3980167416
drwx------. 2 root   root      6 Sep  5 23:23 vmware-root_932-2722632322
drwx------. 2 root   root      6 Sep  4 20:43 vmware-root_941-4022177618
-rw-rw-r--. 1 zabbix zabbix 8310 Sep  6 16:36 zabbix_agentd.log
-rw-rw-r--. 1 zabbix zabbix    7 Sep  6 16:36 zabbix_agentd.pid
[root@client etc]# rm -f /tmp/logseek
[root@client etc]# ll /tmp/
total 20
-rw-r--r--. 1 root   root     65 Sep  6 02:56 abc
drwx------. 2 root   root      6 Sep  5 23:41 vmware-root_866-2722763301
drwx------. 2 root   root      6 Sep  5 23:43 vmware-root_916-2689078442
drwx------. 2 root   root      6 Sep  5 23:39 vmware-root_927-3980167416
drwx------. 2 root   root      6 Sep  5 23:23 vmware-root_932-2722632322
drwx------. 2 root   root      6 Sep  4 20:43 vmware-root_941-4022177618
-rw-rw-r--. 1 zabbix zabbix 8310 Sep  6 16:36 zabbix_agentd.log
-rw-rw-r--. 1 zabbix zabbix    7 Sep  6 16:36 zabbix_agentd.pid
[root@localhost ~]# zabbix_get -s 192.168.29.141 -k check_logs['/var/log/httpd/error_log']
0

zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
故意触发警告
[root@client httpd]# echo "Error" >> error_log

zabbix自定义监控进程和日志
zabbix自定义监控进程和日志

mysql主从状态

两台主机需配置主从配置

[root@client ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_mysql_status,/bin/bash /scripts/mysql_status.sh
[root@client ~]# pkill zabbix_agentd
[root@client ~]# zabbix_agentd
[root@client ~]# vim /scripts/mysql_status.sh
#!/bin/bash
yes=mysql -uroot -p123456 -e " show slave status\G" 2> /dev/null |grep "Running:"|grep -c "Yes"
if [ $yes == 2  ]; then
        echo "0"
else
        echo "1"
fi
[root@client ~]# chmod +x /scripts/mysql_status.sh
[root@localhost ~]# zabbix_get -s 192.168.29.141 -k check_mysql_status
0

zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
[root@mr ~]# mysql -uroot -p123456 -e "stop client;"
mysql: [Warning] Using a password on the command line interface can be insecure.

zabbix自定义监控进程和日志

mysql主从延迟

[root@client ~]# vim /usr/local/etc/zabbix_agentd.conf
UserParameter=check_mysqlyc,/bin/bash /scripts/mysqlyc.sh
[root@client ~]# pkill zabbix_agentd
[root@client ~]# zabbix_agentd
[root@client ~]# vim /scripts/mysqlyc.sh
[root@client ~]# cat /scripts/mysqlyc.sh
#!/bin/bash
yc=mysql -uroot -p123456 -e "show slave status\G" 2> /dev/null |awk '/Seconds_Behind_Master/ {print $2}' 
echo $yc
[root@client ~]# chmod +x /scripts/mysqlyc.sh
[root@localhost ~]# zabbix_get -s 192.168.29.141 -k check_mysqlyc
0

zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
zabbix自定义监控进程和日志
延迟达到200就报警
zabbix自定义监控进程和日志

zabbix自定义监控进程和日志

Original: https://www.cnblogs.com/marymary/p/16662477.html
Author: 溜溜威
Title: zabbix自定义监控进程和日志

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581523/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 符号转义解决SSH远程命令执行的问题

    场景:服务器 A B C D 上存在一些日志,日志中的每行包含了日期、日志级别、日志信息等。现在要求从跳板机 X 获取这四台服务器上的数据,并通过规则(如日期)筛选,汇总到一个文件…

    Linux 2023年6月14日
    088
  • FTP文件服务的安装与部署

    FTP(文件传输协议)概念 FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、FTP被动模式,主被动模式均是以FTP服务器端为参照。企业实际环境中,…

    Linux 2023年6月7日
    090
  • JS实现点击图片放大、关闭效果

    实现效果: 点击图片在弹出层显示大图,点击大图或空白区域关闭大图,图片高度宽度根据窗口大小判断 html代码 <td width="350"> &l…

    Linux 2023年6月7日
    0123
  • 一文带你全面了解什么是颠覆时代的Web3.0未来互联网

    前言 大家还记得前段时间Meta公司,也就是FaceBook改名后的那家,CEO扎克伯格发的那张元宇宙自拍吗? 他没想到的是,随手的一张自拍却引来了群嘲,20年前的像素感,粗糙的人…

    Linux 2023年6月7日
    0103
  • 爱前端公开课学习笔记——JS03 运算符

    运算符的概述和加减运算课程丢失 乘法* 除法/ 直接在控制台中演示 主要是不要省略乘号 字符串不能进行乘除法运算 布尔型可以进行乘除法运算 false: 0 true: 1 乘除法…

    Linux 2023年6月14日
    072
  • Redis主从复制

    一、主从复制 1、redis为什么还要主从复制? 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支…

    Linux 2023年5月28日
    062
  • redis 安装和命令

    转自:https://blog.csdn.net/hzlarm/article/details/99432240 在线安装: 查看使用的默认端口: 查看redis服务器的状态: 重…

    Linux 2023年5月28日
    077
  • CSAPP 之 AttackLab 详解

    前言 本篇博客将会介绍 CSAPP 之 AttackLab 的攻击过程,利用缓冲区溢出错误进行代码注入攻击和 ROP 攻击。实验提供了以下几个文件,其中 ctarget 可执行文件…

    Linux 2023年6月7日
    092
  • Vim配置文件-详解(.vimrc)

    Vim配置文件的作用 Vim启动时,会根据配置文件(.vimrc)来设置 Vim,因此我们可以通过此文件来定制适合自己的 Vim 所有系统用户在启动Vim时,都会加载这个配置文件。…

    Linux 2023年6月13日
    083
  • Hadoop伪分布式的搭建

    1.准备Linux环境1.1 开启网络,ifconfig指令查看ip 1.2 修改主机名为自己名字(hadoop) 1.3修改主机名和IP的映射关系 1.4关闭防火墙 1.5重启L…

    Linux 2023年5月27日
    065
  • 真正在大厂干了几年,我学会了反内卷[转]

    内卷这个概念的内涵很丰富,与我们的生活息息相关。为了普及和传播知识,我参考了相关的信息,把我个人的粗浅理解奉献给朋友们。 什么是内卷? 内卷 involution,与之对应的是 e…

    Linux 2023年6月8日
    0108
  • 鞍点

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月7日
    0127
  • 设计模式——结构性设计模式

    结构性设计模式 针对类与对象的组织结构。(白话:类与对象之间的交互的多种模式 类/对象适配器模式 当需要传入一个A类型参数,但只有B类型类时,就需要一个A类型的适配器装入B类的数据…

    Linux 2023年6月7日
    0120
  • debugfs使用指南

    debugfs 概述 类似sysfs、procfs,debugfs 也是一种内存文件系统。不过不同于sysfs一个kobject对应一个文件,procfs和进程相关的特性,debu…

    Linux 2023年6月7日
    085
  • Java使用Redis删除指定前缀Key

    Java使用Redis删除指定前缀Key // 获取Redis中特定前缀 Set keys = stringRedisTemplate.keys("BLOG_SORT_B…

    Linux 2023年5月28日
    090
  • Bash编程中对字符串的操作

    Bash的字符串操作 String="Hello World" #获取字符串长度,获取字符长度的变量调用应该使用${},这里大括号是必须的 #例1-1 echo…

    Linux 2023年6月13日
    0101
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球