zabbix urbackup
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
#!/sbin/openrc-run
|
||||||
|
# $Id$
|
||||||
|
|
||||||
|
URBACKUPCLIENT_CONFIG="/etc/conf.d/urbackupclient"
|
||||||
|
URBACKUPCLIENT_PIDFILE="/var/run/urbackupclient.pid"
|
||||||
|
|
||||||
|
command="/usr/local/sbin/urbackupclientbackend"
|
||||||
|
command_args="-c ${URBACKUPCLIENT_CONFIG} -w ${URBACKUPCLIENT_PIDFILE} -d"
|
||||||
|
pidfile="${URBACKUPCLIENT_PIDFILE}"
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
use logger net urbackupsrv
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
APT::Periodic::Enable "1";
|
||||||
|
APT::Periodic::Update-Package-Lists "1";
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# https://support.zabbix.com/browse/ZBX-12164
|
||||||
|
# https://github.com/kvaps/zabbix-linux-container-template
|
||||||
|
UserParameter=ct.memory.size[*],free -b | awk '$ 1 == "Mem:" {total=$ 2; used=($ 3+$ 5); pused=(($ 3+$ 5)*100/$ 2); free=$ 4; pfree=($ 4*100/$ 2); shared=$ 5; buffers=$ 6; cache=$ 6; available=($ 6+$ 7); pavailable=(($ 6+$ 7)*100/$ 2); if("$1" == "") {printf("%.0f", total )} else {printf("%.0f", $1 "" )} }'
|
||||||
|
UserParameter=ct.swap.size[*],free -b | awk '$ 1 == "Swap:" {total=$ 2; used=$ 3; free=$ 4; pfree=($ 4*100/$ 2); pused=($ 3*100/$ 2); if("$1" == "") {printf("%.0f", free )} else {printf("%.0f", $1 "" )} }'
|
||||||
|
UserParameter=ct.cpu.load[*],uptime | awk -F'[, ]+' '{avg1=$(NF-2); avg5=$(NF-1); avg15=$(NF)}{print $2/'$(nproc)'}'
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
#
|
||||||
|
# -a active
|
||||||
|
# -a accepted
|
||||||
|
# -a handled
|
||||||
|
# -a requests
|
||||||
|
# -a reading
|
||||||
|
# -a writing
|
||||||
|
# -a waiting
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import getopt
|
||||||
|
import urllib2
|
||||||
|
import re
|
||||||
|
import ssl
|
||||||
|
|
||||||
|
|
||||||
|
def usage():
|
||||||
|
print "usage: nginx-stat.py -h 127.0.0.1 -p 80 -a [active|accepted|handled|request|reading|writing|waiting]"
|
||||||
|
sys.exit(2)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
# Default values
|
||||||
|
host = "localhost"
|
||||||
|
port = "80"
|
||||||
|
getInfo = "None"
|
||||||
|
proto = "http"
|
||||||
|
_headers = {}
|
||||||
|
gcontext = ""
|
||||||
|
|
||||||
|
|
||||||
|
if len(sys.argv) < 2:
|
||||||
|
usage()
|
||||||
|
|
||||||
|
try:
|
||||||
|
opts, _ = getopt.getopt(sys.argv[1:], "h:p:a:")
|
||||||
|
except getopt.GetoptError:
|
||||||
|
usage()
|
||||||
|
|
||||||
|
# Assign parameters as variables
|
||||||
|
for opt, arg in opts:
|
||||||
|
if opt == "-h":
|
||||||
|
host = arg
|
||||||
|
if opt == "-p":
|
||||||
|
port = arg
|
||||||
|
if opt == "-a":
|
||||||
|
getInfo = arg
|
||||||
|
|
||||||
|
if port == "443":
|
||||||
|
proto = "https"
|
||||||
|
_headers = {'X-Mashape-Key': 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'}
|
||||||
|
gcontext = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
|
||||||
|
|
||||||
|
url = proto + "://" + host + ":" + port + "/nginx_status/"
|
||||||
|
request = urllib2.Request(url, headers=_headers)
|
||||||
|
result = urllib2.urlopen(request, context=gcontext)
|
||||||
|
|
||||||
|
buffer = re.findall(r'\d{1,8}', result.read())
|
||||||
|
|
||||||
|
## Format:
|
||||||
|
## Active connections: 196
|
||||||
|
## server accepts handled requests
|
||||||
|
## 272900 272900 328835
|
||||||
|
## Reading: 0 Writing: 6 Waiting: 190
|
||||||
|
|
||||||
|
if getInfo == "active":
|
||||||
|
print buffer[0]
|
||||||
|
elif getInfo == "accepted":
|
||||||
|
print buffer[1]
|
||||||
|
elif getInfo == "handled":
|
||||||
|
print buffer[2]
|
||||||
|
elif getInfo == "requests":
|
||||||
|
print buffer[3]
|
||||||
|
elif getInfo == "reading":
|
||||||
|
print buffer[4]
|
||||||
|
elif getInfo == "writing":
|
||||||
|
print buffer[5]
|
||||||
|
elif getInfo == "waiting":
|
||||||
|
print buffer[6]
|
||||||
|
else:
|
||||||
|
print "unknown"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,560 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<zabbix_export>
|
||||||
|
<version>3.4</version>
|
||||||
|
<date>2017-12-20T20:10:24Z</date>
|
||||||
|
<groups>
|
||||||
|
<group>
|
||||||
|
<name>Templates</name>
|
||||||
|
</group>
|
||||||
|
</groups>
|
||||||
|
<templates>
|
||||||
|
<template>
|
||||||
|
<template>Template App Nginx</template>
|
||||||
|
<name>Template App Nginx</name>
|
||||||
|
<description/>
|
||||||
|
<groups>
|
||||||
|
<group>
|
||||||
|
<name>Templates</name>
|
||||||
|
</group>
|
||||||
|
</groups>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<items>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Accepted Requests</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.accepted[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
<delay>5m</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>365d</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>9</type>
|
||||||
|
<params/>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Active Connections</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.active[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
<delay>5m</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>365d</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing/>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Handled Requests</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.handled[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
<delay>5m</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>365d</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>9</type>
|
||||||
|
<params/>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Reading Connections</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.reading[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
<delay>5m</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>365d</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing/>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Total Requests</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.total[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
<delay>5m</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>365d</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing>
|
||||||
|
<step>
|
||||||
|
<type>9</type>
|
||||||
|
<params/>
|
||||||
|
</step>
|
||||||
|
</preprocessing>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Version</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.version</key>
|
||||||
|
<delay>12h</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>0</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>1</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing/>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Waiting Connections</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.waiting[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
<delay>5m</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>365d</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing/>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<name>Nginx Writing Connections</name>
|
||||||
|
<type>0</type>
|
||||||
|
<snmp_community/>
|
||||||
|
<snmp_oid/>
|
||||||
|
<key>nginx.writing[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
<delay>5m</delay>
|
||||||
|
<history>1w</history>
|
||||||
|
<trends>365d</trends>
|
||||||
|
<status>0</status>
|
||||||
|
<value_type>3</value_type>
|
||||||
|
<allowed_hosts/>
|
||||||
|
<units/>
|
||||||
|
<snmpv3_contextname/>
|
||||||
|
<snmpv3_securityname/>
|
||||||
|
<snmpv3_securitylevel>0</snmpv3_securitylevel>
|
||||||
|
<snmpv3_authprotocol>0</snmpv3_authprotocol>
|
||||||
|
<snmpv3_authpassphrase/>
|
||||||
|
<snmpv3_privprotocol>0</snmpv3_privprotocol>
|
||||||
|
<snmpv3_privpassphrase/>
|
||||||
|
<params/>
|
||||||
|
<ipmi_sensor/>
|
||||||
|
<authtype>0</authtype>
|
||||||
|
<username/>
|
||||||
|
<password/>
|
||||||
|
<publickey/>
|
||||||
|
<privatekey/>
|
||||||
|
<port/>
|
||||||
|
<description/>
|
||||||
|
<inventory_link>0</inventory_link>
|
||||||
|
<applications>
|
||||||
|
<application>
|
||||||
|
<name>Nginx</name>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
<valuemap/>
|
||||||
|
<logtimefmt/>
|
||||||
|
<preprocessing/>
|
||||||
|
<jmx_endpoint/>
|
||||||
|
<master_item/>
|
||||||
|
</item>
|
||||||
|
</items>
|
||||||
|
<discovery_rules/>
|
||||||
|
<httptests/>
|
||||||
|
<macros>
|
||||||
|
<macro>
|
||||||
|
<macro>{$NGINX_PORT}</macro>
|
||||||
|
<value>80</value>
|
||||||
|
</macro>
|
||||||
|
</macros>
|
||||||
|
<templates/>
|
||||||
|
<screens>
|
||||||
|
<screen>
|
||||||
|
<name>Nginx Performance</name>
|
||||||
|
<hsize>2</hsize>
|
||||||
|
<vsize>1</vsize>
|
||||||
|
<screen_items>
|
||||||
|
<screen_item>
|
||||||
|
<resourcetype>0</resourcetype>
|
||||||
|
<width>500</width>
|
||||||
|
<height>100</height>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<colspan>1</colspan>
|
||||||
|
<rowspan>1</rowspan>
|
||||||
|
<elements>0</elements>
|
||||||
|
<valign>0</valign>
|
||||||
|
<halign>0</halign>
|
||||||
|
<style>0</style>
|
||||||
|
<url/>
|
||||||
|
<dynamic>0</dynamic>
|
||||||
|
<sort_triggers>0</sort_triggers>
|
||||||
|
<resource>
|
||||||
|
<name>Nginx Requests Statistics</name>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
</resource>
|
||||||
|
<max_columns>3</max_columns>
|
||||||
|
<application/>
|
||||||
|
</screen_item>
|
||||||
|
<screen_item>
|
||||||
|
<resourcetype>0</resourcetype>
|
||||||
|
<width>500</width>
|
||||||
|
<height>100</height>
|
||||||
|
<x>1</x>
|
||||||
|
<y>0</y>
|
||||||
|
<colspan>1</colspan>
|
||||||
|
<rowspan>1</rowspan>
|
||||||
|
<elements>0</elements>
|
||||||
|
<valign>0</valign>
|
||||||
|
<halign>0</halign>
|
||||||
|
<style>0</style>
|
||||||
|
<url/>
|
||||||
|
<dynamic>0</dynamic>
|
||||||
|
<sort_triggers>0</sort_triggers>
|
||||||
|
<resource>
|
||||||
|
<name>Nginx Connection Status</name>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
</resource>
|
||||||
|
<max_columns>3</max_columns>
|
||||||
|
<application/>
|
||||||
|
</screen_item>
|
||||||
|
</screen_items>
|
||||||
|
</screen>
|
||||||
|
</screens>
|
||||||
|
</template>
|
||||||
|
</templates>
|
||||||
|
<graphs>
|
||||||
|
<graph>
|
||||||
|
<name>Nginx Connection Status</name>
|
||||||
|
<width>900</width>
|
||||||
|
<height>200</height>
|
||||||
|
<yaxismin>0.0000</yaxismin>
|
||||||
|
<yaxismax>100.0000</yaxismax>
|
||||||
|
<show_work_period>1</show_work_period>
|
||||||
|
<show_triggers>1</show_triggers>
|
||||||
|
<type>0</type>
|
||||||
|
<show_legend>1</show_legend>
|
||||||
|
<show_3d>0</show_3d>
|
||||||
|
<percent_left>0.0000</percent_left>
|
||||||
|
<percent_right>0.0000</percent_right>
|
||||||
|
<ymin_type_1>0</ymin_type_1>
|
||||||
|
<ymax_type_1>0</ymax_type_1>
|
||||||
|
<ymin_item_1>0</ymin_item_1>
|
||||||
|
<ymax_item_1>0</ymax_item_1>
|
||||||
|
<graph_items>
|
||||||
|
<graph_item>
|
||||||
|
<sortorder>0</sortorder>
|
||||||
|
<drawtype>5</drawtype>
|
||||||
|
<color>00C800</color>
|
||||||
|
<yaxisside>0</yaxisside>
|
||||||
|
<calc_fnc>2</calc_fnc>
|
||||||
|
<type>0</type>
|
||||||
|
<item>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
<key>nginx.active[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
</item>
|
||||||
|
</graph_item>
|
||||||
|
<graph_item>
|
||||||
|
<sortorder>1</sortorder>
|
||||||
|
<drawtype>0</drawtype>
|
||||||
|
<color>0000C8</color>
|
||||||
|
<yaxisside>0</yaxisside>
|
||||||
|
<calc_fnc>2</calc_fnc>
|
||||||
|
<type>0</type>
|
||||||
|
<item>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
<key>nginx.reading[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
</item>
|
||||||
|
</graph_item>
|
||||||
|
<graph_item>
|
||||||
|
<sortorder>2</sortorder>
|
||||||
|
<drawtype>0</drawtype>
|
||||||
|
<color>C80000</color>
|
||||||
|
<yaxisside>0</yaxisside>
|
||||||
|
<calc_fnc>2</calc_fnc>
|
||||||
|
<type>0</type>
|
||||||
|
<item>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
<key>nginx.waiting[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
</item>
|
||||||
|
</graph_item>
|
||||||
|
<graph_item>
|
||||||
|
<sortorder>3</sortorder>
|
||||||
|
<drawtype>0</drawtype>
|
||||||
|
<color>C800C8</color>
|
||||||
|
<yaxisside>0</yaxisside>
|
||||||
|
<calc_fnc>2</calc_fnc>
|
||||||
|
<type>0</type>
|
||||||
|
<item>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
<key>nginx.writing[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
</item>
|
||||||
|
</graph_item>
|
||||||
|
</graph_items>
|
||||||
|
</graph>
|
||||||
|
<graph>
|
||||||
|
<name>Nginx Requests Statistics</name>
|
||||||
|
<width>900</width>
|
||||||
|
<height>200</height>
|
||||||
|
<yaxismin>0.0000</yaxismin>
|
||||||
|
<yaxismax>100.0000</yaxismax>
|
||||||
|
<show_work_period>1</show_work_period>
|
||||||
|
<show_triggers>1</show_triggers>
|
||||||
|
<type>0</type>
|
||||||
|
<show_legend>1</show_legend>
|
||||||
|
<show_3d>0</show_3d>
|
||||||
|
<percent_left>0.0000</percent_left>
|
||||||
|
<percent_right>0.0000</percent_right>
|
||||||
|
<ymin_type_1>0</ymin_type_1>
|
||||||
|
<ymax_type_1>0</ymax_type_1>
|
||||||
|
<ymin_item_1>0</ymin_item_1>
|
||||||
|
<ymax_item_1>0</ymax_item_1>
|
||||||
|
<graph_items>
|
||||||
|
<graph_item>
|
||||||
|
<sortorder>0</sortorder>
|
||||||
|
<drawtype>5</drawtype>
|
||||||
|
<color>00C800</color>
|
||||||
|
<yaxisside>0</yaxisside>
|
||||||
|
<calc_fnc>2</calc_fnc>
|
||||||
|
<type>0</type>
|
||||||
|
<item>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
<key>nginx.handled[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
</item>
|
||||||
|
</graph_item>
|
||||||
|
<graph_item>
|
||||||
|
<sortorder>1</sortorder>
|
||||||
|
<drawtype>0</drawtype>
|
||||||
|
<color>0000C8</color>
|
||||||
|
<yaxisside>0</yaxisside>
|
||||||
|
<calc_fnc>2</calc_fnc>
|
||||||
|
<type>0</type>
|
||||||
|
<item>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
<key>nginx.accepted[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
</item>
|
||||||
|
</graph_item>
|
||||||
|
<graph_item>
|
||||||
|
<sortorder>2</sortorder>
|
||||||
|
<drawtype>0</drawtype>
|
||||||
|
<color>C80000</color>
|
||||||
|
<yaxisside>0</yaxisside>
|
||||||
|
<calc_fnc>2</calc_fnc>
|
||||||
|
<type>0</type>
|
||||||
|
<item>
|
||||||
|
<host>Template App Nginx</host>
|
||||||
|
<key>nginx.total[{HOST.IP},{$NGINX_PORT}]</key>
|
||||||
|
</item>
|
||||||
|
</graph_item>
|
||||||
|
</graph_items>
|
||||||
|
</graph>
|
||||||
|
</graphs>
|
||||||
|
</zabbix_export>
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information.
|
||||||
|
|
||||||
|
# Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
|
||||||
|
# Key syntax is mysql.status[variable].
|
||||||
|
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'
|
||||||
|
|
||||||
|
# Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
|
||||||
|
# Key syntax is mysql.size[<database>,<table>,<type>].
|
||||||
|
# Database may be a database name or "all". Default is "all".
|
||||||
|
# Table may be a table name or "all". Default is "all".
|
||||||
|
# Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
|
||||||
|
# Database is mandatory if a table is specified. Type may be specified always.
|
||||||
|
# Returns value in bytes.
|
||||||
|
# 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
|
||||||
|
UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name=\"$2\"");" | HOME=/var/lib/zabbix mysql -N'
|
||||||
|
|
||||||
|
UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive
|
||||||
|
UserParameter=mysql.version,mysql -V
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# in nginx config:
|
||||||
|
# location /nginx_status {
|
||||||
|
# # Turn on nginx stats
|
||||||
|
# stub_status on;
|
||||||
|
# # I do not need logs for stats
|
||||||
|
# access_log off;
|
||||||
|
# # Security: Only allow access from IP #
|
||||||
|
# allow $1;
|
||||||
|
# # Send rest of the world to /dev/null #
|
||||||
|
# deny all;
|
||||||
|
# }
|
||||||
|
|
||||||
|
UserParameter=nginx.accepted[*],/etc/zabbix/zabbix_agentd.scripts/nginx-stat.py -h $1 -p $2 -a accepted
|
||||||
|
UserParameter=nginx.active[*],/etc/zabbix/zabbix_agentd.scripts/nginx-stat.py -h $1 -p $2 -a active
|
||||||
|
UserParameter=nginx.handled[*],/etc/zabbix/zabbix_agentd.scripts/nginx-stat.py -h $1 -p $2 -a handled
|
||||||
|
UserParameter=nginx.reading[*],/etc/zabbix/zabbix_agentd.scripts/nginx-stat.py -h $1 -p $2 -a reading
|
||||||
|
UserParameter=nginx.total[*],/etc/zabbix/zabbix_agentd.scripts/nginx-stat.py -h $1 -p $2 -a requests
|
||||||
|
UserParameter=nginx.waiting[*],/etc/zabbix/zabbix_agentd.scripts/nginx-stat.py -h $1 -p $2 -a waiting
|
||||||
|
UserParameter=nginx.writing[*],/etc/zabbix/zabbix_agentd.scripts/nginx-stat.py -h $1 -p $2 -a writing
|
||||||
|
|
||||||
|
UserParameter=nginx.version,nginx -v 2>&1
|
||||||
@@ -3,3 +3,5 @@
|
|||||||
apk add bash bash-doc bash-completion
|
apk add bash bash-doc bash-completion
|
||||||
|
|
||||||
sed -i 's/root:\/bin\/ash/root:\/bin\/bash/g' /etc/passwd
|
sed -i 's/root:\/bin\/ash/root:\/bin\/bash/g' /etc/passwd
|
||||||
|
|
||||||
|
exec bash
|
||||||
|
|||||||
+2
-21
@@ -7,27 +7,8 @@ echo '
|
|||||||
|___/\___/\__|_| |_|_\___/__/
|
|___/\___/\__|_| |_|_\___/__/
|
||||||
'
|
'
|
||||||
#installing better prompt and some goodies
|
#installing better prompt and some goodies
|
||||||
echo "Installing shell prompt for current user $USER "
|
echo "Installing dot files for current user"
|
||||||
sleep 2
|
sleep 2
|
||||||
#
|
|
||||||
# # get the current position
|
|
||||||
# _cwd="$(pwd)"
|
|
||||||
#
|
|
||||||
# # check for assets forlder
|
|
||||||
# _assets="$_cwd/assets"
|
|
||||||
# if [ ! -d "$_assets" ]; then
|
|
||||||
# _assets="$_cwd/../assets"
|
|
||||||
# if [ ! -d "$_assets" ]; then
|
|
||||||
# echo "!! can't find assets directory !!"
|
|
||||||
# exit
|
|
||||||
# fi
|
|
||||||
# fi
|
|
||||||
#
|
|
||||||
# cp "$_assets"/dotfiles/.vimrc /home/"$USER"/
|
|
||||||
# cp -r "$_assets"/dotfiles/.vim /home/"$USER"/
|
|
||||||
#
|
|
||||||
# cp "$_assets"/dotfiles/.inputrc /home/"$USER"/
|
|
||||||
|
|
||||||
|
|
||||||
# get the current position
|
# get the current position
|
||||||
_cwd="$(pwd)"
|
_cwd="$(pwd)"
|
||||||
@@ -39,4 +20,4 @@ source ~/.bashrc
|
|||||||
# return to working directory
|
# return to working directory
|
||||||
cd "$_cwd"
|
cd "$_cwd"
|
||||||
|
|
||||||
echo "Dot files installed for $USER"
|
echo "Dot files installed"
|
||||||
|
|||||||
+17
-122
@@ -59,7 +59,7 @@ echo -e '
|
|||||||
'
|
'
|
||||||
echo -e "Installing PHP 7.0"
|
echo -e "Installing PHP 7.0"
|
||||||
sleep 3
|
sleep 3
|
||||||
apk add php7 php7-fpm php7-pdo_mysql php7-opcache php7-curl php7-mbstring php7-zip php7-xml php7-gd php7-mcrypt php7-imagick
|
apk add php7 php7-fpm php7-pdo_mysql php7-opcache php7-curl php7-mbstring php7-zip php7-xml php7-gd php7-mcrypt php7-imagick php7-phar
|
||||||
|
|
||||||
echo -e "Configuring PHP"
|
echo -e "Configuring PHP"
|
||||||
|
|
||||||
@@ -123,33 +123,30 @@ echo -e "Nginx installed"
|
|||||||
# echo -e "You can access it at yourip/phpmyadmin"
|
# echo -e "You can access it at yourip/phpmyadmin"
|
||||||
|
|
||||||
echo -e '
|
echo -e '
|
||||||
____ ___
|
_ _
|
||||||
/ __ \___ ____/ (_)____
|
_ _ ___ __| (_)___
|
||||||
/ /_/ / _ \/ __ / / ___/
|
| `_/ -_) _` | (_-<
|
||||||
/ _, _/ __/ /_/ / (__ )
|
|_| \___\__,_|_/__/
|
||||||
/_/ |_|\___/\__,_/_/____/
|
|
||||||
'
|
'
|
||||||
echo -e "Installing Redis"
|
echo -e "Installing Redis"
|
||||||
sleep 3
|
sleep 3
|
||||||
apk add redis-server php-redis
|
apk add redis php7-pecl-redis
|
||||||
|
|
||||||
# TODO set maxmemory=2gb
|
# TODO set maxmemory=2gb
|
||||||
# TODO set maxmemory-policy=volatile-lru
|
# TODO set maxmemory-policy=volatile-lru
|
||||||
# TODO comment all save line
|
# TODO comment all save line
|
||||||
|
|
||||||
|
|
||||||
systemctl enable redis-server
|
rc-update add redis
|
||||||
systemctl restart redis-server
|
service redis start
|
||||||
systemctl restart php7.0-fpm
|
service php-fpm7 restart
|
||||||
echo -e "Redis installed"
|
echo -e "Redis installed"
|
||||||
|
|
||||||
echo -e '
|
echo -e '
|
||||||
______
|
__ ___ _ __ _ __ ___ ___ ___ _ _
|
||||||
/ ____/___ ____ ___ ____ ____ ________ _____
|
/ _/ _ \ ` \| `_ \/ _ (_-</ -_) `_|
|
||||||
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
|
\__\___/_|_|_| .__/\___/__/\___|_|
|
||||||
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
|
|_|
|
||||||
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
|
|
||||||
/_/
|
|
||||||
'
|
'
|
||||||
echo -e "Installing Composer"
|
echo -e "Installing Composer"
|
||||||
sleep 3
|
sleep 3
|
||||||
@@ -160,11 +157,10 @@ echo -e "Composer installed"
|
|||||||
|
|
||||||
|
|
||||||
echo -e '
|
echo -e '
|
||||||
____ __
|
_ _
|
||||||
/ __ \_______ _______/ /_
|
__| |_ _ _ _ __| |_
|
||||||
/ / / / ___/ / / / ___/ __ \
|
/ _` | `_| || (_-< ` \
|
||||||
/ /_/ / / / /_/ (__ ) / / /
|
\__,_|_| \_,_/__/_||_|
|
||||||
/_____/_/ \__,_/____/_/ /_/
|
|
||||||
'
|
'
|
||||||
echo -e "Installing Drush and DrupalConsole"
|
echo -e "Installing Drush and DrupalConsole"
|
||||||
sleep 3
|
sleep 3
|
||||||
@@ -173,104 +169,3 @@ chmod +x /usr/local/bin/drupal
|
|||||||
curl https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar -L -o /usr/local/bin/drush
|
curl https://github.com/drush-ops/drush-launcher/releases/download/0.6.0/drush.phar -L -o /usr/local/bin/drush
|
||||||
chmod +x /usr/local/bin/drush
|
chmod +x /usr/local/bin/drush
|
||||||
echo -e "Drush and DrupalConsoleinstalled"
|
echo -e "Drush and DrupalConsoleinstalled"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# TODO supervising
|
|
||||||
# echo -e '
|
|
||||||
# __ ___ _ __ __ __ ___ _
|
|
||||||
# / |/ /__ ___ (_) /_ _/_/ / |/ /_ _____ (_)__
|
|
||||||
# / /|_/ / _ \/ _ \/ / __/ _/_/ / /|_/ / // / _ \/ / _ \
|
|
||||||
# /_/ /_/\___/_//_/_/\__/ /_/ /_/ /_/\_,_/_//_/_/_//_/
|
|
||||||
#'
|
|
||||||
# echo -e "Installing Munin"
|
|
||||||
# sleep 3
|
|
||||||
# # https://www.howtoforge.com/tutorial/server-monitoring-with-munin-and-monit-on-debian/
|
|
||||||
# apt-get --yes --force-yes install munin munin-node munin-plugins-extra
|
|
||||||
# # Configure Munin
|
|
||||||
# # enable plugins
|
|
||||||
# ln -s /usr/share/munin/plugins/mysql_ /etc/munin/plugins/mysql_
|
|
||||||
# ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes
|
|
||||||
# ln -s /usr/share/munin/plugins/mysql_innodb /etc/munin/plugins/mysql_innodb
|
|
||||||
# ln -s /usr/share/munin/plugins/mysql_isam_space_ /etc/munin/plugins/mysql_isam_space_
|
|
||||||
# ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries
|
|
||||||
# ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries
|
|
||||||
# ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads
|
|
||||||
#
|
|
||||||
# ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/
|
|
||||||
# ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/
|
|
||||||
# ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/
|
|
||||||
#
|
|
||||||
# # ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/
|
|
||||||
#
|
|
||||||
# # dbdir, htmldir, logdir, rundir, and tmpldir
|
|
||||||
# sed -i 's/^#dbdir/dbdir/' /etc/munin/munin.conf
|
|
||||||
# sed -i 's/^#htmldir/htmldir/' /etc/munin/munin.conf
|
|
||||||
# sed -i 's/^#logdir/logdir/' /etc/munin/munin.conf
|
|
||||||
# sed -i 's/^#rundir/rundir/' /etc/munin/munin.conf
|
|
||||||
# sed -i 's/^#tmpldir/tmpldir/' /etc/munin/munin.conf
|
|
||||||
#
|
|
||||||
# sed -i "s/^\[localhost.localdomain\]/[${HOSTNAME}]/" /etc/munin/munin.conf
|
|
||||||
#
|
|
||||||
# # ln -s /etc/munin/apache24.conf /etc/apache2/conf-enabled/munin.conf
|
|
||||||
# sed -i 's/Require local/Require all granted\nOptions FollowSymLinks SymLinksIfOwnerMatch/g' /etc/munin/apache24.conf
|
|
||||||
# htpasswd -c /etc/munin/munin-htpasswd admin
|
|
||||||
# sed -i 's/Require all granted/AuthUserFile \/etc\/munin\/munin-htpasswd\nAuthName "Munin"\nAuthType Basic\nRequire valid-user/g' /etc/munin/apache24.conf
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# service apache2 restart
|
|
||||||
# service munin-node restart
|
|
||||||
# echo -e "Munin installed"
|
|
||||||
#
|
|
||||||
# echo -e "Installing Monit"
|
|
||||||
# sleep 3
|
|
||||||
# # https://www.howtoforge.com/tutorial/server-monitoring-with-munin-and-monit-on-debian/2/
|
|
||||||
# apt-get --yes --force-yes install monit
|
|
||||||
# # TODO setup monit rc
|
|
||||||
# cat "$_assets"/monitrc > /etc/monit/monitrc
|
|
||||||
#
|
|
||||||
# # TODO setup webaccess
|
|
||||||
# passok=0
|
|
||||||
# while [ "$passok" = "0" ]
|
|
||||||
# do
|
|
||||||
# echo -n "Write web access password to monit"
|
|
||||||
# read passwda
|
|
||||||
# echo -n "ReWrite web access password to monit"
|
|
||||||
# read passwdb
|
|
||||||
# if [ "$passwda" = "$passwdb" ]; then
|
|
||||||
# sed -i 's/PASSWD_TO_REPLACE/$passwda/g' /etc/monit/monitrc
|
|
||||||
# passok=1
|
|
||||||
# else
|
|
||||||
# echo -e "pass words don't match, please try again"
|
|
||||||
# fi
|
|
||||||
# done
|
|
||||||
#
|
|
||||||
# # TODO setup mail settings
|
|
||||||
# sed -i "s/server1\.example\.com/$HOSTNAME/g" /etc/monit/monitrc
|
|
||||||
#
|
|
||||||
# mkdir /var/www/html/monit
|
|
||||||
# echo -e "hello" > /var/www/html/monit/token
|
|
||||||
#
|
|
||||||
# service monit start
|
|
||||||
#
|
|
||||||
# echo -e "Monit installed"
|
|
||||||
|
|
||||||
|
|
||||||
# echo -e '
|
|
||||||
# ___ __ __
|
|
||||||
# / |_ _______/ /_____ _/ /_
|
|
||||||
# / /| | | /| / / ___/ __/ __ `/ __/
|
|
||||||
# / ___ | |/ |/ (__ ) /_/ /_/ / /_
|
|
||||||
# /_/ |_|__/|__/____/\__/\__,_/\__/
|
|
||||||
#'
|
|
||||||
# echo -e "Installing Awstat"
|
|
||||||
# sleep 3
|
|
||||||
# apt-get --yes --force-yes install awstats
|
|
||||||
# # Configure AWStats
|
|
||||||
# temp=`grep -i sitedomain /etc/awstats/awstats.conf.local | wc -l`
|
|
||||||
# if [ $temp -lt 1 ]; then
|
|
||||||
# echo SiteDomain="$_domain" >> /etc/awstats/awstats.conf.local
|
|
||||||
# fi
|
|
||||||
# # Disable Awstats from executing every 10 minutes. Put a hash in front of any line.
|
|
||||||
# sed -i 's/^[^#]/#&/' /etc/cron.d/awstats
|
|
||||||
# echo -e "Awstat installed"
|
|
||||||
|
|||||||
+4
-4
@@ -15,12 +15,12 @@ echo '@edge http://dl-cdn.alpinelinux.org/alpine/edge/main
|
|||||||
@edgecommunity http://dl-cdn.alpinelinux.org/alpine/edge/community
|
@edgecommunity http://dl-cdn.alpinelinux.org/alpine/edge/community
|
||||||
@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
|
@testing http://dl-cdn.alpinelinux.org/alpine/edge/testing' >> /etc/apk/repositories
|
||||||
|
|
||||||
apk add vim curl
|
apk update
|
||||||
|
|
||||||
|
apk add procps vim curl tmux etckeeper htop lynx unzip # needrestart
|
||||||
|
|
||||||
# sed -i "s/^# en_GB.UTF-8/en_GB.UTF-8/g" /etc/locale.gen
|
# sed -i "s/^# en_GB.UTF-8/en_GB.UTF-8/g" /etc/locale.gen
|
||||||
# locale-gen
|
# locale-gen
|
||||||
# apt-get --yes --force-yes install ntp
|
|
||||||
# dpkg-reconfigure tzdata
|
|
||||||
apk add tmux etckeeper htop lynx unzip # needrestart
|
|
||||||
|
|
||||||
apk add tzdata
|
apk add tzdata
|
||||||
TIMEZONE="Europe/Paris"
|
TIMEZONE="Europe/Paris"
|
||||||
|
|||||||
@@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
echo -e '
|
||||||
|
_ _ _ _ ___ _ _ _
|
||||||
|
| | | |_ _| |__ __ _ __| |___ _ _ __ / __| | (_)___ _ _| |_
|
||||||
|
| |_| | _| _ \/ _` / _| / / || | _ \ | (__| |__| / -_) \ _|
|
||||||
|
\___/|_| |_.__/\__,_\__|_\_\\_,_| .__/ \___|____|_\___|_||_\__|
|
||||||
|
|_|
|
||||||
|
'
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "Please run as root"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# get the current position
|
||||||
|
_cwd="$(pwd)"
|
||||||
|
# check for assets forlder
|
||||||
|
_assets="$_cwd/assets"
|
||||||
|
if [ ! -d "$_assets" ]; then
|
||||||
|
_assets="$_cwd/../assets"
|
||||||
|
if [ ! -d "$_assets" ]; then
|
||||||
|
echo "!! can't find assets directory !!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# install urbackup client
|
||||||
|
# https://www.urbackup.org/client_debian_ubuntu_install.html
|
||||||
|
# https://blog.stephane-huc.net/systeme/debian/urbackup_client_gui
|
||||||
|
# https://urbackup.atlassian.net/wiki/spaces/US/pages/9142274/Headless+Linux+client+setup
|
||||||
|
|
||||||
|
# Install the dependencies UrBackup needs
|
||||||
|
# apt install build-essential "g++" "libcrypto++-dev" libz-dev -y
|
||||||
|
apk add linux-headers "g++" zlib zlid-dev "crypto++@testing" "crypto++dev@testing"
|
||||||
|
|
||||||
|
ln -s /usr/lib/libcryptopp.so /usr/lib/libcryptopp.so.5.6
|
||||||
|
|
||||||
|
# Download the UrBackup client source files and extract them
|
||||||
|
wget -P /tmp/ https://hndl.urbackup.org/Client/latest/urbackup-client-2.3.4.0.tar.gz
|
||||||
|
cd /tmp
|
||||||
|
tar xzf /tmp/urbackup-client-2.3.4.0.tar.gz
|
||||||
|
|
||||||
|
# Build the UrBackup client and install it
|
||||||
|
cd /tmp/urbackup-client-2.3.4.0
|
||||||
|
./configure --enable-headless
|
||||||
|
make -j4
|
||||||
|
make install
|
||||||
|
|
||||||
|
# Make sure that the UrBackup client backend runs correctly
|
||||||
|
# urbackupclientbackend -v info
|
||||||
|
|
||||||
|
# configure
|
||||||
|
echo -n "Please provide the urbackup-server's ip : "
|
||||||
|
read _ip
|
||||||
|
echo -n "Please provide the internet_authkey of server : "
|
||||||
|
read _authkey
|
||||||
|
echo -n "Please provide the computer name of this client : "
|
||||||
|
read _computername
|
||||||
|
|
||||||
|
echo "internet_server=$_ip
|
||||||
|
internet_server_port=55415
|
||||||
|
internet_authkey=$_authkey
|
||||||
|
internet_mode_enabled=true
|
||||||
|
internet_image_backups_def=false
|
||||||
|
default_dirs_def=/etc;var/www;/var/backups/mysql
|
||||||
|
startup_backup_delay_def=3
|
||||||
|
computername=$_computername" > /usr/local/var/urbackup/data/settings.cfg
|
||||||
|
|
||||||
|
# firewall
|
||||||
|
ufw allow from "$_ip" to any port 35621
|
||||||
|
ufw allow from "$_ip" to any port 35622
|
||||||
|
ufw allow from "$_ip" to any port 35623
|
||||||
|
|
||||||
|
# install and enable openrc service
|
||||||
|
cp "$_assets"/urbackup.service /etc/init.d/urbackup
|
||||||
|
chmod a+x /etc/init.d/urbackup
|
||||||
|
|
||||||
|
rc-update add urbackup
|
||||||
|
service urbackup start
|
||||||
Executable
+94
@@ -0,0 +1,94 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
|
echo -e '
|
||||||
|
_ _ _
|
||||||
|
_____ _| |__| |__(_)__
|
||||||
|
|_ / _` | `_ \ `_ \ / _|
|
||||||
|
/__\__,_|_.__/_.__/_\__|
|
||||||
|
'
|
||||||
|
|
||||||
|
. bin/checkroot.sh
|
||||||
|
|
||||||
|
# get the current position
|
||||||
|
_cwd="$(pwd)"
|
||||||
|
# check for assets forlder
|
||||||
|
_assets="$_cwd/assets"
|
||||||
|
if [ ! -d "$_assets" ]; then
|
||||||
|
_assets="$_cwd/../assets"
|
||||||
|
if [ ! -d "$_assets" ]; then
|
||||||
|
echo "!! can't find assets directory !!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
apk add zabbix-agent
|
||||||
|
|
||||||
|
# configure
|
||||||
|
echo -n "Please provide the current server's public ip : "
|
||||||
|
read _cur_ip
|
||||||
|
echo -n "Please provide the zabbix-server's ip : "
|
||||||
|
read _ip
|
||||||
|
echo -n "Please provide the hostname of this agent : "
|
||||||
|
read _host_name
|
||||||
|
echo -n "Please provide the mysql root password : "
|
||||||
|
read _root_mysql_passwd
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# configure zabbix agent
|
||||||
|
sed -i "s#Server=127.0.0.1#Server=$_ip#g" /etc/zabbix/zabbix_agentd.conf
|
||||||
|
sed -i "s#ServerActive=127.0.0.1#ServerActive=$_ip#g" /etc/zabbix/zabbix_agentd.conf
|
||||||
|
sed -i "s#Hostname=Zabbix server#Hostname=$_host_name#g" /etc/zabbix/zabbix_agentd.conf
|
||||||
|
|
||||||
|
_agent_conf_d="/etc/zabbix/zabbix_agentd.d"
|
||||||
|
mkdir $_agent_conf_d
|
||||||
|
sed -i "s|#\ Include=$|Include= $_agent_conf_d|g" /etc/zabbix/zabbix_agentd.conf
|
||||||
|
|
||||||
|
# apk
|
||||||
|
# check for alpine security updates
|
||||||
|
|
||||||
|
# # MYSQL
|
||||||
|
# # https://serverfault.com/questions/737018/zabbix-user-parameter-mysql-status-setting-home
|
||||||
|
# # create zabbix user home
|
||||||
|
# mkdir /var/lib/zabbix
|
||||||
|
# # generate random password for zabbix mysql user
|
||||||
|
# _passwd="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)"
|
||||||
|
# # add mysql credentials to zabbix home
|
||||||
|
# printf "[client]\n
|
||||||
|
# user=zabbix\n
|
||||||
|
# password=$_passwd" > /var/lib/zabbix/.my.cnf
|
||||||
|
# # create zabbix mysql user
|
||||||
|
# mysql -uroot -p"$_root_mysql_passwd" -e "CREATE USER 'zabbix' IDENTIFIED BY '$_passwd';"
|
||||||
|
# mysql -uroot -p"$_root_mysql_passwd" -e "GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY '$_passwd';"
|
||||||
|
# # add zabbix-agent parameter
|
||||||
|
# cp "$_assets"/zabbix/userparameter_mysql.conf "$_agent_conf_d"/
|
||||||
|
|
||||||
|
# NGINX
|
||||||
|
# https://github.com/sfuerte/zbx-nginx
|
||||||
|
# nginxconf already included in default.nginxconf asset
|
||||||
|
sed -i "s/# allow CURRENT-SERVER-IP/allow $_cur_ip/g" /etc/nginx/sites-available/default
|
||||||
|
cp "$_assets"/zabbix/userparameter_nginx.conf "$_agent_conf_d"/
|
||||||
|
mkdir /etc/zabbix/zabbix_agentd.scripts
|
||||||
|
cp "$_assets"/zabbix/scripts/nginx-stat.py /etc/zabbix/zabbix_agentd.scripts/
|
||||||
|
chmod +x /etc/zabbix/zabbix_agentd.scripts/nginx-stat.py
|
||||||
|
|
||||||
|
echo -n "This is box is a proxmox CT? [Y|n] "
|
||||||
|
read yn
|
||||||
|
yn=${yn:-y}
|
||||||
|
if [ "$yn" = "Y" ] || [ "$yn" = "y" ]; then
|
||||||
|
cp "$_assets"/zabbix/proxmox-ct.conf "$_agent_conf_d"/
|
||||||
|
fi
|
||||||
|
|
||||||
|
# allow comm. port with zabbix-server
|
||||||
|
ufw allow from "$_ip" to any port 22
|
||||||
|
ufw allow from "$_ip" to any port 10050
|
||||||
|
# ufw allow from "$_ip" to any port 10051
|
||||||
|
|
||||||
|
rc-update add zabbix-agent
|
||||||
|
service zabbix-agent restart
|
||||||
|
|
||||||
|
echo -e "Zabbix-agent installed and configured, please add the host $_host_name in your zabbix-server"
|
||||||
|
echo -e "And import requested templates in assets/zabbix/templates/"
|
||||||
|
# echo -e "zabbix user mysql password is $_passwd"
|
||||||
+5
-2
@@ -23,13 +23,16 @@ fi
|
|||||||
_cwd="$(pwd)"
|
_cwd="$(pwd)"
|
||||||
|
|
||||||
. bin/upgrade
|
. bin/upgrade
|
||||||
. bin/dotfiles.sh
|
|
||||||
. bin/bash
|
. bin/bash
|
||||||
|
. bin/misc.sh
|
||||||
|
. bin/dotfiles.sh
|
||||||
. bin/user.sh
|
. bin/user.sh
|
||||||
. bin/ssh.sh
|
. bin/ssh.sh
|
||||||
. bin/misc.sh
|
|
||||||
. bin/ufw.sh
|
. bin/ufw.sh
|
||||||
. bin/fail2ban.sh
|
. bin/fail2ban.sh
|
||||||
. bin/knockd.sh
|
. bin/knockd.sh
|
||||||
# . bin/email.sh
|
# . bin/email.sh
|
||||||
. bin/lemp.sh
|
. bin/lemp.sh
|
||||||
|
# . bin/vhost.sh
|
||||||
|
. bin/zabbix.sh
|
||||||
|
# . bin/urbackup.sh
|
||||||
|
|||||||
@@ -1,22 +1,26 @@
|
|||||||
# Install web server and secure it on alpine linux
|
# Install web server and secure it on alpine linux
|
||||||
|
|
||||||
- [x] upgrade
|
- [x] upgrade
|
||||||
- [x] adduser
|
- [x] bash
|
||||||
- [x] misc
|
- [x] misc
|
||||||
- [x] Ufw (to be replaced by awall)
|
- [x] dotfiles
|
||||||
|
- [x] user
|
||||||
|
- [x] secure openssh
|
||||||
|
- [x] Ufw (may be eventualy replaced by awall ?)
|
||||||
- [x] Fail2ban
|
- [x] Fail2ban
|
||||||
- [ ] Proftpd
|
- [x] Knockd
|
||||||
- [ ] Knockd
|
- [ ] Mariadb (bug https://bugs.alpinelinux.org/issues/9046)
|
||||||
- [ ] Mariadb
|
- [x] php7-fpm
|
||||||
- [ ] php7-fpm
|
- [x] Nginx
|
||||||
- [ ] Nginx
|
- [x] drush
|
||||||
|
- [x] composer
|
||||||
- [ ] letsencrypt
|
- [ ] letsencrypt
|
||||||
- [ ] vhosts
|
- [ ] vhosts
|
||||||
- [ ] redis
|
- [x] redis
|
||||||
|
- [x] zabbix-agent
|
||||||
|
- [x] urbackup-client
|
||||||
- [ ] git barre repos
|
- [ ] git barre repos
|
||||||
- [ ] zabbix-agent
|
- [ ] Proftpd
|
||||||
- [ ] urbackup-client
|
|
||||||
- [ ] dotfiles and more
|
|
||||||
|
|
||||||
## how to use it
|
## how to use it
|
||||||
on a fresh install
|
on a fresh install
|
||||||
@@ -36,7 +40,6 @@ git clone https://figureslibres.io/gogs/bachir/alpine-web-server.git
|
|||||||
```
|
```
|
||||||
su
|
su
|
||||||
cd alpine-web-server
|
cd alpine-web-server
|
||||||
chmod a+x install.sh
|
|
||||||
. install.sh
|
. install.sh
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -44,5 +47,3 @@ chmod a+x install.sh
|
|||||||
```
|
```
|
||||||
. bin/misc.sh
|
. bin/misc.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
## ref
|
|
||||||
|
|||||||
Reference in New Issue
Block a user