标签归档:docker zabbix

docker 安装zabbix

#######参考文档#######

https://www.cnblogs.com/Dicky-Zhang/p/7189714.html    https://blog.rj-bai.com/post/144.html

监控出入流量:https://www.cnblogs.com/smail-bao/p/6109882.html

监控某个端口:https://blog.51cto.com/shuzonglu/2104195

tcp状态监控脚本和模板:https://www.cnblogs.com/hyzhou/p/7019464.html  https://www.cnblogs.com/dannylinux/p/8694171.html

zabbix监控redis,rocketmq;https://github.com/cuimingkun/zbx_tem_redis

常用模板:https://cloud.tencent.com/info/ce1d393f124949962a7dcde477efca39.html

1.拉取镜像:需要用到三个镜像:

mysql:数据库镜像,官方最新为mysql8

zabbix/zabbix-agent:客户端镜像

zabbix/zabbix-web-nginx-mysql:web界面镜像

zabbix/zabbix-server-mysql :server镜像

2.配置mysql:

docker run --name zabbix-mysql-server --hostname zabbix-mysql-server \
-v /junosoft/docker_data/mysql/zabbix:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="root123" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-p 13306:3306  \
-d mysql \
--character-set-server=utf8 --collation-server=utf8_bin

3.配置zabbix镜像:

docker run  --name zabbix-server-mysql --hostname zabbix-server-mysql \
--link zabbix-mysql-server:mysql \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-v /etc/localtime:/etc/localtime:ro \
-v /junosoft/docker_data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /junosoft/docker_data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
-d \
zabbix/zabbix-server-mysql

4.配置web界面:

最后安装zabbix-web-nginx
docker run --name zabbix-web-nginx-mysql1 --hostname zabbix-web-nginx-mysql \
--link zabbix-mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-e DB_SERVER_HOST="mysql" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix" \
-e MYSQL_DATABASE="zabbix" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-p 18000:80 \
-p 18443:443 \
-d \
zabbix/zabbix-web-nginx-mysql

5.agent安装:

docker run --name zabbix-agent --link zabbix-server-mysql:zabbix-server -e ZBX_SERVER_HOST="zabbix-server" -p 20050:10050 -d zabbix/zabbix-agent:latest
docker run --name zabbix-agent -e ZBX_SERVER_HOST="10.101.1.41" -p 10050:10050 -d zabbix/zabbix-agent:latest

–配置nginx监控脚本:https://www.cnblogs.com/bixiaoyu/p/9169319.html

(1)nginx配置文件添加:

location /status {
stub_status on;
access_log off;
allow 192.168.2.0/24;
allow 127.0.0.1;
deny all;
}

(2)在客户端镜像中添加脚本文件:nginx_monitor.sh,并赋予执行权限:

NGINX_PORT=80  
NGINX_COMMAND=$1
nginx_active(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Writing/ {print $4}'
       }
nginx_waiting(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Waiting/ {print $6}'
       }
nginx_accepts(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $1}'
       }
nginx_handled(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $2}'
       }
nginx_requests(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $3}'
       }
  case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
      *)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
    esac

(3)zabbix_agent.conf

UserParameter=status[*],/bin/bash /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monitor.sh "$1"

(4)服务端测试:

[root@zabbix-server ~]#zabbix_get -s 192.168.2.146 -k status
USAGE:/usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monitor.sh {active|reading|writing|waiting|accepts|handled|requests}

(5)web界面添加模板:

–添加监控项:分别添加7个监控项,active|reading|writing|waiting|accepts|handled|requests

–添加完成

—图形创建:

—在主机,模板中添加

–在监控图形中即可找到:

###################报错内容###############

1.Docker报错 WARNING: IPv4 forwarding is disabled. Networking will not work.

修改系统文件/etc/sysctl.conf,net.ipv4.ip_forward=1
sysctl -p生效,重新建立镜像即可;

2.MySQL报错:MySQL8.0提示 caching_sha2_passwor' cannot be loaded

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';
ALTER USER 'zabbix'@'%' IDENTIFIED WITH mysql_native_password BY 'zabbix';

3.中文乱码:https://www.linuxidc.com/Linux/2017-08/146162.htm

本地C:\Windows\Fonts找一种喜欢的语言,比如我选择宋体,上传到服务器上,如果是docker镜像,可以安装apk add openssh

##############心得###########

(1)每安装完一个镜像,记得用docker logs看下,是否有问题,遇到问题日志分析;

##############客户端安装#####################

(1)如下:

在客户端上也需要下载zabbix的yum源
wget http://repo.zabbix.com/zabbix/4.1/rhel/7/x86_64/zabbix-release-4.1-1.el7.noarch.rpm
rpm -ivh zabbix-release-4.1-1.el7.noarch.rpm
yum install -y zabbix-agent
vim /etc/zabbix/zabbix_agentd.conf //修改如下配置
Server=127.0.0.1修改为Server=192.168.133.130 //定义服务端的ip(被动模式)
ServerActive=127.0.0.1修改为ServerActive=192.168.133.130 //定义服务端的ip(主动模式)
Hostname=Zabbix server修改为Hostname=aming-123 //这是自定义的主机名,一会还需要在web界面下设置同样的主机名
setenforce 0
systemctl start zabbix-agent
systemctl enable zabbix-agent

(2)主动模式和被动模式:

主动模式和被动模式
主动或者被动是相对客户端来讲的
被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端
主动模式,客户端会主动把监控数据汇报给服务端,服务端只负责接收即可。
当客户端数量非常多时,建议使用主动模式,这样可以降低服务端的压力。
服务端有公网ip,客户端只有内网ip,但却能连外网,这种场景适合主动模式