master
root 2 years ago
parent 55724b9eb6
commit 23dde233df
  1. 12
      zabbix-ansible/hosts
  2. 2
      zabbix-ansible/zabbix-agentd/files/zabbix_agentd.d/redis.conf
  3. 2
      zabbix-ansible/zabbix-agentd/templates/zabbix_agentd.conf.j2
  4. 8
      zabbix-ansible/zabbix-server/tasks/main.yml
  5. 39
      zabbix-ansible/zabbix-server/templates/dingding.py
  6. 60
      zabbix-ansible/zabbix-server/templates/wechat3.py
  7. 9
      zabbix-ansible/zabbix-server/vars/main.yml
  8. 87
      zbx_export_templates.xml

@ -1,22 +1,22 @@
[server]
192.168.96.234
192.168.96.168
[database]
192.168.96.234
192.168.96.168
[zabbix-server:children]
server
database
[zabbix-server:vars]
dbHost=192.168.96.234
dbHost=192.168.96.168
dbUser=remote
dbPassword=123456
dbName=zabbix
[agent]
192.168.96.234 Hostname=zabbix-agent
192.168.96.235 Hostname=zabbix-agent
192.168.96.168 Hostname=zabbix-agent
192.168.96.169 Hostname=zabbix-agent
[agent:vars]
serverHost=192.168.96.234
serverHost=192.168.96.168

@ -0,0 +1,2 @@
UserParameter=redischeck.mode[*],redis-cli info | awk -F ':' '/^$1/{print $$2}'

@ -7,6 +7,8 @@ Hostname={{ Hostname }}
ListenPort=10050
ListenIP=0.0.0.0
StartAgents=3
EnableRemoteCommands=1
LogRemoteCommands=1
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0

@ -10,7 +10,7 @@
yum: name=zabbix-agent,zabbix-get,zabbix-sender,zabbix-server-mysql state=present
- name: input zabbix-server {{ zabbixServerLevel }} data
shell: zcat /usr/share/doc/zabbix-server-mysql-{{ zabbixServerLevel }}*/create.sql.gz | mysql -u{{ dbUser }} -p{{ dbPassword }} -h {{ database }} {{ dbName }}
shell: mysql -u{{ dbUser }} -p{{ dbPassword }} -h {{ database }} -e "drop database if exists {{ dbName }};create database if not exists {{ dbName }} character set utf8 collate utf8_bin" && zcat /usr/share/doc/zabbix-server-mysql-{{ zabbixServerLevel }}*/create.sql.gz | mysql -u{{ dbUser }} -p{{ dbPassword }} -h {{ database }} {{ dbName }}
- name: copy zabbix-server {{ zabbixServerLevel }} config file
template: src=zabbix_server.conf.j2 dest=/etc/zabbix/zabbix_server.conf backup=yes
@ -32,6 +32,12 @@
- name: config
shell: sed -i.bak 's/listen.acl_users.*/listen\.acl_users=apache,nginx/;s@; php_value\[date\.timezone\].*@php_value[date.timezone]=Asia/Shanghai@' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
- name: copy script
template: src={{ item }} dest=/usr/lib/zabbix/alertscripts
with_items:
- dingding.py
- wechat3.py
- name: service start
service: name={{ item }} state=restarted enabled=yes
with_items:

@ -0,0 +1,39 @@
#!/usr/bin/python3
#-*-coding: utf-8-*-
# by QianFeng.newrain
#
'''
Welcome QianFeng cloud computing
'''
import requests
import json
import sys
import time,hmac,base64,hashlib,urllib.parse
headers = {'Content-Type': 'application/json;charset=utf-8'}
# 需要修改,钉钉群助手中获取
timestamp = str(round(time.time() * 1000))
secret = {{ secret }}
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
api_url = f"https://oapi.dingtalk.com/robot/send?access_token=abdec0db67d1ca355b547711f822e0bb60929295cd3c42c1e4c89c7f24b4872e&timestamp={timestamp}&sign={sign}"
def msg(text):
json_text= {
"msgtype": "text",
"at": {
"atMobiles": [
"all"
],
"isAtAll": False
},
"text": {
"content": text
}
}
print(requests.post(api_url,json.dumps(json_text),headers=headers).content.decode())
msg('\n'+sys.argv[1])

