Zabbix安装和自定义监控项
安装Zabbix服务端
Zabbix服务端分为两个部分:提供前端交互的Web服务端和存储数据的MySQL数据库
设置Zabbix数据库
这里直接使用docker的MySQL镜像,使用下面的docker-compose:
version: "3"services: db: image: mysql:5.7 command: - --default_authentication_plugin=mysql_native_password - --character-set-server=utf8 - --collation-server=utf8_unicode_ci volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: 密码 MYSQL_DATABASE: zabbix MYSQL_PASSWORD: 密码
volumes: db_data:启动:
docker-compose -f docker-compose.yml up -d此时Zabbix数据库已经建好了,但还只是个空壳,具体的库表还需要再安装好Zabbix后导入。
安装Zabbix-server
配置yum源
这里用的是清华源:
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm修改repo文件,改为清华源
sed -i 's#repo.zabbix.com#mirrors.tuna.tsinghua.edu.cn/zabbix#g' /etc/yum.repos.d/zabbix.repo安装Zabbix和其他组件
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent php-fpm导入Zabbix数据库库表,创建Zabbix用户
zcat /usr/share/doc/zabbix-server-mysql/create.sql.gz | mysql -h172.18.0.2 -uroot -p密码 zabbix创建zabbix用户并授权
grant all privileges on zabbix.* to zabbix@localhost identified by 'password';修改zabbix-server配置文件
配置文件:/etc/zabbix/zabbix_server.conf。
主要是修改数据库部分
DBHost=localhostDBName=zabbixDBUser=zabbixDBPassword=密码最后启动服务
配置Nginx代理Zabbix前端
server { listen 80; listen [::]:80; server_name _; root /usr/share/zabbix/; index index.php index.html; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf;
location / { try_files $uri $uri/ /index.php?$args; }
location ~ [^/]\.php(/|$) { fastcgi_buffer_size 128k; fastcgi_buffers 32 32k; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include fastcgi.conf; }}因为zabbix的前端是用php写的,所以这时候就用到了php-fpm用来处理动态请求。
重启Nginx后访问IP
安装配置zabbix前端
安装zabbix前端主要就是检查php的一些变量和配置和数据库的链接。
所有显示没有达到要求的选项都可以在php.ini文件中进行修改。

安装过程中可能出现的错误
500报错
500报错是前后端没有建立有效的链接,或者后端无法提供服务。
首先要查看zabbix-server,php-fpm是否正常启动了;如果这两个没问题可以查看php-fpm的日志/var/log/php-fpm/error.log。
如果报错是:Failed opening required '/etc/zabbix/web/maintenance.inc.php'那么找到对应的文件,将他的属主属组修改问nginx的运行用户就可以了
chown -R nginx.nginx /etc/zabbix/web/maintenance.inc.php如果nginx父进程是是root运行的,则不会出现这个问题。
安装前端时网页大量报错

mkdir -p /var/lib/php/session && chmod 1733 /var/lib/php/session无法显示中文
在选项中修改界面语言为中文后,中文全是方块,这是因为缺少zabbix所需的字体。
# 安装字体yum install wqy-microhei-fonts -y# 替换默认字体cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf自定义监控项
监控docker容器状态
首先创建一个shell脚本,这个脚本主要是利用docker ps | grep来查看指定的容器是否正在运行,如果正在运行则返回1,否则返回0
#!/bin/bashresult=$(docker ps | grep $1)if [ -z "$result" ]; then echo "0"else echo "1"fiunset result编写zabbix-agent监控项配置文件
echo 'UserParameter=container.status[*],/bin/bash /etc/zabbix/scripts/docker_containers.sh $1' > /etc/zabbix/zabbix_agentd.d/docker_containers.conf将docker用户组设置为zabbix用户的附加组
usermod -aG docker zabbix修改docker的socket文件权限
chmod 666 /run/docker.sock修改完权限后,zabbix用户才能有权限访问到docker的容器列表。
使用zabbix_get命令确认监控项是否生效
zabbix_get -s 127.0.0.1 -k container.status[alist_alist_1]如果得到了预期的结果(1或0),则说明该监控项可以正常使用。
在zabbix前端配置监控项
新建一个docker模板

给模板创建监控项


查看最新数据

创建触发器
触发器是当监控项满足一定条件时就会自动触发的动作,一般是用来提供告警信息,比如当某个容器的状态为0时,就提示警报。

支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
部分内容可能已过时