-
Notifications
You must be signed in to change notification settings - Fork 42
/
Copy pathsimple-zabbix-grafana-domain-expiry-ssl-expiry.sh
135 lines (101 loc) · 4.08 KB
/
simple-zabbix-grafana-domain-expiry-ssl-expiry.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/bin/bash
# Purpose: Monitoring
# OS AmazonLinux
# Maintainer DevOps Muhammad Asim <[email protected]>
# Docker Installation
yum install -y docker 2>&1 > /dev/null
systemctl start docker
systemctl enable docker
# Docker Compose Installation
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version
# Zabbix Default Password
#Admin
#zabbix
# Docker Network
docker network create zabbix --attachable
# Start empty MySQL server instance
docker volume create zabbix-mysql
docker volume create zabbix-mysql-conf
docker run --name mysql-server -t --restart unless-stopped \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456789" \
-v zabbix-mysql:/var/lib/mysql \
-v zabbix-mysql-conf:/etc/mysql/conf.d \
--network "zabbix" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-id mysql:latest \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password
sleep 10
# Start Zabbix server instance and link the instance with created MySQL server instance
docker volume create zabbix-conf
docker run --name zabbix-server -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456789" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-v zabbix-conf:/etc/zabbix \
-h zabbix-server \
--network "zabbix" \
--link mysql-server:mysql \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:latest
sleep 10
# Start Zabbix web interface and link the instance with created MySQL server and Zabbix server instances
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123456789" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--network "zabbix" \
--link mysql-server:mysql \
--link zabbix-server:zabbix-server \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:latest
sleep 10
# Zabbix-Agent
docker run --name zabbix-agent --network="zabbix" --restart unless-stopped -id zabbix/zabbix-agent:latest
docker volume create grafana-etc
docker volume create grafana
docker run -id --name=grafana --network zabbix -v grafana:/var/lib/grafana -v grafana-etc:/etc/grafana -p 3000:3000 grafana/grafana:latest
docker exec grafana grafana-cli plugins install alexanderzobnin-zabbix-app
docker restart grafana
# Configurations
docker exec -u root -it zabbix-agent apk add openssl whois
# Domain SSL Expiry
echo 'data=`echo | openssl s_client -servername $1 -connect $1:${2:-443} 2>/dev/null | openssl x509 -noout -enddate | sed -e 's#notAfter=##'`
ssldate=`date -d "${data}" '+%s'`
nowdate=`date '+%s'`
diff="$((${ssldate}-${nowdate}))"
echo $((${diff}/86400))' > domain_ssl_expiry.sh
chmod +x domain_ssl_expiry.sh
docker cp domain_ssl_expiry.sh zabbix-agent:/var/lib/zabbix/domain_ssl_expiry.sh
# Domain Expiry
docker run --name tmp-container -id quickbooks2018/zabbix-agent
docker cp tmp-container:/var/lib/zabbix/checkdomain.sh .
chmod +x checkdomain.sh
mv checkdomain.sh domain_expiry.sh
docker cp domain_expiry.sh zabbix-agent:/var/lib/zabbix/domain_expiry.sh
# Zabbix-Agent Configurations
docker cp tmp-container:/etc/zabbix/zabbix_agentd.conf .
docker cp zabbix_agentd.conf zabbix-agent:/etc/zabbix/zabbix_agentd.conf
docker rm -f tmp-container
docker restart zabbix-agent
rm -f domain_ssl_expiry.sh domain_expiry.sh zabbix_agentd.conf
#END
# Addtional Notes
# Zabbix API
# http://privateip/api_jsonrpc.php # Eg: http://10.20.1.20/api_jsonrpc.php
# http://127.0.0.1/zabbix/api_jsonrpc.php # Eg: http://172.31.10.4/zabbix/api_jsonrpc.php
# http://172.31.15.234/zabbix/api_jsonrpc.php
# http://zabbix-web-nginx-mysql:8080/api_jsonrpc.php
# Docker remove all containers
# docker rm -f $(docker ps -aq)