docker搭建zabbix監控
阿新 • • 發佈:2018-05-29
zabbix docker1、創建目錄
[root@localhost script]# mkdir /usr/local/zabbix/etc/script r = os.path.basename(container.strip())
container_name += [{‘{#CONTAINERNAME}‘:r}]
print json.dumps({‘data‘:container_name},sort_keys=True,indent=4,separators=(‘,‘,‘:‘))
[root@localhost script]# mkdir /usr/local/zabbix/etc/script
2、編輯容器發現腳本
[root@localhost script]# vim docker_discovery.py
#!/usr/bin/env python
import os
import simplejson as json
t=os.popen("""sudo docker ps |grep -v ‘CONTAINER ID‘|awk {‘print $NF‘} """)
container_name = []
for container in t.readlines():
container_name += [{‘{#CONTAINERNAME}‘:r}]
print json.dumps({‘data‘:container_name},sort_keys=True,indent=4,separators=(‘,‘,‘:‘))
3、安裝環境並測試自動發現
pip install docker
pip install simplejson
chmod 757 docker_discovery.py
chown zabbix:zabbix /usr/local/zabbix/etc/script -R
賦予zabbix權限,編輯/etc/sudoers,添加如下內容 zabbix ALL=(root) NOPASSWD:/usr/bin/docker,/usr/bin/python,/usr/local/zabbix/etc/script/docker_discovery.py 配置文件添加配置並重啟: vim /usr/local/zabbix/etc/zabbix_agentd.conf UserParameter=docker_discovery,sudo /usr/bin/python /usr/local/zabbix/etc/script/docker_discovery.py 測試: zabbix_get -s 192.168.199.133 -k docker_discovery
4、添加容器監控測試
[root@localhost script]# vim docker_monitor.py
#!/usr/bin/env python
import docker
import sys
import subprocess
import os
def check_container_stats(container_name,collect_item):
#docker_client = docker_client.containers.get(container_name)
container_collect=docker_client.containers.get(container_name).stats(stream=True)
old_result=eval(container_collect.next())
new_result=eval(container_collect.next())
container_collect.close()
if collect_item == ‘cpu_total_usage‘:
result=new_result[‘cpu_stats‘][‘cpu_usage‘][‘total_usage‘] - old_result[‘cpu_stats‘][‘cpu_usage‘][‘total_usage‘]
elif collect_item == ‘cpu_system_usage‘:
result=new_result[‘cpu_stats‘][‘system_cpu_usage‘] - old_result[‘cpu_stats‘][‘system_cpu_usage‘]
elif collect_item == ‘cpu_percent‘:
cpu_total_usage=new_result[‘cpu_stats‘][‘cpu_usage‘][‘total_usage‘] - old_result[‘cpu_stats‘][‘cpu_usage‘][‘total_usage‘]
cpu_system_uasge=new_result[‘cpu_stats‘][‘system_cpu_usage‘] - old_result[‘cpu_stats‘][‘system_cpu_usage‘]
cpu_num=len(old_result[‘cpu_stats‘][‘cpu_usage‘][‘percpu_usage‘])
result=round((float(cpu_total_usage)/float(cpu_system_uasge))*cpu_num*100.0,2)
elif collect_item == ‘mem_usage‘:
result=new_result[‘memory_stats‘][‘usage‘]
elif collect_item == ‘mem_limit‘:
result=new_result[‘memory_stats‘][‘limit‘]
elif collect_item == ‘network_rx_bytes‘:
result=new_result[‘networks‘][‘eth0‘][‘rx_bytes‘]
elif collect_item == ‘network_tx_bytes‘:
result=new_result[‘networks‘][‘eth0‘][‘tx_bytes‘]
elif collect_item == ‘mem_percent‘:
mem_usage=new_result[‘memory_stats‘][‘usage‘]
mem_limit=new_result[‘memory_stats‘][‘limit‘]
result=round(float(mem_usage)/float(mem_limit)*100.0,2)
return result
if __name__ == "__main__":
docker_client = docker.DockerClient(base_url=‘unix://var/run/docker.sock‘, version=‘1.27‘)
container_name=sys.argv[1]
collect_item=sys.argv[2]
print check_container_stats(container_name,collect_item)
[root@localhost script]# chmod 757 docker_monitor.py
編輯配置文件並重啟:vim /usr/local/zabbix/etc/zabbix_agentd.conf
UserParameter=docker_status[*],sudo /usr/bin/python /usr/local/zabbix/etc/script/docker_monitor.py $1 $2
測試:zabbix_get -s 192.168.199.133 -k docker_status[mysql-sonar,cpu_total_usage]
5、web端制作模板
5.1、配置 -》模板 -》創建模板 (cpu_percent mem_percent mem_usage mem_limit)
Template name: Template Docker Auto Discovery
5.2、點擊創建
5.3、找到創建的模板進去:點擊自動發現
自動發現規則:
Name:collect docker container use resource
Type:Zabbix agent
Key:docker_discovery
過濾器:
{#CONTAINERNAME}
5.4、創建監控項原型
Name:container:{#CONTAINERNAME}:cpu_percent
Type:Zabbix agent
Key:docker_status[{#CONTAINERNAME},cpu_percent]
Type:Numeric (float)
Units:%
Name:container:{#CONTAINERNAME}:mem_percent
Type:Zabbix agent
Key:docker_status[{#CONTAINERNAME},mem_percent]
Type:Numeric (float)
Units:%
Name:container:{#CONTAINERNAME}:mem_usage
Type:Zabbix agent
Key:docker_status[{#CONTAINERNAME},mem_usage]
Type:數字(無正負)
Units:空
Name:container:{#CONTAINERNAME}:mem_limit
Type:Zabbix agent
Key:docker_status[{#CONTAINERNAME},mem_limit]
Type:數字(無正負)
Units:空
5.5、添加觸發器
5.5、添加圖形原型
Name:container:{#CONTAINERNAME}:cpu和內存使用率
監控項:
6、安裝zabbix客戶端
這裏采用編譯安裝:
添加用戶
#groupadd zabbix
#useradd -g zabbix -m zabbix
#./configure --prefix=/usr/local/zabbix --enable-agent
#make install
#vi /usr/local/zabbix/etc/zabbix_agentd.conf
Server= ip.ip.ip.ip #服務端ip地址
ServerActive= ip.ip.ip.ip #服務端ip地址
Hostname=client1 #必須與創建主機時的hostname一致
#cp zabbix-3.0.4/misc/init.d/tru64/zabbix_agentd /etc/init.d/
#chmod +x /etc/init.d/zabbix_ agentd
#ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
#ln -s /usr/local/zabbix/bin/* /usr/local/bin/
#vi /etc/rc.d/init.d/zabbix_ agentd
#在第二行添加如下內容
#chkconfig: 2345 10 90
#description: zabbix agent
保存後退出文件
#chkconfig --add zabbix_agentd
#chkconfig zabbix_agentd on
#service restart zabbix_ agentd
docker搭建zabbix監控