@ -0,0 +1,60 @@
#!/usr/bin/python3
#-*-coding: utf-8-*-
# by QianFeng.newrain
#
'''
Welcome QianFeng cloud computing
'''
import json
import sys
import time
import requests
# 此为企业的ID号
CorpID = {{ corpid }}
# 应用的ID
Agentid = {{ agentid }}
# 认证信息,企业ID+认证信息可获取tokent,获取之后向此tokent发送内容
Secret = {{ secret }}
localtime = time.strftime("[%H:%M:%S]", time.localtime())
class Tencent(object):
def __init__(self,user,title, msg):
# 格式化输出内容:标题+内容
self.MSG = f'{title}\n{msg}\n{localtime}'
self.User = user
self.url = 'https://qyapi.weixin.qq.com'
self.send_msg = json.dumps({
"touser": self.User,
"msgtype": 'text',
"agentid": Agentid,
"text": {'content': self.MSG},
"safe": 0
})
# 获取tokent
def get_token(self):
token_url = '%s/cgi-bin/gettoken?corpid=%s&corpsecret=%s' % (self.url, CorpID, Secret)
r = requests.get(token_url)
r = r.json()
token = r['access_token']
return token
# 发送信息
def send_message(self):
send_url = '%s/cgi-bin/message/send?access_token=%s' % (self.url,self.get_token())
respone = requests.post(url=send_url, data=self.send_msg)
respone = respone.json()
x = respone['errcode']
if x == 0:
print ('Succesfully')
else:
print ('Failed')
if __name__ == '__main__':
# 创建对象
send_obj = Tencent(sys.argv[1],str(sys.argv[2]), str(sys.argv[3]))
# 调用发送函数
send_obj.send_message()

@ -2,3 +2,12 @@
# vars file for zabbix-server
zabbixServerLevel: 5.0
database: "{{ dbHost }}"
# 微信报警脚本配置
corpid: 'wwa1dc8236066bab50'
agentid: 1000005
secret: 'CRzsnYigkQy_9qoHErXG94am81AUuXabY0A8-N7LW_4'
# 钉钉报警脚本配置
secret: 'SECf3aa0ec68151d6a0599d8d9db4fa40afa5341c358d53af717eb924f0fa29ee5f'

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
<version>5.0</version>
<date>2021-06-25T15:42:45Z</date>
<date>2023-02-01T15:30:14Z</date>
<groups>
<group>
<name>Zabbix servers</name>
@ -23,6 +23,9 @@
<application>
<name>nginx monitor</name>
</application>
<application>
<name>redis monitor</name>
</application>
<application>
<name>system monitor</name>
</application>
@ -249,6 +252,88 @@
</application>
</applications>
</item>
<item>
<name>redis_version</name>
<key>redischeck.mode[redis_version]</key>
<delay>1h</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>redis monitor</name>
</application>
</applications>
</item>
<item>
<name>redis_role</name>
<key>redischeck.mode[role]</key>
<delay>5m</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>redis monitor</name>
</application>
</applications>
</item>
<item>
<name>redis_total_system_memory_human</name>
<key>redischeck.mode[total_system_memory_human]</key>
<delay>5m</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>redis monitor</name>
</application>
</applications>
</item>
<item>
<name>redis_used_cpu_sys</name>
<key>redischeck.mode[used_cpu_sys:]</key>
<delay>5m</delay>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>redis monitor</name>
</application>
</applications>
</item>
<item>
<name>redis_used_cpu_user</name>
<key>redischeck.mode[used_cpu_user:]</key>
<delay>5m</delay>
<value_type>FLOAT</value_type>
<applications>
<application>
<name>redis monitor</name>
</application>
</applications>
</item>
<item>
<name>redis_used_memory_human</name>
<key>redischeck.mode[used_memory_human]</key>
<delay>5m</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>redis monitor</name>
</application>
</applications>
</item>
<item>
<name>redis_used_memory_rss_human</name>
<key>redischeck.mode[used_memory_rss_human]</key>
<delay>5m</delay>
<trends>0</trends>
<value_type>TEXT</value_type>
<applications>
<application>
<name>redis monitor</name>
</application>
</applications>
</item>
<item>
<name>system port connect 22</name>
<key>systemcheck.connect[22]</key>

Loading…
Cancel
Save